Paper Review

[논문 속 수학] Adam과 관련된 최적화 방법들(RMSProp, AdaGrad)

syveany 2024. 11. 9. 23:30

Adam과 관련된 최적화 방법들(RMSProp, AdaGrad)

 
Adam 논문의 section 5에 있는 AdaGrad의 수식이 그냥 보니 잘 이해가 안 돼서 하나하나 짚고 넘어가고자 한다.
Section 5에서는 Adam과 관련된 최적화 방법들을 설명한다. 
 
그리 길지 않으니 이참에 section 전체를 해석하면서 수식도 정리해보겠다.  
 

~ 목차 ~

1. 관련된 최적화 방법들
  1.1 RMSProp
  1.2 AdaGrad

 

1. 관련된 최적화 방법들

 

- Adam과 직접적으로 관련이 있는 최적화 방법은 RMSProp과 AdaGrad이다.
 

- 이 외에 Stochastic한 최적화 방법으로는 vSGDAdaDeltaNatural Newton Method 가 있고, 이들은 모두
   기울기 정보(first-order information)를 바탕으로 곡률(curvature)을 측정해서 학습률(stepsize)을 조절한다.
 

SFO라는 것도 있는데, 메모리가 mini batch수에 비례해서 필요하기 때문에 메모리 제약 상황(e.g. GPU)에서는 사용하기 어렵다.
 

- Adam은 NGD라는 방법처럼 기울기에 따라 학습률을 조절하는 preconditioner를 사용한다.
  둘의 차이점은, NGD의 preconditioner는 전체 피셔정보행렬을 사용해서 정확히 반영하지만(${F(\theta)}^{-1}$),

                                                                                          ↳ 파라미터 공간의 곡률 정보 제공함 (잘 모르겠지만 일단 넘어가겠음)

  Adam의 preconditioner는 피셔정보행렬의 대각 성분만 사용해서 근사적으로 반영한다($\sqrt{\hat{v_{t}}}+\epsilon$)는 것이다.
  그래서 NGD보다 Adam의 preconditioner가 조금 더 보수적으로 작동한다.
 
 

  1.1 RMSProp

  - RMSProp과 Adam의 관계에 대해서 설명한다.
 

  - Adam과 밀접하게 관련있는 최적화 방법은 RMSProp이다.
     RMSProp에 momentum을 합쳐서 사용하기도 한다. (논문에서는 RMSProp with momentum으로 부름)
 

  - RMSProp with momentum과 Adam의 차이점 2가지를 소개한다.
  파라미터 업데이트 방식
    - RMSProp with momentum: 기울기를 사용해서 파라미터를 업데이트한 뒤 모멘텀을 적용
    - Adam: 1차 모멘트와 2차 모멘트를 동시에 사용해서 파라미터를 업데이트
  ② 편향보정항(bias-correction term)의 유무
    - RMSProp with momentum: X → $\beta_{2}$가 1에 가까워질 때 파라미터가 너무 많이 업데이트되거나 발산해버림
    - Adam: O
 
 

  1.2 AdaGrad

  - AdaGrad와 Adam의 관계에 대해서 설명한다.
 

