딥러닝의 중요한 포인트.
Gradient descent, Stochastic gradient descent, mini batch stochastic gradient descent.
Q. Gradient Descent 알고리즘이 뭐에요?
A. Gradient descent 알고리즘이란 loss function 에서의 최소값을 찾는 알고리즘입니다. 이는 기울기의 반대 방향으로 일정 크기만큼 이동하는 것을 반복하면 이뤄냅니다.
Q. Stochastic gradient descent 가 왜 제시되었나요?
A. Stochastic gradient descent 은 batch gradient descent 의 단점을 커버하기 위해 제시되었습니다. Batch gradient descent 은 global minima 를 보장하지만 연산량이 어마어마했습니다. 하지만 stochastic gradient descent 은 매 데이터포인트마다 gradient descent 을 접목해 연산량 자체를 크게 줄이면서 답을 빠르게 찾을 수 있었습니다.
Q. Mini-batch gradient descent 은 왜 제시되었나요?
A. Stochastic gradient descent 의 랜덤성과 높은 variance 을 줄이기 위해 제시되었습니다. 매 데이터포인트가 아닌 batch size 을 설정해줘서 gradient descent 가 이루어집니다. 흔히 32, 64, 128 등의 size 가이용됩니다.
딥러닝에서 뉴럴 네트워크의 weight 을 조정하는데 gradient descent 알고리즘이 사용된다. 이는 loss function 의 값을 최소화하는 세타 값을 찾는 것으로 기울기의 반대 방향으로 일정 크기만큼 이동하는 것을 반복하는 것이다.
이때 train dataset 전체를 이용하면 batch gradient descent 이다. 이는 global minimum 을 찾는것을 보장하지만 연산량이 매우 많다. 현실적으로 쓰기에는 힘들다.
따라서 제시된 것이 stochastic gradient descent 이다. 이는 매 데이터포인트마다 gradient descent 알고리즘을 접목시켜 훨씬 빠르게 답을 낸다. 하지만 local minima 에 빠질 위험도 있고, 하나의 포인트마다 움직이기 때문에 변칙이 큰 단점이 있었다.
이를 개선하기 위해 마지막으로 나온 것이 mini batch gradient descent, 또는 batch gradient descent 이다. 이는 batch size 을 직접 설정을 해 학습을 시키는 것이다. 빠르고 높은 안정성을 보이는 이 기법이 지금도 자주 쓰인다.
< 그림 출처 >
https://light-tree.tistory.com/133