편미분으로 각 파라미터가 손실에 미치는 영향을 계산하고, 경사하강법으로 모델을 학습시키는 원리를 익힌다.
편미분이란?
실제 AI 모델에는 파라미터가 수백만 개입니다. 각 파라미터가 손실에 미치는 영향을 따로따로 측정해야 합니다. 이때 다른 변수는 상수로 고정하고 하나의 변수만 미분하는 것이 편미분입니다.
# f(x, y) = x^2 + 3xy + y^2
# x에 대한 편미분 (y는 상수)
# df/dx = 2x + 3y
# y에 대한 편미분 (x는 상수)
# df/dy = 3x + 2y
신경망 학습 시 각 가중치 w에 대한 dL/dw 을 계산하는 것이 핵심입니다.
그래디언트(Gradient)
모든 파라미터에 대한 편미분을 모아 벡터로 만든 것이 그래디언트(∇f)입니다. 그래디언트는 함수가 가장 가파르게 증가하는 방향을 가리킵니다.
# 2변수 함수의 그래디언트
# f(x, y) = x^2 + y^2
# ∇f = [df/dx, df/dy] = [2x, 2y]
# (x=1, y=2)에서의 그래디언트
# ∇f(1,2) = [2, 4] → 이 방향으로 가면 f가 가장 빠르게 증가
경사하강법(Gradient Descent)
손실을 줄이려면 그래디언트의 반대 방향으로 파라미터를 업데이트합니다. 산에서 가장 가파른 내리막 방향으로 내려가는 것과 같습니다.
# 파라미터 업데이트 규칙
w_new = w_old - lr × dL/dw
# lr: 학습률 (learning rate) — 한 번에 얼마나 이동할지
# dL/dw: 손실 L에 대한 가중치 w의 그래디언트
학습률(Learning Rate)의 중요성
학습률은 경사하강법에서 가장 중요한 하이퍼파라미터입니다.
| 학습률 | 결과 |
|---|---|
| 너무 크다 (예: 1.0) | 최솟값을 건너뛰어 발산, 학습 불안정 |
| 너무 작다 (예: 0.000001) | 학습이 너무 느림, 지역 최솟값에 갇힘 |
| 적당 (예: 0.001~0.01) | 안정적으로 최솟값 수렴 |
경사하강법의 변형들
# 1. 배치 경사하강법: 전체 데이터로 한 번에 업데이트
# → 안정적이나 느리고 메모리 많이 사용
# 2. 확률적 경사하강법 (SGD): 데이터 1개씩 업데이트
# → 빠르나 불안정 (노이즈 많음)
# 3. 미니배치 SGD: 32~256개씩 묶어 업데이트
# → 가장 널리 사용되는 방법
# 4. Adam 옵티마이저: 적응형 학습률
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
지역 최솟값 문제
복잡한 함수에는 최솟값이 여러 개입니다. 경사하강법은 전역 최솟값이 아닌 지역 최솟값에 빠질 수 있습니다. 딥러닝에서는 차원이 매우 높아 이 문제가 생각보다 덜 심각하며, 대부분의 지역 최솟값이 성능이 충분히 좋습니다.
핵심: 경사하강법 = 그래디언트의 반대 방향으로 조금씩 이동하며 손실을 줄이는 과정입니다. Adam 같은 현대 옵티마이저가 이를 자동으로 처리합니다.
관련 검색어 · 편미분, 경사하강법, 학습률 learning rate, Adam 옵티마이저, 그래디언트, 딥러닝 최적화