확률적 경사 하강법
정의
목적 함수 $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 $$ 이제 ‘확률적’ 경사 하강법이라는 이름의 모티브가 나왔다. 확률론적인 개념이 없는데도 이것을 확률적 경사 하강법이라고 부르는 이유는 보통 이렇게 뽑히는 데이터가 랜덤하기 때문이다. 이에 대한 도함수들의 평균으로 새로운 값을 업데이트하는 것은 두 말 할 것 없이 상식적이다.
경사 하강법?
확률적 경사 하강법은 수식적으로 그냥 경사 하강법과 다를 것이 없다. 본질적인 차이는 데이터의 유무고, 확률적 경사 하강법을 발달시킨 최적화 기법들 역시 데이터를 신경쓴다는 점만 기억하면 된다.

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

