최적화 방법3- Momentum
앞에서 확률적 경사하강법(SGD)까지 정리했다. 이어서 모멘텀(Momentum)에 대해서 정리하려고 한다.
~ 목차 ~
0. 서론- 왜 갑자기 최적화를 공부하고 있는가
1. 최적화란
2. 종류
2.1 경사하강법(GD)
2.2 확률적 경사하강법(SGD)
2.3 Momentum
2.4 AdaGrad
2.5 RMSProp
2.6 Adam
3. 정리
2. 종류
2.3 Momentum
- 모멘텀(Momentum)은 운동량이라는 뜻으로, 이전의 이동방향을 계속 유지하려고 하는 성질, 즉 관성을 뜻한다. 최적화에서는 이러한 느낌을 살려서 가중치 매개변수를 갱신할 때 이전 기울기를 일부 반영하면서 현재 기울기에 따라 새로운 방향으로 이동하도록 만든다.
- 모멘텀을 도입하면 SGD의 단점(비효율적인 지그재그 이동경로)이 개선될 수 있다.
e.g. 마리오카트 같은 게임에서 방향을 바꿀 때 경로를 따라서 직선으로 움직이기보다는 드리프트로 끽~ 움직여야 최적의 경로로 빠르게 갈 수 있다. (이 감을 잡아야 순위권 안에 들 수 있을만큼 중요함)
- 이 역시 수식으로 설명해보고자 한다. 모멘텀의 가중치 매개변수 업데이트 공식은 아래와 같다.
$v \leftarrow \alpha v - \eta \frac{\partial L}{\partial W}$
($\alpha$: 모멘텀 계수, $v$: 속도)
$W \leftarrow W + v$
전체적인 식을 보기 위해 위 두 식을 합쳐서 써보면 $W \leftarrow W + \alpha v - \eta \frac{\partial L}{\partial W}$와 같고, 잘 정리해보면 아래와 같다.
$$W \leftarrow (W - \eta \frac{\partial L}{\partial W}) + \alpha v$$
어라? 어딘가 익숙하지 않은가!
바로 경사하강법의 가중치 매개변수 업데이트 공식($W \leftarrow W - \eta \frac{\partial L}{\partial W}$)에서 $\alpha v$를 더한 형태임을 알 수 있다.
- $\alpha v$에서 $\alpha$는 모멘텀 계수로, 보통 0.9정도의 값으로 설정된다. 이전 기울기 90%, 현재 기울기 10%을 반영한다는 의미이다.
- $\alpha v$에서 $v$는 속도로, 0으로 시작해서 갈수록 유의미한 속도를 가지게 된다. (+ v를 구하기 위해서는 두 식을 따로 봐야함.)
+ 나중을 위한 check!
비록 모멘텀 수식 $v \leftarrow \alpha v - \eta \frac{\partial L}{\partial W}$에 $1-\alpha$가 명시적으로 붙어 있지는 않지만, 이전 값에 $\alpha$를 곱함으로써 지수적으로 가중치를 감소시키는 형태를 띄고 있기 때문에 지수 이동 평균의 특성을 가지고 있다!
- 앞서 GD와 SGD를 설명할 때 든 손실함수 $L$의 예시를 그대로 사용해보고자 한다.
e.g. $L={e_1}^2+{e_2}^2+{e_3}^2+{e_4}^2+{e_5}^2$일 때,
GD, SGD, Momentum에서 가중치 매개변수를 1번 갱신할 때 필요한 행렬식은 각각 다음의 표와 같다.
(Momentum에는 $\alpha v_{i}$항이 더해져 있음을 알 수 있다.)
Gradient Descent | Stochastic Gradient Descent |
$$\begin{bmatrix} w_1 \\ w_2 \\ w_3 \\ w_4 \\ w_5 \end{bmatrix} \leftarrow \begin{bmatrix} w_1 \\ w_2 \\ w_3 \\ w_4 \\ w_5 \end{bmatrix} - \eta \begin{bmatrix} 2 e_1 \frac{\partial e_1}{\partial w_1} \\ 2 e_2 \frac{\partial e_2}{\partial w_2} \\ 2 e_3 \frac{\partial e_3}{\partial w_3} \\ 2 e_4 \frac{\partial e_4}{\partial w_4} \\ 2 e_5 \frac{\partial e_5}{\partial w_5} \end{bmatrix}$$ | $$\begin{bmatrix} w_1 \\ w_2 \\ w_3 \\ w_4 \\ w_5 \end{bmatrix} \leftarrow \begin{bmatrix} w_1 \\ w_2 \\ w_3 \\ w_4 \\ w_5 \end{bmatrix} - \eta \begin{bmatrix} 0 \\ \vdots \\ 2 e_i\frac{\partial e_i}{\partial w_i} \\ \vdots \\ 0 \end{bmatrix}$$ |
Mometum | |
$$\begin{bmatrix} w_1 \\ w_2 \\ w_3 \\ w_4 \\ w_5 \end{bmatrix} \leftarrow \begin{bmatrix} w_1 \\ w_2 \\ w_3 \\ w_4 \\ w_5 \end{bmatrix} + \begin{bmatrix} \alpha v_1 - \eta \cdot 2 e_1 \frac{\partial e_1}{\partial w_1} \\ \alpha v_2 - \eta \cdot 2 e_2 \frac{\partial e_2}{\partial w_2} \\ \alpha v_3 - \eta \cdot 2 e_3 \frac{\partial e_3}{\partial w_3} \\ \alpha v_4 - \eta \cdot 2 e_4 \frac{\partial e_4}{\partial w_4} \\ \alpha v_5 - \eta \cdot 2 e_5 \frac{\partial e_5}{\partial w_5} \end{bmatrix}$$ |
- 위 행렬식을 사용해서 $f(x,y)=\frac{1}{20}x^2+y^2$에서의 Momentum의 최적화 경로를 계산해보면 오른쪽 그림과 같다. SGD보다 훨씬 부드러워짐을 알 수 있다!
- 여기서 어떻게 더 개선을 할 수 있을까? Momentum에서는 학습률이 고정되어 있다. 학습 초기, 중기, 후기에 따라 필요한 학습률이 달라지기 때문에, 학습 단계에 맞게 학습률을 변화시킬 수 있다면 조금 더 효율적이고 안정적인 학습이 가능하다. 이러한 생각에서 나온 최적화 방법이 AdaGrad와 RMSProp이다. 조금 더 욕심을 내보자!
- 다음 포스팅에서는 단계에 따라 학습률을 변화시킬 수 있는 AdaGrad와 RMSProp에 대해서 정리해보려고 한다.
참고문헌
- 사이토 고키, 『밑바닥부터 시작하는 딥러닝』, Chapter 6: 학습 관련 기술들, 한빛미디어, 2017.
- 혁펜하임, "[Easy! 딥러닝] 6-4강. Momentum과 RMSProp," 동영상, 2023년 9월 19일. https://www.youtube.com/watch?v=-oHYAUhq5ao&t=355s.
- "마리오카트 배경화면," https://ko.phoneky.com/wallpapers/?id=w51w1069845 (accessed November 3, 2024).
'기본기 다지기 > Optimization' 카테고리의 다른 글
[기본이론] 최적화 방법6- Adam (수식o) (4) | 2024.11.08 |
---|---|
[기본이론] 최적화 방법5- RMSProp (수식o, 그래프o) (0) | 2024.11.06 |
[기본이론] 최적화 방법4- AdaGrad (수식o) (0) | 2024.11.04 |
[기본이론] 최적화 방법2- Stochastic Gradient Descent (수식o) (4) | 2024.11.02 |
[기본이론] 최적화 방법1- Gradient Descent (수식o) (8) | 2024.11.01 |