확률적 경사 하강법

확률적 경사 하강법

정의

대상 함수 $Q$ 와 러닝 레이트 $\alpha > 0$, 배치사이즈 $m$ 과 $i$ 번째 데이터에 대해 $$ \omega_{n+1} := \omega_{n} - \alpha {{ 1 } \over { n }} \sum_{i=1}^{m} \nabla Q_{i} ( \omega_{n} ) $$ 를 확률적 경사 하강법이라 한다.

설명

머신러닝

확률적 경사 하강법은 데이터를 다루는만큼 필연적으로 머신러닝과 깊은 관계를 가지고 있을 수밖에 없다. 몇몇 단어가 익숙하지 않더라도 일단 예시를 통해 이해해보는 게 좋다:

$x_{1}$ 와 $x_{2}$ 가 주어졌을 때 $y$ 를 예측하는 문제가 있다고 하자. 짐작되는 모델은 선형결합 $y = ax_{1} + bx_{2}$ 이다. 우리의 데이터셋은 약 30조개정도의 관측치를 포함할 정도로 큰데, 이를 처리할 컴퓨터의 사양이 열악해 문제를 조금씩 나눠서 푼다고 해보자. $$ \begin{matrix} y & x_{1} & x_{2} \\ 5.2 & 2.0 & 0.9 \\ 2.1 & 1.2 & 0.0 \\ 9.0 & 3.8 & 1.3 \\ 6.7 & 3.7 & -0.5 \end{matrix} $$ 가령 위와 같이 $4$ 개의 데이터로 나눠서 처리하겠다면 배치사이즈는 $m=4$ 가 된다. 이는 어디까지나 예시일 뿐이므로 문제는 굉장히 간단하고, 대강 눈으로 보아도 $a \approx 2, b \approx 1$ 가 정답임을 알 수는 있다. 전형적인 회귀분석 문제이므로 그냥 최소제곱법으로 풀어도 되지만 이해를 돕기 위해 굳이 최적화 기법으로 풀 생각을 해보자.

최적화 기법에는 우선 대상 함수가 주어져야한다. 여기서 대상 함수 $Q$ 는 다음과 같이 정의할 수 있고, 우리의 목표는 대상 함수가 최소가 되도록 하는 $\omega = (a, b)$ 를 구하는 것이다. $$ Q (a,b) := \left( ax_{1} + bx_{2} - y \right)^2 $$ 여기서 우리가 관심을 갖는 변수가 $a,b$ 라는 것을 다시금 상기하도록 하자. 주어진 데이터에 따라 $a,b$ 를 구한다는 것은 다음과 같이 $i=1,\cdots , m$ 번째 데이터에 대한 네 개의 함수를 동시에 생각하는 것과 같다. $$ Q_{1} (a,b) := \left( 2.0a + 0.9b - 5.2 \right)^2 \\ Q_{2} (a,b) := \left( 1.2a + 0.0b - 2.1 \right)^2 \\ Q_{3} (a,b) := \left( 3.8a + 1.3b - 9.0 \right)^2 \\ Q_{4} (a,b) := \left( 3.7a - 0.5b - 6.7 \right)^2 $$ 이제 ‘확률적’ 경사 하강법이라는 이름의 모티브가 나왔다. 확률론적인 개념이 없는데도 이것을 확률적 경사 하강법이라고 부르는 이유는 보통 이렇게 뽑히는 데이터가 랜덤하기 때문이다. 이에 대한 도함수들의 평균으로 새로운 값을 업데이트하는 것은 두 말 할 것 없이 상식적이다.

경사 하강법?

확률적 경사 하강법은 수식적으로 그냥 경사 하강법과 다를 것이 없다. 본질적인 차이는 데이터의 유무고, 확률적 경사 하강법을 발달시킨 최적화 기법들 역시 데이터를 신경쓴다는 점만 기억하면 된다.

댓글