딥러닝 최적화 기법 Momentum optimizer 에 대한 설명 및 의미


딥러닝에서는 Loss를 최소화하기 위한 방향으로 weight $W$를 최적화 한다. 이 최적화 하는 방법은 여러가지가 있다. gradient descent와 Stochastic gradient descent (SGD)가 있는데 SGD가 많이 사용되었던 편이다.

SGD에서 더 발전하여 인간의 직관에 맞는 최적화 방법이 개발되었었는데 그 중 하나가 momentum optimizer 이다.

Momentum optimizer 방법

$t$시점에 loss를 $L_t$라 하자. 그리고 loss의 $W$에 대한 미분을 $g_t = \frac{ \partial L_t}{W}$이라고 하자. 최적화 방법은 산에서 언덕을 내려오는 방법에 빗대어진다. 산에서 내려온다고 생각해보자. 갑자기 멈출려고 하면 멈춰지나? 아니다. 관성이란 것 때문에 멈춰지지 않는다. 이전에 어떤 속도로 달렸냐에 따라 지금 속도가 결정되고 한다. momentum 은 그 생각을 담은 optimizer이다. momentum optimizer 방법은 아래와 같이 정리할 수 있다.

$m_0 = 0$이라 하자

$m_t = \eta m_{t-1} + \gamma g_t$라 하자.

$m_t$는 $t$시점 이전의 gradient의 정보를 담고 있다. 왜 일까?

계산을 해보면 아래와 같이 표현 될수 있기 때문이다.

$m_3 = \eta^2 \gamma g_1 + \eta \gamma g_2 + \gamma g_3$

$m_t$는 그 시점 전에 그라디언트에 대한 정보를 다 담고 있다. $\eta,\gamma$를 0과 1사이로 잡으면 t시점에 가까운 gradient는 좀더 큰 가중치를 주고 t시점에서 멀면 작은 가중치를 준다. gradient를 속도라 생각하면 꽤 괜찮은 정의라고 생각된다. 이러한 특성 때문에 $m_t$는 momentum이라고 불린다.

가중치 update는 아래와 같이 한다.

$$W_t = W_{t-1} – m_t$$

가중치는 모멘텀에 의해 업데이트 하므로 momentum optimizer라고 부른다.

Leave a Comment