[DL] 3.1. Advanced Optimization (Momentum, RMSprop, Adam)

2024. 2. 13. 13:32ML/DL

이번 글에서는, (mini-batch) SGD의 단점을 살펴보고, 이를 보완한 최적화 기법 Momentum, RMSprop 그리고 마지막으로 이 둘을 합친 Adam에 대해 알아볼 것이다.

 

SGD의 단점

1. (mini-batch) SGD는 비등방성 함수에서 불필요한 움직임을 많다. 즉, 탐색(=학습) 경로가 매우 비효율적이다.

왜냐하면, 현재 위치에서 가장 가파른 방향은 현재 위치에서의 등고선과 수직인 방향이기 때문이다.

 

비등방성(Anisotropy) 함수는 각 위치에서의 기울기가 가리키는 지점이 하나가 아니라 여러 개인 함수다.

등고선(Contour)은 같은 함수값을 가지는 모든 지점을 연결한 선이다.

 

2. (mini-batch) SGD는 위험한 기법이다.

예를 들어, "눈을 가린 채 하산을 하고 있다"고 가정하자.

일반적으로 안전하게 하산 하기 위해서는, 현재 위치의 경사가 가파를수록 안전하게 보폭을 작게 가져가야 한다.

하지만, (mini-batch) SGD는 반대로 현재 위치의 경사가 가파를수록 보폭을 크게 가져가는 위험한 행동을 한다.

 

위 두 가지 문제는 각각 momentum과 RMSprop으로 어느 정도 해결할 수 있다.

 

Momentum (관성)

$$m_t \leftarrow \gamma \cdot m_{t-1} + \eta \cdot g_t \\ \theta_t \leftarrow \theta_{t-1} - m_t$$

기울기(방향+경사(=거리))를 누적함으로써 탐색 경로에 관성을 가지게 한다.

또는, 기울기를 누적하여 얻은 이전 학습 정보를 현재 학습에 반영한다.

기울기를 누적할 때, "최근 정보(=기울기)에 더 많은 가중치를 부여하는 지수 이동 평균"을 사용한다.

 

SGD vs momentum

그 결과, 위 그림처럼 극솟값으로 나아가는 방향은 누적되어 가속되고,

극솟값 방향과 수직되는 방향은 번갈아 이동하기 때문에 점점 상쇄되어 소멸된다.

즉, 가면 갈수록 쓸데없는 방향은 약해지고, 의미있는 방향만 강해진다.

 

탐험 관점에서 생각하보면, 새로운 bowl을 못 찾을수록 기존 bowl에서 벗어나기 어려워진다.

왜냐하면 기존 bowl의 극솟값으로 나아가는 방향만 누적되기 때문이다.

 

 RMSprop (Root Mean Square propagation)

$$v_t \leftarrow \gamma \cdot v_{t-1} + (1 - \gamma) \cdot g_t^2 \\ \theta_t \leftarrow \theta_{t-1} - \frac{\eta}{\sqrt v_t + \epsilon}g_t$$

탐색 경로가 긴 가중치는 적게 탐색하고, 탐색 경로가 짧은 가중치는 길게 탐색한다. (평준화 기법)

또는, 현재 위치의 경사가 가파르면 조심스럽게 이동하고 완만하면 과감하게 이동한다.

이때도 탐색 경로를 누적할 때, "최근 정보(=탐색 경로)에 더 많은 가중치를 부여하는 지수 이동 평균"을 사용한다.

 

참고로, 가중치 a, b가 있다고 할 때, a의 총 이동 거리가 짧았다면 현재까지 거쳐온 a의 경사가 완만했다는 의미다.

반대로, b의 총 이동 거리가 길었다면 현재까지 거쳐온 b의 경사가 가파랐다는 의미다.

 

수식에 $\epsilon$이 있는 이유는 분모가 0이 되는 것을 방지하는 위함도 있다.

하지만, 더 실용적인 이유는 $\theta$가 목적지(=최솟값 or 극솟값)에 도달할 때 $v_t$의 값이 매우 크게 감소하여 $1/\sqrt v_t$가 매우 커질 수 있기 때문이다. 그렇기 때문에, $\epsilon$을 너무 작게 설정하면 목적지 근처에서 $\theta$가 갑자기 튈 수 있다. (이 현상은 아래 우측 GIF에서 볼 수 있다.)

 

SGD vs RMSprop

탐험 관점에서 보면, 특정 방향으로의 최근 탐험 거리가 길어질수록 해당 방향으로의 탐험을 점점 억제하는 역할을 한다.

 

momentum과 RMSprop의 공통점은 지수 이동 평균으로 이전 정보를 사용한다는 것이다.

즉, 최선 정보는 받아들이고 과거 정보를 서서히 잊어가는 방식으로 이전 정보를 사용한다는 것이다.

하지만, momentum은 $g_t$로 방향과 경사 모두 사용하는 반면, RMSprop은 $g_t^2$으로 경사만 사용하는 차이점이 있다.

 

 

Adam (Adaptive Moment Estimation)

Adam은 Momentum과 RMSprop을 조합해 만든 알고리즘이다.

 

 

$m_t \leftarrow \beta_1 m_{t-1} + (1 - \beta_1) \cdot g_t$는 지수 이동 평균 방식으로 관성을 계산한 momentum을 의미한다.

$v_t \leftarrow \beta_1 v_{t-1} + (1 - \beta_1) \cdot g_t^2$는 지수 이동 평균 방식으로 최근 이동 거리를 계산한 RMSprop을 의미한다.

 

$m_0$과 $v_0$은 0으로 초기화 되고, $(1 - \beta_1) \cdot g_t$와 $(1 - \beta_2) \cdot g_t^2$는 매우 작은 값이기 때문에, 학습 초기 $m_t$와 $v_t$가 0으로 수렴해 학습이 되지 않는 문제가 발생한다.

학습 초기 $m_t$와 $v_t$가 0으로 수렴하는 것을 방지하기 위해, 각각 $m_t$와 $v_t$에 $(1 - \beta_1^t)$와 $(1 - \beta_2^t)$를 나눠 $\widehat{m_t}$와 $\widehat{v_t}$으로 보정한 것이다.

이처럼, 초기 $m_t$와 $g_t$이 0에 가까워지는 편향(bias) 문제를 해결하기 위해 $\widehat{m_t}$와 $\widehat{v_t}$으로 보정한 것을 편향 보정(bias correction)이라고 한다.

참고로, 학습이 진행될수록 $(1 - \beta_1^t)$와 $(1 - \beta_2^t)$는 1에 가까워지기 때문에, $\widehat{m_t}$와 $\widehat{v_t}$는 $m_t$와 $v_t$에 점점 가까워진다.

 

마지막으로, momentum과 RMSprop을 조합한$\alpha \cdot \widehat{m_t}/(\sqrt{\widehat{v_t}} + \epsilon)$으로 $\theta_{t-1}$를 $\theta_t$로 갱신한다.

'ML > DL' 카테고리의 다른 글

[DL] 5.1. Model hyper-parameter: Weight initialization  (0) 2024.02.18
[DL] 4. Backpropagation  (0) 2024.02.13
[DL] 3. Optimization (GD, SGD)  (0) 2024.02.10
[DL] 2. Loss Function (MSE, CEE)  (0) 2024.02.08
[DL] 1. What is Neural Network?  (0) 2024.02.02