Hey Tech
[Deep Learning] 최적화(Optimizer): (4) Adam 본문
📌 Text 빅데이터분석 플랫폼 베타테스트 참가자 모집 중!(네이버페이 4만 원 전원 지급)
👋 안녕하세요, 코딩이 필요 없는 AI/빅데이터 분석 All in One 플랫폼 <DATA101> 개발팀입니다.
😊 저희 서비스를 사용해 보시고 경험담을 들려주세요 :)
💸 참여해 주신 "모든" 분들께 네이버페이 4만 원 쿠폰을 지급해 드립니다.
👨💻 참여 희망 시 카톡플러스친구 1:1 채팅 or 인스타그램 DM 부탁드립니다 :)
📆 참여기간 : 11/25(월)~11/29(금) 11:00~21:00 중 택1 (1시간 1타임)
👉 참여장소 : 강남역 인근 스터디카페 미팅Room
📍 소요시간 : 총 40분 내외(서비스 체험 및 인터뷰 포함)
✅ 참가조건 : Text 빅데이터 분석 업무 경험자
👉 참가 가능일정 조회하기 : https://url.kr/n8k8gu
- 카톡플친 : http://pf.kakao.com/_SxltHG/chat
- 인스타그램 : https://www.instagram.com/data101.official/
1. 개념
Adaptive Moment Estimation(Adam)은 딥러닝 최적화 기법 중 하나로써 Momentum과 RMSProp의 장점을 결합한 알고리즘입니다. 즉, 학습의 방향과 크기(=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
포스팅 내용에 오류가 있다면 아래에 댓글 남겨주시길 바랍니다.
그럼 오늘도 멋진 하루 만드시길 바랍니다 :)
고맙습니다😊
'AI & 빅데이터 > 머신러닝·딥러닝' 카테고리의 다른 글
[딥러닝] 경사 하강법(Gradient Descent) 종류 (0) | 2022.05.21 |
---|---|
[딥러닝] Epoch, Iteration, Batch size 개념 (6) | 2022.05.21 |
[Deep Learning] 최적화(Optimizer): (3) RMSProp (0) | 2022.05.21 |
[Deep Learning] 최적화(Optimizer): (2) AdaGrad (0) | 2022.05.20 |
[Deep Learning] 최적화(Optimizer): (1) Momentum (2) | 2022.05.17 |