논문에는 $\sum_{i=1}^{t} {g_{t}}^2$로 나와있지만 오타인 것 같으니 $\sum_{i=1}^{t} {g_{i}}^2$로 쓰겠다.

 

  - AdaGrad는 sparse gradient(gradient가 대부분 0인 경우)에서 잘 작동하는 최적화 방법이다. 
 
     앞선 포스팅에서 AdaGrad의 가중치 업데이트 수식을 $h \leftarrow h + \frac{\partial L}{\partial W} \odot \frac{\partial L}{\partial W}$, $W \leftarrow W - \eta \frac{1}{\sqrt{h+\epsilon}} \frac{\partial L}{\partial W}$로
     표현했지만, 이는 사실 AdaGrad, RMSProp 등에서 사용되는 일반적인 형태의 수식이다.
 

     논문에서는 이 수식대신 AdaGrad만의 기본 수식인 $\theta_{t+1}=\theta_{t} - \alpha \frac{g_{t}}{\sqrt{\sum_{i=1}^{t}{g_{i}}^{2}}}$을 사용한다.

     (+갈색 박스는 복선임. 일단 패스)

 

 

  - 논문에서는 Adam의 $\beta_{2}$가 1로 갈 때, $\lim_{\beta_{2} \to 1} \hat{v_{t}}$의 값은 $\frac{1}{t} \sum_{i=1}^{t} g_i^2$가 된다고 한다.
 
    이 부분부터 눈으로 이해가 안 되서 손으로 정리를 해봤다. 
  
    $\hat{v_{t}} \leftarrow \frac{v_{t}}{{1-\beta_{2}}^{t}}$와 $v_{t} = {\beta}_{2}{v_{t-1}}+(1-{\beta}_{2}){g(t)}^2$를 사용했고, 그냥 정직하게 전개해서 대입하면 나오는 식이었다.

우와 막상 직접 해보니 신기하다.

 
  오호.. 다음 단계로 넘어가보자.

 
  - Adam의 파라미터 업데이트 식에 아래 3개의 조건을 추가하면 AdaGrad의 파라미터 업데이트 식이 된다고 한다.
    ① $\beta_{1} = 0$
    ② $\displaystyle \lim_{ \beta_{2} \to 1}$
    ③ $\alpha \leftarrow \alpha \frac{1}{\sqrt{t}}$
 
  - Adam에서 $\beta_{1}$이 0이고, $\beta_{2}$가 1에 가까워지고, $\alpha$에 $\frac{1}{\sqrt{t}}$를 곱할 경우에 AdaGrad와 같아진다는 것이다.
     직관적으로 생각해보면 AdaGrad에는 Adam에서 $m_{t}$가 없고 $v_{t}$만 있는 버전이니 일리가 있는 말이다. 
     수식으로도 위의 결과가 나오는지 궁금해서 직접 전개해봤다. 
 
     Adam의 1차 모멘트식 $m_{t}=\beta_{1}m_{t-1}+(1-\beta_{1})g_{t}$과 2차 모멘트식 $v_{t} = {\beta}_{2}{v_{t-1}}+(1-{\beta}_{2}){g(t)}^2$,
     그리고 위에서 구한 식 $\displaystyle \lim_{ \beta_{2} \to 1} \hat{v_{t}} = \frac{1}{t} \sum_{i=1}^{t} g_i^2$을 사용했다.

전개해보니 진짜 위에서 갈색으로 표시해놨었던  AdaGrad의 파라미터 업데이트 식 이 그대로 나왔다. 신기하다!

 

 
  - 이러한 AdaGrad와 Adam의 대응관계는 편향보정이 적용되었을 때만 성립한다. 직접 전개해서 확인해보자.

 
  - 편향보정이 없을 때는 $\displaystyle \lim_{\beta_{2} \to 1} v_{t}$값이 0에 가까워진다.
    이는 Adam 파라미터 업데이트 식의 분자를 0에 가깝게 만들어서 파라미터가 너무 많이 업데이트되게 된다.
    그만큼 편향보정이 중요하다고 생각하면 될 듯 하다.
 
 
 
수식 전개하는 게 진짜 재밌다. 내 손으로 직접 확인해보니까 재미가 2배다..
다음에도 논문 읽다가 수식 나오는데 이해가 안 되면 전개해봐야겠다.

 
 

참고문헌

[1] D. P. Kingma and J. Ba, "Adam: A Method for Stochastic Optimization," CoRR, vol. abs/1412.6980, 2014.
 

'Paper Review' 카테고리의 다른 글

[CV 논문리뷰] ResNet  (1) 2024.11.15
[CV 논문리뷰] VGGNet  (1) 2024.11.13
[CV 논문리뷰] AlexNet  (1) 2024.11.12