Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Today
Yesterday

Total
04-29 05:43
관리 메뉴

Hey Tech

[Deep Learning] 최적화(Optimizer): (4) Adam 본문

AI & 빅데이터/머신러닝·딥러닝

[Deep Learning] 최적화(Optimizer): (4) Adam

Tony Park 2022. 5. 21. 10:36
728x90
반응형

1.  개념

Adaptive Moment Estimation(Adam)은 딥러닝 최적화 기법 중 하나로써 MomentumRMSProp의 장점을 결합한 알고리즘입니다. 즉, 학습의 방향과 크기(=Learning rate)를 모두 개선한 기법으로 딥러닝에서 가장 많이 사용되어 "오던" 최적화 기법으로 알려져 있습니다. 최근에는 RAdam, AdamW과 같이 더욱 우수한 성능을 보이는 최적화 기법이 제안되었지만, 본 포스팅에서는 딥러닝 분야 전반을 공부하는 마음가짐으로 Adam에 대해 알아봅니다.

2.  수식

수식과 함께 Adam에 대해 자세히 알아보겠습니다.

 

$$ m_{t} = \beta_{1} m_{t-1} + (1 - \beta_{1}) \nabla f(x_{t-1}) $$

$$ g_{t} = \beta_{2} g_{t-1} + (1-\beta_{2})(\nabla f(x_{t-1}))^{2} $$

$$ \hat{m_{t}} = \frac{m_{t}}{1-\beta^{t}_{1}}, \hat{g_{t}} = \frac{g_{t}}{1-\beta^{t}_{2}} $$

$$ x_{t} = x_{t-1} - \frac{\eta}{\sqrt{\hat{g_{t}} + \epsilon}} \cdot \hat{m_{t}} $$

  • \(\beta_{1}\): Momentum의 지수이동평균 \(\approx\) \(0.9\)
  • \(\beta_{2}\): RMSProp의 지수이동평균 \(\approx\) \(0.999\)
  • \(\hat{m}\), \(\hat{g}\): 학습 초기 시 \(m_{t}, g_{t}\)가 \(0\)이 되는 것을 방지하기 위한 보정 값
  • \(\epsilon\): 분모가 \(0\)이 되는 것을 방지하기 위한 작은 값 \(\approx 10^{-8}\)
  • \(\eta\): 학습률 \(\approx 0.001\)

2.1.  지수이동평균

\(m_{t}\)와 \(g_{t}\)는 각각 Momentum RMSProp에서 사용한 수식과 동일합니다. \(\beta\)는 지수이동평균(Exponential Moving Average, EMA)으로써 하이퍼파라미터입니다. 연구 결과에 따르면, \(\beta_{1}\)은 \(0.9\), \(\beta_{2}\)는 \(0.999\)가 가장 좋은 값이라고 알려져 있습니다. 지수이동평균은 오래전 time step에서의 값은 적게 반영하고 최근 step의 값을 많이 반영하기 위한 값입니다.

2.2.  편향 보정

\(\hat{m}\), \(\hat{g}\)은 학습 초기에 \(m_{t}, g_{t}\)의 값에서 \(m_{t-1}, g_{t-1}\)가 \(0\)이고, \((1 - \beta_{1}) \nabla f(x_{t-1})\)과 \((1-\beta_{2})(\nabla f(x_{t-1}))^{2}\)이 너무 작기 때문에 \(0\)에 수렴하는 것을 방지하기 위한 보정값입니다. 수식에서 볼 수 있듯이, Gradient에 곱해진 \((1 - \beta_{1})와 (1 - \beta_{2})\)를 없앨 수 있도록 \(\hat{m}\), \(\hat{g}\) 해당 값으로 나눈 값입니다. 이처럼 \(m_{t}\), \(g_{t}\)의 초기값이 \(0\)에 가까워지는 편향(bias)의 문제를 해결하기 위해 \(\hat{m}\), \(\hat{g}\) 만드는 과정을 편향 보정(bias correction)이라고 합니다. 학습이 계속 진행되다 보면 \((1 - \beta_{1})\) \((1 - \beta_{2})\)는 거의 \(1\)에 가까워지기 때문에, \(\hat{m}\), \(\hat{g}\) 결국 \(m_{t}\), \(g_{t}\)와 같은 값이 됩니다. 

2.3.  학습률

학습률(\(\eta\))이란 어떤 비율만큼 파라미터를 업데이트할지를 결정하는 값으로 \(0\) \(1\) 사이의 값으로써 하이퍼파라미터입니다. 연구 결과에 따르면, Adam 알고리즘에서 학습률은 \(0.001\)이 가장 좋은 설정 값이라고 알려져 있습니다.

📚참고할 만한 포스팅

1. [Deep Learning] 퍼셉트론(Perceptron) 개념 이해
2. [Deep Learning] 퍼셉트론(Perceptron) 학습방법 및 절차
3. [Deep Learning] 활성화 함수의 개념 및 종류: sign, tanh, sigmoid, softmax, ReLU
4. [Deep Learning] 손실함수(Loss Function) 개념
5. [Deep Learning] 평균제곱오차(MSE) 개념 및 특징
6. [Deep Learning] 평균절대오차(MAE) 개념 및 특징
7. [Deep Learning] 최적화 개념과 경사 하강법(Gradient Descent)
8. [Deep Learning] 최적화 기법: (1) Momentum
9. [Deep Learning] 최적화 기법: (2) AdaGrad
10. [Deep Learning] 최적화 기법: (3) RMSProp
11. [Deep Learning] 최적화 기법: (4) Adam


포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시길 바랍니다.
그럼 오늘도 멋진 하루 만드시길 바랍니다 :)
고맙습니다😊

728x90
반응형
Comments