콘텐츠로 이동

경사 하강법 변형 (Gradient Descent Variants)

난이도: 중급
선수 지식: 미적분 (편미분, 기울기), 선형대수 기초
관련 문서: 학습률 | 손실 함수 | 볼록성 | 선형 모델

핵심 요약: 손실(Loss)을 줄이는 방향으로 조금씩 파라미터(Parameter)를 업데이트하는 것. “눈감고 산을 내려가는 것”에 비유할 수 있다. 발밑의 경사(기울기, Gradient)를 느끼고 가장 가파른 내리막 방향으로 한 걸음씩 이동한다. SGD, Momentum, Adam 등 다양한 변형이 있으며, 현대 딥러닝의 핵심 엔진이다.


경사 하강법(Gradient Descent)은 머신러닝 최적화의 핵심 알고리즘이다. 손실 함수의 기울기(gradient) 반대 방향으로 파라미터를 반복적으로 갱신하여 최소값을 찾는다.

θt+1=θtηθL(θt)\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t)

현대 딥러닝에서는 다양한 변형이 사용되며, 각각의 장단점을 이해하는 것이 중요하다.


경사 하강법의 역사는 Augustin-Louis Cauchy가 1847년에 최초로 제안한 기울기 기반 최적화에서 시작된다. 당시에는 천문학적 계산에서 함수의 최솟값을 찾기 위한 수치적 방법이 필요했고, Cauchy는 기울기의 반대 방향으로 이동하면 함수값이 감소한다는 직관을 수학적으로 정리했다.

약 100년 뒤, Robbins와 Monro(1951)는 확률적 근사(Stochastic Approximation) 이론을 발표하며 SGD(Stochastic Gradient Descent)의 이론적 기반을 마련했다. 전체 데이터 대신 랜덤 샘플로 기울기를 추정해도 올바른 방향으로 수렴할 수 있다는 통찰은 대규모 데이터 처리의 문을 열었다.

이후 수십 년간 Momentum(Polyak, 1964), AdaGrad(Duchi et al., 2011), RMSProp(Hinton, 2012) 등이 등장하며 점진적으로 발전했고, 2015년 Kingma와 Ba가 발표한 Adam(Adaptive Moment Estimation)이 현대 딥러닝의 사실상 표준 옵티마이저(de facto optimizer)로 자리 잡았다. Adam은 1차 모멘트(평균)와 2차 모멘트(분산)를 동시에 추적하는 아이디어로, “설정 한 번이면 대부분 잘 동작한다”는 실용성을 제공했다.

비유: Momentum은 공이 비탈을 내려갈 때의 관성이다 — 한 방향으로 계속 굴러가려는 힘이 진동을 줄이고 속도를 높인다. Adam은 여기에 지형에 따라 브레이크를 조절하는 장치를 더한 것이다. 가파른 경사면에서는 브레이크를 밟아 폭주를 막고, 완만한 평지에서는 브레이크를 풀어 빠르게 전진한다.


1. 배치 경사 하강법 (Batch / Vanilla GD)

섹션 제목: “1. 배치 경사 하강법 (Batch / Vanilla GD)”

θt+1=θtηθL(θt)\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t)

전체 훈련 데이터를 사용하여 기울기를 계산한다.

장점단점
안정적 수렴대규모 데이터에 매우 느림
진정한 기울기 방향지역 최소에 갇힐 수 있음
결정론적메모리에 전체 데이터 필요
  • 단계당 복잡도: O(n)O(n) (nn = 데이터 크기)

경사 하강법(Gradient Descent)의 한 스텝을 구체적으로 추적해 보자.

설정: 가중치(Weight) W=5W = 5, 학습률(Learning Rate) η=0.1\eta = 0.1, 현재 기울기(Gradient) = 2

Wnew=Wη×기울기=50.1×2=4.8W_{\text{new}} = W - \eta \times \text{기울기} = 5 - 0.1 \times 2 = 4.8

이 과정을 반복하면:

스텝WW기울기WnewW_{\text{new}}
15.02.04.8
24.81.64.64
34.641.284.51
최종~3.0~0.0~3.0 (수렴, Converge)

