반응형
옵티마이저 시리즈
| Optimizer | URL |
| 옵티마이저란? [optimizer] | https://ai-duck1.tistory.com/16 |
| SGD[Stochastic Gradient Descent] | https://ai-duck1.tistory.com/17 |
| 모멘텀[Momentum] | https://ai-duck1.tistory.com/18 |
| RMSProp |
https://ai-duck1.tistory.com/22 |
| Adam | https://ai-duck1.tistory.com/23 |
| Adamw | https://ai-duck1.tistory.com/35 |
Adam [Adatpive Moment Estimation]은
모멘텀 + RMSProp를 결합한 옵티마이저으로
방향[속도]를 기억하며 빠른 수렴함
기존 옵티마이저인 모멘텀[Momentum]과 RMSProp을
결합한 개선 버전이다.
핵심 아이디어
모멘텀의 이전 방향성 유지와 RMSProp의 학습률 조절을 통한 안정적인 학습을 결합한다.
Adam은 다음 두 가지를 동시에 추적한다 :
1. 1차 모멘텀: 기울기의 지수이동평균
-> 방향[속도] 기억
-> 모멘텀처럼 진동 억제, 빠른 수렴
2. 2차 모멘텀: 기울기 제곰의 지수이동평균
-> 학습률 자동 조절 [adaptive learning rate]
-> RMSProp처럼 축소/확대
수식
- 매 스텝 t에서:
$g_t=\nabla _{\theta }J(\theta _t)\quad \text{(기울기)}$
- 1차 모멘텀 [기울기 평균]:
$m_t=\beta _1\cdot m_{t-1}+(1-\beta _1)\cdot g_t$
- 2차 모멘텀 [기울기 제곱 평균]:
$v_t=\beta _2\cdot v_{t-1}+(1-\beta _2)\cdot g_t^2$
- 편향 보정 [초기 단계의 과소 추정 방지]:
$\hat{m}_t=\frac{m_t}{1-\beta _1^t},\quad \hat{v}_t=\frac{v_t}{1-\beta _2^t}$
- 파라미터 업데이트:
$\theta _{t+1}=\theta _t-\eta \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t}+\varepsilon }$
각 항목의 역할 요약
| 기호 | 설명 |
| g_t | 현재 기울기 |
| m_t | 과거 기울기의 평균 [속도 = 방향] |
| v_t | 과거 기울기 제곱의 평균 [크기] |
| η | 학습률 [보통 0.001] |
| ε | 0으로 나누는 것 방지용 [작은 값] |
PyTorch 코드
optimizer = optim.Adam(model.parameters(), lr=0.001)
- lr : 학습률 [learning rate]
Adam의 장단점
장점
- 튜닝이 쉬움: 기본 파라미터로도 잘 작동함
- 빠른 수렴 [RMSProp의 기울기가 0으로 작아져서 느려지는 문제 해결]
- 다양한 문제에 대해서 강건함[robust]
단점
- 일반화 성능이 떨어질 때도 있음
요약
Adam은 모멘텀과 RMSProp의 결합 형태로
방향 기억과 학습률 자동 조절이 특징인 옵티마이저이다.
반응형
'AI숏츠' 카테고리의 다른 글
| AdamW이란? [Adaptive Moment Estimation] | AI숏츠 (0) | 2026.01.07 |
|---|---|
| RMSProp이란? | AI숏츠 (0) | 2025.09.25 |
| 모멘텀이란?[Momentum] | AI숏츠 (0) | 2025.09.24 |
| SGD란?[Stochastic Gradient Descent] | AI숏츠 (0) | 2025.09.22 |
| 옵티마이저란? (Optimizer) | AI숏츠 (0) | 2025.09.22 |