본문 바로가기
공부/딥러닝

Optimizer : AdaGrad, RMSProp, Adam

by ctrlab 2025. 5. 1.

딥러닝 모델을 학습하기 위해 꼭 필요한 요소 중 하나는 Optimizer, 즉 최적화 알고리즘이다. 딥러닝은 일반적으로 손실 함수(loss)를 계산하고, 이 손실을 줄이기 위한 방향인 gradient를 구한 뒤, Gradient Descent 방식을 통해 모델의 파라미터를 업데이트한다.

이때 파라미터를 어떻게 업데이트할지를 결정하는 것이 Optimizer이다. Optimizer의 종류는 다양하지만, 이 글에서는 AdaGrad, RMSProp, Adam의 세 가지를 간단히 정리한다.

1. AdaGrad

AdaGrad는 각 파라미터마다 개별적인 학습률을 적용하는 방식이다. 많이 업데이트된 파라미터는 점점 학습률이 작아지고, 거의 업데이트되지 않은 파라미터는 상대적으로 더 큰 학습률을 갖게 된다. AdaGrad는 gradient의 제곱을 누적한 값을 기준으로 학습률을 나누어 조정한다. 수식은 다음과 같다.

$\theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{G_t} + \epsilon} \cdot g_t$

여기서

$G_t = \sum_{\tau=1}^{t} g_\tau^2$

$\theta_t$: 현재 시점 $t$에서의 파라미터  
$\eta$: 학습률 (learning rate)  
$G_t$: 그래디언트 제곱의 누적합  
$\epsilon$: 0으로 나누는 것을 방지하는 아주 작은 값  
$g_t$: 현재 시점의 그래디언트

AdaGrad의 장점은 학습 초기에 안정적인 수렴을 도울 수 있다는 점이다. 그러나 단점은 $G_t$가 계속 누적되기 때문에 학습이 진행될수록 학습률이 점점 줄어들고, 결국에는 거의 0에 가까워져 학습이 멈추는 현상이 발생할 수 있다는 것이다.

2. RMSProp

RMSProp은 AdaGrad의 단점을 해결하기 위해 제안된 알고리즘이다. AdaGrad는 gradient 제곱을 단순히 누적하기 때문에 학습률이 빠르게 감소하지만, RMSProp은 과거의 gradient 제곱을 지수적으로 감쇠시켜 최근 정보만 반영한다.

$E[g^2]_t = \gamma E[g^2]_{t-1} + (1 - \gamma) g_t^2$

업데이트 식은 다음과 같다.

$\theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{E[g^2]_t} + \epsilon} \cdot g_t$

$E[g^2]_t$: 시점 $t$에서의 제곱 그래디언트의 지수 이동 평균  
$\gamma$: decay rate (일반적으로 0.9)  
$g_t$: 현재 그래디언트  
$\eta$: 학습률  
$\epsilon$: 수치 안정성을 위한 작은 값

RMSProp은 학습률이 사라지지 않도록 유지하면서 안정적으로 학습을 진행할 수 있게 도와준다.

3. Adam

Adam은 RMSProp과 Momentum 기법을 결합한 형태의 Optimizer이다. gradient의 평균(1차 모멘트)과 제곱의 평균(2차 모멘트)을 모두 추적한다. 이를 통해 방향을 안정적으로 추적하면서도 학습률을 각 파라미터별로 자동 조절할 수 있다.

1차 모멘트는 다음과 같이 계산된다.

$m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t$

2차 모멘트는 다음과 같이 계산된다.

$v_t = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2$

편향 보정은 다음과 같이 수행된다.

$\hat{m}_t = \frac{m_t}{1 - \beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1 - \beta_2^t}$

최종 파라미터 업데이트 식은 다음과 같다.

$\theta_t = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \cdot \hat{m}_t$

$m_t$: 1차 모멘트 (gradient의 지수 이동 평균)  
$v_t$: 2차 모멘트 (gradient 제곱의 지수 이동 평균)  
$\beta_1$, $\beta_2$: decay 계수 (보통 0.9, 0.999)  
$\hat{m}_t$: 편향 보정된 1차 모멘트  
$\hat{v}_t$: 편향 보정된 2차 모멘트  
$\eta$: 학습률  
$\epsilon$: 0으로 나누는 것을 방지하기 위한 작은 값  
$\theta_t$: 현재 시점 $t$의 파라미터

Adam은 빠르고 안정적인 수렴을 도우며, 실제 딥러닝 모델 학습에서 가장 널리 사용되는 Optimizer 중 하나이다.

정리하면, AdaGrad는 누적된 gradient 제곱을 기준으로 학습률을 줄여가며, RMSProp은 이를 지수적으로 감쇠하여 학습률이 너무 작아지는 현상을 방지한다. Adam은 두 가지 방식 모두를 통합하여 방향성과 크기를 모두 고려한 적응형 업데이트를 수행한다.

'공부 > 딥러닝' 카테고리의 다른 글

Entropy, Cross Entropy, KL Divergence  (0) 2025.04.30