핵심: 기울기가 양수이면 WW를 줄이고, 음수이면 늘린다. 기울기가 0에 가까워지면 업데이트(Update)가 작아지며 수렴한다. 학습률(Learning Rate)이 0.1이 아니라 10이었다면? W=510×2=15W = 5 - 10 \times 2 = -15로 튕겨나간다 — 이것이 발산(Divergence)이다.


2. 확률적 경사 하강법 (Stochastic GD, SGD)

섹션 제목: “2. 확률적 경사 하강법 (Stochastic GD, SGD)”

θt+1=θtηθL(θt;xi,yi)\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t; x_i, y_i)

단일 랜덤 샘플로 기울기를 근사한다.

장점단점
빠른 업데이트높은 분산
지역 최소 탈출 가능 (노이즈)진동하는 수렴
온라인 학습 가능학습률 감쇠 필요

θt+1=θtηθL(θt;B)\theta_{t+1} = \theta_t - \eta \nabla_\theta L(\theta_t; \mathcal{B})

배치 크기 BB (보통 32~256)의 랜덤 부분집합 사용. 실무의 표준.

배치 크기분산수렴일반화GPU 활용
작음 (32)높음느림좋음 (넓은 최소)낮음
큼 (4096+)낮음빠름나쁠 수 있음 (날카로운 최소)높음

배치 크기를 kk배 하면, 학습률도 kk배: η=kη\eta' = k \cdot \eta


vt=γvt1+ηθL(θt)v_t = \gamma v_{t-1} + \eta \nabla_\theta L(\theta_t) θt+1=θtvt\theta_{t+1} = \theta_t - v_t

보통 γ=0.9\gamma = 0.9

관성을 가진 공이 언덕을 굴러내리는 것: 일관된 방향으로 가속하고, 진동을 줄인다.

  • 좁은 골짜기(ravine)에서 진동을 줄이고 올바른 방향으로 가속
  • 국소 최소를 넘어갈 수 있는 운동량 축적

5. 네스테로프 가속 기울기 (Nesterov Accelerated Gradient, NAG)

섹션 제목: “5. 네스테로프 가속 기울기 (Nesterov Accelerated Gradient, NAG)”

vt=γvt1+ηθL(θtγvt1)v_t = \gamma v_{t-1} + \eta \nabla_\theta L(\theta_t - \gamma v_{t-1}) θt+1=θtvt\theta_{t+1} = \theta_t - v_t

모멘텀은 현재 위치에서 기울기를 계산하지만, NAG는 모멘텀이 이끄는 미래 위치에서 기울기를 계산한다.

  • “뛰기 전에 살펴보라 (Look before you leap)”
  • 볼록 함수에서 수렴 속도: O(1/t2)O(1/t^2) (vs 일반 GD의 O(1/t)O(1/t))

Gt=Gt1+gt2(원소별 누적 제곱 기울기)G_t = G_{t-1} + g_t^2 \quad (\text{원소별 누적 제곱 기울기}) θt+1=θtηGt+ϵgt\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}} \cdot g_t

각 파라미터마다 학습률을 적응적으로 조절: 빈번하지 않은 특성에는 큰 업데이트.

장점단점
희소 특성에 좋음 (NLP)학습률이 단조 감소
파라미터별 적응적 학습률학습이 너무 일찍 멈출 수 있음

AdaGrad의 학습률 소멸 문제를 해결:

E[g2]t=ρE[g2]t1+(1ρ)gt2(보통 ρ=0.9)E[g^2]_t = \rho E[g^2]_{t-1} + (1-\rho)g_t^2 \quad (\text{보통 } \rho = 0.9) θt+1=θtηE[g2]t+ϵgt\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{E[g^2]_t + \epsilon}} \cdot g_t

지수 이동 평균(EMA)으로 최근 기울기에 가중치를 둠 —> 학습률이 소멸하지 않음.


모멘텀 + RMSProp의 결합:

mt=β1mt1+(1β1)gt(1차 모멘트 / 평균)m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t \quad \text{(1차 모멘트 / 평균)} vt=β2vt1+(1β2)gt2(2차 모멘트 / 분산)v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \quad \text{(2차 모멘트 / 분산)}

