기본기 다지기/Optimization

[기본이론] 최적화 방법6- Adam (수식o)

syveany 2024. 11. 8. 17:43

최적화 방법6- Adam

앞에서 RMSProp까지 정리했다. 이어서 Adam에 대해서 정리하려고 한다.

 

~ 목차 ~

0. 서론- 왜 갑자기 최적화를 공부하고 있는가
1. 최적화란
2. 종류
  2.1 경사하강법(GD)
  2.2 확률적 경사하강법(SGD)
  2.3 Momentum
  2.4 AdaGrad
  2.5 RMSProp
  2.6 Adam

 

 

2. 종류 

  2.6 Adam

- AdamAdaptive Moment Estimation의 약자로, Momentum의 장점과 RMSProp의 장점을 결합한 방법이다. 

 

  ① Momentum의 장점: 기울기 방향성 보존(안정성)

    - Momentum의 기본 수식은 $v \leftarrow \alpha v - \eta \frac{\partial L}{\partial W}$, $W \leftarrow W + v$이다.

      $\alpha$를 통해 과거의 기울기가 현재의 기울기에 반영되어서 방향이 보존될 수 있다는 장점이 있다.

    - 이러한 장점은 Adam에서 1차 모멘트(기울기의 이동 평균)로 나타난다. Adam의 1차 모멘트 식은 아래와 같다.

$$m_{t} \leftarrow {\beta}_{1}{m_{t}}+(1-{\beta}_{1})g(w_{t})$$

      - 이를 통해 과거 기울기의 정보를 누적해서 학습이 일정한 방향으로 빠르고 매끄럽게 이어지도록 도와준다.

 

  ② RMSProp의 장점: 적응적 학습률 사용(효율성)

    - RMSProp의 기본 수식은 $h \leftarrow \beta h + (1 - \beta) \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}$이다.

      $\frac{\partial L}{\partial W} \odot \frac{\partial L}{\partial W}$를 통해 기울기 제곱의 이동 평균을 계산해서, 기울기의 크기에 따라서 학습률을 조정한다.

    - 이러한 장점은 Adam에서 2차 모멘트(기울기 제곱의 이동 평균)로 나타난다. Adam의 2차 모멘트 식은 아래와 같다.

$$v_{t} \leftarrow {\beta}_{2}{v_{t}}+(1-{\beta}_{2}){g(w_{t})}^2$$

      -  이를 통해 기울기의 크기에 따라서 학습률이 조절되어 보다 안정적이고 효율적인 학습을 가능하게 한다.

 

빠른 수렴 속도, 하이퍼파라미터에 덜 민감,

- Adam의 알고리즘은 다음과 같다 [2].

Adam 알고리즘

 

논문[2]에서는 Adam과 관련이 있는 최적화 방법이 RMSProp과 AdaGrad라고 한다.

책[1]에서는 Adam이 Momentum, AdaGrad와 관련이 있다고 하고, 다른 영상들을 보면 Momentum, RMSProp과 관련이 있다고 한다. 하지만 논문[2]에서는 RMSProp에 momentum을 추가한 버전을 RMSProp with momentum이라고 따로 소개하고, RMSProp with momentum과 Adam의 차이점에 대해서 설명한다. 무엇이 관련이 있는지 사실 precise하게 와닿지가 않는다.. 이렇게 곳곳에서 말이 다른 걸 보면 무엇과 연관이 되어있는지는 크게 중요하지 않은 것 같기도 하다.

 

일단 근본 자료인 논문 [2]를 참고해서 정리해보자면, Adam과 관련이 있는 최적화 방법은 RMSProp과 AdaGrad이다.

- RMSProp with momentum

RMSProp with momentum Adam
- Generates its parameter updates using a momentum on the rescaled gradient
- no bias-correction term
- directly estimated using a running average of first and second moment of the gradient
- has a bias-correction term

- AdaGrad

  - works well for sparse gradients

 

 

 

Adam의 1차 모멘트와 2차 모멘트는 다음과 같다.

$$m_{t} \leftarrow {\beta}_{1}{m_{t}}+(1-{\beta}_{1})g(w_{t})$$

$$v_{t} \leftarrow {\beta}_{2}{v_{t}}+(1-{\beta}_{2}){g(w_{t})}^2$$

