Optimizer 란?
**Optimizer(최적화 알고리즘)**는 신경망 모델의 가중치(weights)와 편향(bias)을 업데이트하는 방법을 결정하는 알고리즘이다. 손실 함수(loss function)의 기울기(gradient)를 계산하고, 이를 바탕으로 모델 파라미터를 조정하여 손실을 최소화한다.
Gradient Descent
**Gradient Descent(경사 하강법)**는 가장 기본적인 최적화 알고리즘이다.
- 원리: 손실 함수의 기울기(경사)를 따라 내려가면서 최소값을 찾는다
- 수식:
- : 현재 가중치
- : 학습률(learning rate)
- : 손실 함수의 기울기
- 특징:
- 전체 데이터셋을 사용하여 기울기를 계산한다 (Batch Gradient Descent)
- 안정적이지만 계산 비용이 크고, 지역 최소값에 빠질 수 있다
- 학습률이 고정되어 있어 수렴 속도가 느릴 수 있다
SGD: Stochastic Gradient Descent
**SGD(확률적 경사 하강법)**는 Gradient Descent의 변형이다.
- 원리: 전체 데이터셋 대신 하나의 샘플을 무작위로 선택하여 기울기를 계산한다
- 수식:
- : 무작위로 선택된 하나의 샘플
- 특징:
- 계산이 빠르고 메모리 사용량이 적다
- 노이즈가 있어 지역 최소값에서 탈출할 수 있다
- 수렴이 불안정하고 진동이 발생할 수 있다
- Mini-batch SGD: 여러 샘플을 묶어서 사용하는 중간 형태가 일반적이다
Momentum
**Momentum(모멘텀)**은 물리학의 관성 개념을 적용한 최적화 알고리즘이다.
- 원리: 과거의 기울기 방향을 기억하여 일관된 방향으로 이동한다
- 수식:
- : 모멘텀 계수(보통 0.9)
- 특징:
- 진동을 줄이고 수렴 속도를 향상시킨다
- 지역 최소값을 넘어서 더 나은 최소값을 찾을 수 있다
- SGD보다 안정적이고 빠른 수렴을 보인다
Adagrad
**Adagrad(Adaptive Gradient)**는 각 파라미터마다 학습률을 자동으로 조정한다.
- 원리: 자주 업데이트되는 파라미터는 작은 학습률을, 드물게 업데이트되는 파라미터는 큰 학습률을 사용한다
- 수식:
- : 지금까지의 기울기 제곱의 누적합
- : 0으로 나누는 것을 방지하는 작은 값
- 특징:
- 희소한(sparse) 데이터에 효과적이다
- 학습률이 시간이 지날수록 작아져서 학습이 멈출 수 있다
- 학습률을 수동으로 조정할 필요가 없다
RMSProp
**RMSProp(Root Mean Square Propagation)**는 Adagrad의 단점을 개선한 알고리즘이다.
- 원리: 과거 기울기의 제곱을 지수 이동 평균으로 계산하여 최근 기울기에 더 큰 가중치를 부여한다
- 수식:
- : 감쇠율(보통 0.9)
- 특징:
- Adagrad의 학습률 감소 문제를 해결한다
- 비정상(non-stationary) 문제에 효과적이다
- 순환 신경망(RNN)에서 좋은 성능을 보인다
Adam
**Adam(Adaptive Moment Estimation)**는 Momentum과 RMSProp를 결합한 알고리즘이다.
- 원리: 기울기의 1차 모멘트(평균)와 2차 모멘트(분산)를 모두 추정하여 적응적 학습률을 사용한다
- 수식:
- (1차 모멘트)
- (2차 모멘트)
- , (편향 보정)
- : 보통 0.9, : 보통 0.999
- 특징:
- 가장 널리 사용되는 최적화 알고리즘이다
- 빠른 수렴 속도와 안정적인 성능을 보인다
- 하이퍼파라미터 튜닝이 비교적 쉽다
- 대부분의 딥러닝 문제에서 좋은 성능을 보인다
Optimizer 비교
| Optimizer | 수렴 속도 | 안정성 | 메모리 | 특징 |
|---|---|---|---|---|
| Gradient Descent | 느림 | 높음 | 높음 | 전체 데이터셋 사용, 안정적 |
| SGD | 보통 | 낮음 | 낮음 | 빠르지만 불안정, 진동 발생 |
| Momentum | 빠름 | 보통 | 낮음 | 진동 감소, 일관된 방향 이동 |
| Adagrad | 보통 | 보통 | 보통 | 희소 데이터에 효과적, 학습률 감소 문제 |
| RMSProp | 빠름 | 높음 | 보통 | Adagrad 개선, 비정상 문제에 효과적 |
| Adam | 매우 빠름 | 높음 | 보통 | 가장 널리 사용, Momentum + RMSProp 결합 |
선택 가이드
- 작은 데이터셋, 간단한 모델: SGD 또는 Momentum
- 희소한 데이터: Adagrad
- 순환 신경망(RNN): RMSProp
- 대부분의 경우: Adam (권장)
- 안정적인 학습이 중요한 경우: Gradient Descent 또는 Momentum