1. SGD (Stochastic Gradient Descent, 확률적 경사 하강법)
기본 아이디어:
모든 데이터를 한 번에 사용하지 않고, **무작위로 뽑은 데이터 일부(미니배치)**를 사용해 가중치를 업데이트함.
θ=θ−η⋅∇θJ(θ)
θ
: 파라미터 (가중치)
η
: 학습률 (learning rate)
∇J(θ)
: 손실 함수의 파라미터에 대한 그래디언트
장점: 계산 속도 빠름
단점: 진동이 심하고 최솟값에 도달하기 어려울 수 있음
2. Momentum (모멘텀)
기본 아이디어:
이전 단계의 기울기 방향을 일정 부분 기억해서, 더 빠르고 안정적으로 수렴하게 만듦.
일종의 “관성”을 부여하는 개념입니다.
vt=γ⋅vt−1+η⋅∇θJ(θ)
θ=θ−vt
γ
: 모멘텀 계수 (일반적으로 0.9 정도)
v
: 속도(velocity), 기울기의 이동 평균
이점:
- 경사면이 가파르거나 좁은 지역에서 진동을 줄여줌
- 최적점에 더 빠르게 접근 가능
3. Adam (Adaptive Moment Estimation)
기본 아이디어:
SGD + Momentum + 학습률 자동 조정.
모멘텀처럼 기울기의 이동 평균을 기억하면서도, 각 파라미터마다 학습률을 자동 조절함.
Adam은 다음 두 가지를 계산합니다:
mt=β1⋅mt−1+(1−β1)⋅∇θJ(θ)
vt=β2⋅vt−1+(1−β2)⋅(∇θJ(θ))2
θ=θ−η⋅v^t+ϵm^t
β₁
, β₂
: 모멘텀 계수 (보통 0.9, 0.999)
ε
: 작은 수 (0으로 나누는 걸 방지)
장점:
- 하이퍼파라미터 튜닝에 덜 민감
- 빠르게 수렴
- 널리 사용됨 (딥러닝에서 사실상 기본 설정)
Momentum은 왜 중요할까?
- 단순한 SGD는 **"지그재그"**로 움직이다가 학습이 느려질 수 있어요.
- Momentum을 주면 부드럽게 더 빠르게 최솟값에 접근합니다.
- Adam은 Momentum의 아이디어를 포함하므로, 대부분의 경우 Adam만 써도 충분합니다.
4. 요약 비교
알고리즘 | 특징 | 장점 | 단점 |
---|
SGD | 단순한 경사하강 | 계산 단순, 빠름 | 진동 심함 |
Momentum | 관성 개념 추가 | 진동 억제, 빠른 수렴 | 하이퍼파라미터 튜닝 필요 |
Adam | Momentum + 학습률 조정 | 자동화, 빠른 수렴 | 복잡함, 일부 상황에서 일반화 성능 떨어질 수 있음 |