여기서 ${g_{t}}^2$는 그냥 원소곱을 보기 편하게 나타낸 것이라고 명시되어 있다.(첫 번째 문단의 두 번째 줄, "${g_{t}}^2$ indicates the elementwise square $g_{t} \odot g_{t}$")

 

편향 보정된 1차 모멘트와 2차 모멘트는 다음과 같다.

$$\hat{m}_{t} = \frac{m_{t}}{(1-{{\beta}_1}^{t})}  ,   \hat{v}_{t} = \frac{v_{t}}{(1-{{\beta}_2}^{t})}$$

 

그래서 최종적으로 업데이트되는 파라미터는 다음과 같다.

$$w_{t} \leftarrow w_{t} - \eta \frac{\hat{m}_{t}}{\sqrt{\hat{v}_{t}} + \epsilon}$$

 

  - 앞에서 든 손실함수 $L$의 예시를 사용해서 가중치 매개변수를 1번 갱신할 때 필요한 행렬식을 알아보자.

      e.g. $L={e_1}^2+{e_2}^2+{e_3}^2+{e_4}^2+{e_5}^2$일 때,

            GD, SGD, Momentum, AdaGrad, RMSProp에서 가중치 매개변수를 1번 갱신할 때 필요한 행렬식

            각각 아래의 표와 같다. (RMSProp의 학습률은 $\eta$가 아니라 $\frac{\eta}{\sqrt{h_1+\epsilon}}$임을 알 수 있다.)

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}$$
Momentum
$$\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}$$
AdaGrad RMSProp
$$\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} \frac{1}{\sqrt{h_1 + \epsilon}} \cdot \frac{\partial L}{\partial w_1} \\ \frac{1}{\sqrt{h_2 + \epsilon}} \cdot \frac{\partial L}{\partial w_2} \\ \frac{1}{\sqrt{h_3 + \epsilon}} \cdot \frac{\partial L}{\partial w_3} \\ \frac{1}{\sqrt{h_4 + \epsilon}} \cdot \frac{\partial L}{\partial w_4} \\ \frac{1}{\sqrt{h_5 + \epsilon}} \cdot \frac{\partial L}{\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} \frac{1}{\sqrt{h_1 + \epsilon}} \cdot \frac{\partial L}{\partial w_1} \\ \frac{1}{\sqrt{h_2 + \epsilon}} \cdot \frac{\partial L}{\partial w_2} \\ \frac{1}{\sqrt{h_3 + \epsilon}} \cdot \frac{\partial L}{\partial w_3} \\ \frac{1}{\sqrt{h_4 + \epsilon}} \cdot \frac{\partial L}{\partial w_4} \\ \frac{1}{\sqrt{h_5 + \epsilon}} \cdot \frac{\partial L}{\partial w_5} \end{bmatrix}$$
Adam
$$\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} \frac{\hat{m}_1}{\sqrt{\hat{v}_1} + \epsilon} \\ \frac{\hat{m}_2}{\sqrt{\hat{v}_2} + \epsilon} \\ \frac{\hat{m}_3}{\sqrt{\hat{v}_3} + \epsilon} \\ \frac{\hat{m}_4}{\sqrt{\hat{v}_4} + \epsilon} \\ \frac{\hat{m}_5}{\sqrt{\hat{v}_5} + \epsilon} \end{bmatrix}$$

 

 

- 최적화 정리는 일단 여기까지 하겠다. 이번에는 Adam 논문도 각 잡고 쭉 읽어보고 싶다.

 

 

참고문헌

[1] 사이토 고키, 『밑바닥부터 시작하는 딥러닝』, Chapter 6: 학습 관련 기술들, 한빛미디어, 2017.

[2] Kingma, Diederik P. and Jimmy Ba. “Adam: A Method for Stochastic Optimization.” CoRRabs/1412.6980 (2014): n. pag.

[3] 혁펜하임 | AI & 딥러닝 강의, "[Easy! 딥러닝] 3-6강. Adam (Adaptive Moment Estimation) 완벽 정리!", 2024년 4월 29일, 동영상, 13:33, https://www.youtube.com/watch?v=wVBuPlBBbAE