앞서 Gradient Descent 에서 Mini - Batch GD, SGD를 공부해보았습니다
언급한 바와 같이 SGD의 단점(Parameter 변경폭이 불안정)을 개선하기 위해 Velocity와 Momentum을 조정한다고 설명드렸었는데요
이번 글에서는 Momentum(운동량)을 조정하는 Optimizer에 대해 소개해보고자 합니다
Momentum
Gradient Descent와 마찬가지로 매번 Gradient를 구하지만, 가중치를 update하기 전 이전 update 방향을 참고하여 같은 방향으로 일정한 비율만 update하는 방법입니다
이전 이동 값을 고려하여 일정 비율 만큼 다음 값을 결정하므로 관성 효과를 얻을 수 있다는 장점이 있습니다
Momentum은 SGD와 같이 사용하여 SGD에서 Gradient를 속도로 대체하여 사용하는 방법으로 이전 속도를 일정 부분 반영합니다
즉, 이전에 학습했던 속도와 현재의 Gradient를 반영하여 가중치를 업데이트합니다
$$
\begin{aligned}
&v_{t+1} = \beta \cdot v_{t-1} + (1-\beta) \cdot \nabla L(\theta_t) \\
&\theta_{t+1} = \theta_t - \eta \cdot v_{t+1}
\end{aligned}
$$
모멘텀 벡터 $v_t$는 Gradient의 Exponential Moving Average(EMA)를 기반으로 구한다
( 계산의 편의를 위해 $v_0$는 0으로 가정하였습니다 )
$$
\begin{aligned}
v_1 &= 0 +(1-\beta) \cdot \nabla L(\theta_1) \\
v_2 &= \beta v_1 +(1-\beta) \cdot \nabla L(\theta_2) \\
&= (1-\beta)\cdot(\beta \cdot \nabla L(\theta_1) + \nabla L(\theta_2) )\\
& \qquad\qquad \vdots \notag \\
v_t &= (1-\beta) \cdot(\beta^{t-1}\cdot \nabla L(\theta_1) + \beta^{t-2} \cdot \nabla L(\theta_2) + \cdots + \nabla L(\theta_t))
\end{aligned}
$$
$\beta$(Momentum Term, 관성계수)의 의미
Momentum의 Hyper Parameter인 $\beta$는 $\frac{1}{1-\beta}$개의 sample을 보겠다는 의미이고 보통 0.9의 값으로 설정합니다
$v_t = (1-\beta) \cdot(\beta^{t-1}\cdot \nabla L(\theta_1) + \beta^{t-2} \cdot \nabla L(\theta_2) + \cdots + \nabla L(\theta_t))$ 에서 보면 $\nabla L(\theta_1) $에 $\beta^{t-1}$이 곱해짐에 따라 초기 가중치에 대해서는 영향을 덜 받고, 현재 parameter인 $\nabla L(\theta_t) $에 영향을 많이 받는 모습을 볼 수 있습니다(Exponential Moving Average(EMA)를 적용했기 때문)
Nesterov Accelerated Gradient(네스테로프 모멘텀, NAG)
모멘텀 값과 기울기 값이 더해져 실제 값을 만드는 모멘텀과 달리 모멘텀 값이 적용된 지점에서 기울기 값을 계산하는 방법이다
Momentum은 멈춰야 할 시점에서도 관성에 의해 훨씬 멀리 갈 수 있는 단점이 있으나, NAG은 모멘텀으로 절반 정도를 이동한 후 어떤 방식으로 이동해야 하는지 다시 계산하여 결정한다
모멘텀과 달리 이전에 학습했던 속도와 현재 기울기에서 이전 속도를 뺀 변화량을 반영하여 가중치 Update
$$
\begin{aligned}
&w_{i+1} = w_i - v_i\\
&v_i = \gamma v_{i-1} + \eta{\nabla{L(w_i - \gamma v_{i-1})}}\\
\end{aligned}
$$
Momentum Step : $\gamma v_{i-1}$ : 과거 Gradient 정보
Gradient Step : $\eta{\nabla{L(w_i - \gamma v_{i-1})}}$ : Momentum으로 절반 정도 이동한 후의 Gradient 계산
'Optimization' 카테고리의 다른 글
[Optimization]Adam(Adaptive Momentum Estimation), Adamax (4) | 2024.06.13 |
---|---|
[Optimization]Adagrad(Adaptive Gradient), RMSProp(Root Mean Squared Propagation), Adadelta(Adaptive delta) (2) | 2024.06.12 |
[Optimization][Gradient Descent] Batch와 Gradient Descent(Full batch, Mini-batch, SGD) (0) | 2024.06.10 |
[Optimization] Gradient Descent(경사하강법) (1) | 2024.06.08 |
[Optimization] Optimization 정의 (1) | 2024.06.08 |