편향 보정 (Bias Correction):

m^t=mt1β1t,v^t=vt1β2t\hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t}

업데이트:

θt+1=θtηv^t+ϵm^t\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon}\hat{m}_t

β1=0.9\beta_1 = 0.9, β2=0.999\beta_2 = 0.999, ϵ=108\epsilon = 10^{-8}, η=0.001\eta = 0.001

초기에 m0=0m_0 = 0, v0=0v_0 = 0으로 시작하므로, 초기 추정치가 0에 편향됨. 1βt1-\beta^t 항이 이를 보정.

변형핵심 개선사용처
AdamW가중치 감쇠를 기울기 업데이트에서 분리Transformer, 현대 DL
AMSGradv^t=max(v^t1,vt)\hat{v}_t = \max(\hat{v}_{t-1}, v_t)로 단조성 보장이론적 수렴 보장
NAdamAdam + 네스테로프 모멘텀일부 NLP
LAMB/LARS레이어별 적응적 학습률대규모 배치 학습
AdaFactor메모리 효율적 Adam 대안매우 큰 모델

옵티마이저적응적 LR모멘텀메모리최적 사용처
SGD없음없음O(p)O(p)단순, 튜닝 가능 시
SGD+Momentum없음있음O(2p)O(2p)일반적 DL 학습
AdaGrad있음없음O(2p)O(2p)희소 특성
RMSProp있음없음O(2p)O(2p)RNN, 비정상 목적함수
Adam있음있음O(3p)O(3p)DL 기본 선택
AdamW있음있음O(3p)O(3p)Transformer, 현대 DL

(pp = 파라미터 수)

상세 비교표 다이어그램

관점SGD (잘 튜닝)Adam
수렴 속도느림빠름
일반화더 나은 경향날카로운 최소에 빠질 수 있음
튜닝 난이도어려움 (LR 스케줄 필수)쉬움 (기본값도 잘 동작)
실무 추천CV에서 최종 학습빠른 프로토타이핑
최근 추세여전히 많이 사용AdamW + 코사인 어닐링이 표준 (NLP)

상황추천 옵티마이저
빠른 프로토타이핑Adam (기본값)
컴퓨터 비전 최종 학습SGD + Momentum + 코사인 어닐링
NLP / TransformerAdamW + 워밍업 + 코사인 어닐링
희소 특성 (추천 시스템)AdaGrad 또는 Adam
대규모 배치 분산 학습LAMB / LARS
메모리 제한SGD + Momentum

Adam이 SGD+Momentum에 진 사례: ImageNet 일반화 논쟁

섹션 제목: “Adam이 SGD+Momentum에 진 사례: ImageNet 일반화 논쟁”

2017년, Wilson et al.은 “The Marginal Value of Adaptive Gradient Methods in Machine Learning”이라는 논문에서 충격적인 실험 결과를 발표했다. ImageNet, CIFAR-10 등 주요 이미지 분류 벤치마크에서 잘 튜닝된 SGD+Momentum이 Adam보다 일반화 성능이 더 좋다는 것이었다.

구체적으로, Adam은 훈련 손실(training loss)을 더 빠르게 줄였지만, 테스트 정확도(test accuracy)에서는 SGD+Momentum에 뒤졌다. 이 현상의 원인으로 지목된 것은 Adam이 날카로운 최소(sharp minima)에 수렴하는 경향이다. 적응적 학습률이 파라미터별로 기울기를 정규화하면서, 손실 곡면의 날카로운 골짜기에 빠지기 쉬워진 것이다.

이 논쟁은 이후 AdamW(Loshchilov & Hutter, 2019)의 등장으로 일부 해소되었다. AdamW는 가중치 감쇠(weight decay)를 옵티마이저 업데이트에서 분리하여 일반화 성능을 개선했으며, 현재 NLP와 Transformer 학습에서는 AdamW + 코사인 어닐링(Cosine Annealing)이 사실상 표준이다.

