경사하강법

그래디언트의 반대 방향($-\nabla f$)으로 반복 이동하며 함수의 최솟값을 찾는 최적화 알고리즘.

업데이트 규칙

$$\mathbf{\theta}_{t+1} = \mathbf{\theta}_t - \eta \nabla_\theta L(\mathbf{\theta}_t)$$

알고리즘

입력: 초기 파라미터 θ, 학습률 η, 반복 횟수 T
for t = 1, 2, ..., T:
    g ← ∇L(θ) // 그래디언트 계산
    θ ← θ − η · g // 파라미터 업데이트
return θ

수렴 조건

$\|\nabla L(\mathbf{\theta})\| < \epsilon$ (그래디언트가 충분히 작아지면 정지)

학습률의 영향

세 가지 변형

Batch GD

전체 데이터셋으로 그래디언트 계산. 정확하지만 대용량 데이터에서 느림.

$$g = \frac{1}{N}\sum_{i=1}^N \nabla L_i$$

SGD

샘플 하나씩 업데이트. 빠르지만 노이즈가 크고 진동함.

$$g = \nabla L_i$$

Mini-batch GD

배치 크기 $B$. GPU 병렬처리에 적합. 실전에서 가장 많이 씀.

$$g = \frac{1}{B}\sum_{i \in \mathcal{B}} \nabla L_i$$

모멘텀

이전 이동 방향을 관성처럼 유지해 진동을 줄이고 수렴을 가속한다.

$$\mathbf{v}_{t+1} = \beta \mathbf{v}_t - \eta \nabla L(\mathbf{\theta}_t)$$ $$\mathbf{\theta}_{t+1} = \mathbf{\theta}_t + \mathbf{v}_{t+1}$$

$\beta \approx 0.9$ 가 일반적. $\beta = 0$이면 기본 GD와 동일.

적응형 학습률 옵티마이저

AdaGrad

파라미터마다 누적 그래디언트 제곱합으로 학습률을 조정. 자주 등장하는 특성은 학습률이 줄어든다.

$$G_t = G_{t-1} + g_t^2 \qquad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}}\,g_t$$
RMSProp

AdaGrad의 학습률이 너무 빨리 줄어드는 문제를 지수 이동 평균으로 해결.

$$v_t = \beta v_{t-1} + (1-\beta)g_t^2 \qquad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{v_t + \epsilon}}\,g_t$$
Adam (Adaptive Moment Estimation)

모멘텀(1차 모멘트) + RMSProp(2차 모멘트)를 결합. 현재 딥러닝의 기본 옵티마이저.

$$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t \qquad \text{(1차 모멘트)}$$ $$v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \qquad \text{(2차 모멘트)}$$ $$\hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t} \qquad \text{(편향 보정)}$$ $$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t}+\epsilon}\hat{m}_t$$

일반적 하이퍼파라미터: $\eta=0.001$, $\beta_1=0.9$, $\beta_2=0.999$, $\epsilon=10^{-8}$

볼록 vs 비볼록 함수

볼록 (Convex)비볼록 (Non-convex)
극소 = 전역 최소항상보장 없음
GD 수렴전역 최소로 수렴지역 최소/안장점에 갇힐 수 있음
선형회귀, 로지스틱 회귀신경망
안장점 문제: 비볼록 함수에서 $\nabla L = 0$이어도 극소가 아닌 안장점일 수 있다. 헤시안이 부정치(indefinite)이면 안장점. 고차원에서는 극소보다 안장점이 훨씬 많다. 실전에서는 SGD의 노이즈가 안장점 탈출을 도와주는 역할을 한다.