배치(batch) 경사하강법은 학습 데이터 전체를 사용해서 손실함수(loss function)의 그래디언트(gradient)를 계산하고 신경망 파라미터를 업데이트한다. 반면에 확률적 경사하강법(SGD, stochastic gradient descent)은 전체 데이터에 비해 훨씬 적은 수의 데이터를 무작위로 추출하고 그 데이터만으로 손실함수의 그래디언트를 계산한 후 신경망 파라미터를 업데이트한다. 확률적(stochastic)이라는 용어는 데이터를 무작위로 추출한다는 뜻에서 나온 말이다.
그러면 왜 데이터를 무작위로 추출해야 할까.
대부분 신경망 학습 알고리즘은 손실함수를 정하는 것으로 시작한다. 손실함수를
여기서
여기서
반면 SGD(확률적 경사하강법)은 전체 데이터 중에서 학습에 이용할 데이터를
따라서 데이터 전체를 이용하는 동안 신경망 파라미터를 여러 번 업데이트할 수 있으므로 효율적이다.
SGD에서 사용하는
왜 그런지 수식으로 알아보자.
먼저 알아 두어야 할 것은 확률밀도함수(probability density function)가
이제 전체 학습 데이터셋을 어떤 확률분포

그러면 랜덤변수
여기서 기댓값은 다음과 같이 근사화 되므로,
그래디언트의 기댓값은 다음과 같이 근사적으로 계산된다.
결국 배치 경사하강법에서 사용하는 그래디언트는 랜덤 손실함수
이제 SGD에서 사용하는
전체 모집단
이다. 만약에 데이터가 모집단에서 독립적이고 공평하게 추출된다면 랜덤변수

그러면 위 식은 다음과 같이 된다.
즉, 배치 경사하강법에서 사용하는 그래디언트의 기댓값과 동일하다.
하지만 데이터가 모집단에서 독립적이고 공평하게 추출되지 않았다면 위 식은 성립하지 않는다. 극단적으로
첫번째 업데이트 식도 다음과 같이 계산될 것이다.
이제
'AI 수학 > 최적화' 카테고리의 다른 글
[KKT 조건 - 1] 등식과 부등식 제약조건이 있는 최적화 문제 (0) | 2021.01.14 |
---|---|
최소화의 필요조건과 충분조건 (0) | 2021.01.10 |
함수의 최소화 또는 최대화의 조건 (0) | 2020.10.20 |
라그랑지 곱수법의 증명 (0) | 2020.10.01 |
라그랑지 곱수법 (0) | 2020.10.01 |
댓글