실무 교훈:

  • 컴퓨터 비전(CV) 최종 학습에서는 여전히 SGD+Momentum이 선호되는 경우가 많다
  • NLP/Transformer에서는 AdamW가 표준이다
  • “빠른 수렴 = 좋은 모델”이 아니다 — 훈련 손실과 테스트 성능은 별개이다

  • 빠르게 수렴하지만, 최종 일반화 성능은 잘 튜닝된 SGD가 나을 수 있다. 특히 이미지 분류에서.

2. “학습률만 잘 설정하면 옵티마이저는 상관없다”

섹션 제목: “2. “학습률만 잘 설정하면 옵티마이저는 상관없다””
  • 옵티마이저마다 적합한 학습률 범위가 다르고, 스케줄링 전략도 달라야 한다.

3. “Adam의 기본 하이퍼파라미터를 바꿀 필요가 없다”

섹션 제목: “3. “Adam의 기본 하이퍼파라미터를 바꿀 필요가 없다””
  • 대부분의 경우 잘 동작하지만, 학습률(η\eta)은 거의 항상 튜닝이 필요하다.

4. “AdamW와 Adam + L2 정규화는 같다”

섹션 제목: “4. “AdamW와 Adam + L2 정규화는 같다””
  • 다르다. Adam에서 L2 정규화는 적응적 학습률에 의해 왜곡된다. AdamW가 올바른 구현.


  1. Adam에 편향 보정이 필요한 이유는?

    • 초기에 m0=0,v0=0m_0=0, v_0=0에서 시작하므로 초기 추정치가 0에 편향. 보정항 1/(1βt)1/(1-\beta^t)가 초기 단계에서 이를 교정.
  2. SGD vs Adam: 어느 것이 더 잘 일반화하는가?

    • SGD가 더 넓은(flat) 최소에 수렴하는 경향이 있어 일반화가 나을 수 있음. Adam은 빠르지만 날카로운(sharp) 최소에 빠질 수 있음.
  3. AdaGrad가 해결하는 문제와 만드는 문제는?

    • 해결: 희소 특성에 대한 적응적 학습률. 생성: 누적 제곱 기울기가 단조 증가하여 학습률이 소멸.
  4. 모멘텀을 직관적으로 설명하시오

    • 관성을 가진 공이 구르는 것. 일관된 방향으로 가속, 진동하는 방향에서는 상쇄. 좁은 골짜기를 효율적으로 통과.
  5. 미니배치 크기가 일반화에 영향을 미치는 이유는?

    • 작은 배치: 더 많은 노이즈 = 암묵적 정규화, 넓은 최소에 수렴. 큰 배치: 적은 노이즈, 날카로운 최소에 수렴 경향.

import torch
import torch.optim as optim
model = MyModel()
# SGD + Momentum
optimizer = optim.SGD(model.parameters(), lr=0.1, momentum=0.9, weight_decay=1e-4)
# Adam
optimizer = optim.Adam(model.parameters(), lr=0.001, betas=(0.9, 0.999))
# AdamW (올바른 weight decay)
optimizer = optim.AdamW(model.parameters(), lr=0.001, weight_decay=0.01)
# 학습률 스케줄러와 함께 사용
scheduler = optim.lr_scheduler.CosineAnnealingLR(optimizer, T_max=100)
for epoch in range(num_epochs):
for batch in train_loader:
optimizer.zero_grad()
loss = criterion(model(batch.x), batch.y)
loss.backward()
optimizer.step()
scheduler.step()

영어한국어
Gradient Descent경사 하강법
Stochastic Gradient Descent확률적 경사 하강법
Mini-batch미니배치
Momentum모멘텀 (운동량)
Learning Rate학습률
Adaptive Learning Rate적응적 학습률
Bias Correction편향 보정
Weight Decay가중치 감쇠
Convergence수렴

  • Ruder (2016) - “An Overview of Gradient Descent Optimization Algorithms”
  • Kingma & Ba (2015) - “Adam: A Method for Stochastic Optimization”
  • Loshchilov & Hutter (2019) - “Decoupled Weight Decay Regularization” (AdamW)
  • Duchi, Hazan, Singer (2011) - “Adaptive Subgradient Methods for Online Learning” (AdaGrad)
  • Goodfellow, Bengio, Courville (2016) - Deep Learning (Ch. 8: Optimization)