Optimization


Optimization에 대해서 자세히 알아보겠습니다.

우리가 loss function에 대한 정의를 했을 때, 우리가 원하는 것은 가장 낮은 loss를 가지고 있는 지점(빨간색)에 도달하는 것입니다.

가장 간단한 optimization 알고리즘은 stochastic gradient descent입니다. mini batch 안에서 loss를 계산하고, gradient를 이용해서 weight를 업데이트 합니다.

아주 간단합니다. 하지만, SGD는 문제점을 가지고 있습니다.

Problems with SGD

먼저, 그림처럼 한쪽 방향으로는 아주 느리고 다른 방향으로는 빠르게 loss가 변화하는 경우가 발생할 때 입니다. loss가 수직방향의 가중치 변화에 훨씬 민감한 상태입니다.

현재의 지점에서 bad condition number를 가지고 있다고 표현할 수 있습니다. Hessian matrix의 최대값/최소값의 비율이 좋지 않은 상태입니다.

이런 경우에 SGD를 수행하면 수직방향으로는 빠른 변화가 있고, 수평방향으로는 느린 변화가 있어서 지그재그의 형태를 볼 수 있을 것입니다.(빨간색) 차원이 커질수록 이 문제는 심각해질 것입니다.