https://arxiv.org/pdf/1609.04747
https://arxiv.org/pdf/1412.6980
https://arxiv.org/pdf/1711.05101
0. Gradient Descent란?
Gradient descent는 model parameter $\theta$에 대한 손실함수 $J(\theta)$를 최소화시키기 위해서, 현재 시점에서의 변화량을 나타내는 $\triangledown J(\theta)$의 반대방향을 향해서 parameter를 업데이트하는 과정을 의미한다.
쉽게 말해, 손실함수의 그래프가 만들고 있는 Downhill을 따라 내려가며 ($\triangledown J(\theta)$의 반대방향을 따라), Valley($\triangledown J(\theta)$의 최솟값)에 도착하는 과정이라고 볼 수 있다.
Gradient Descent를 $\theta = \theta - \eta \times J(\theta)$와 같은 수식으로 나타낼 수 있으며, parameter 1회 업데이트 시 사용되는 학습 데이터 수에 따라 Batch gradient descent, Stochastic gradient descent, Mini-batch gradient descent로 나눌 수 있다. 이는 연산량의 효율성, 안정적인 minimun 도달이라는 측면에서 효율적이나, learning rate가 상황에 따라 유동적으로 조정 불가능하다는 점에서 한계성을 보인다.
아래 알고리즘들은 이러한 한계성을 극복하기 위해서 제안되었다. 대표적으로 Momentum, RMSProp, Adam, AdamW에 대해 설명하도록 하겠다.
1. Momentum
Momentum의 전 단계인 SGD (Stochastic gradient descent)는 minimum에 도달하기 위해 여러 번의 진동과정을 거쳐야 한다는 단점이 존재한다. 이를 극복하기 위해, Momentum은 '관성'이라는 개념을 추가하여, 현 단계에서의 Gradient가 전 단계에서의 Gradient와 같은 방향일 경우 가속, 반대 방향일 경우 감속하도록 조정하였다. 수식은 아래와 같다.
$v_t = \gamma v_{t-1} + \eta \triangledown J(\theta)$
$\theta = \theta - v_t$
이 때 $\gamma$=0.9 정도의 값을 사용하며, 이는 관성을 얼마나 줄 것인지를 결정하는 momentum trem이다. Momentum은 관성의 원리를 이용하므로, 최적점 근처 구간에서는 더 빠르게 minimum에 도달할 수 있고, local minimum 구간에서 더 빠르게 벗어나 다음 minimum으로 이동할 수 있다.
이후 등장한 NAG (Nesterov accelerated gradient)는 Momentum의 원리를 기반으로 minimum으로 도달하는 속도를 더 높이는 알고리즘이다. 현재 parameter의 gradient를 사용하던 momentum의 방식과 달리, 우선 현재 parameter 기준으로 momentum만큼 이동하여 구한 다음 paremeter에 대해 gradient를 연산하는 방식이다.
$v_t = \gamma v_{t-1} + \eta \triangledown J(\theta - \gamma v_{t-1})$
$\theta = \theta - v_t$
NAG는 momentum을 통해 빠르게 parameter를 업데이트해 가면서, 제동 시점에서는 Gradient의 영향력을 높여 그 변화량을 줄임으로써 minimum을 찾기 위한 향상된 알고리즘이라고 볼 수 있다.
2. RMSProp
RMSProp은 위 Momentum과 달리, 각 parameter의 영향력을 조정하기 위한 알고리즘이다.
RMSProp의 기반이 된 알고리즘으로 Adagrad를 들 수 있다. 이는 각 변수별로 적용되는 learning rate을 다르게 적용하자는 아이디어로, '변화량이 적은 parameter는 step size를 크게, 변화량이 큰 parameter는 step size를 작게'로 설명할 수 있다.
$g_{t,i} = \triangledown_{\theta_t} J(\theta_{t,i}) $
$\theta_{t+1,i} = \theta_{t,i} - \frac{\eta}{\sqrt{G_{t,ii}+\epsilon}} g_{t,i}$
이 때 $G_t$는 $\theta$가 $t$ 시점까지 업데이트된 gradient의 제곱합이며, $\epsilon$은 분모가 0이 되기를 방지하는 매우 작은 양수이다. ($10^{-4}$ ~ $10^{-8}$) Adagrad는 parameter별로 learning rate가 자동으로 적용될 수 있다는 장점이 있으나, 학습이 진행될수록 learning rate가 계속 감소하여 minimum에 도달하지 않았음에도 거의 움직이지 않는다는 단점이 있다.
RMSProp은 이를 해결하기 위해 제안된 알고리즘이다. Adagrad가 Gradient의 제곱합을 사용했다면, RMSProp은 가중 이동 평균 $E[g^2]_t$를 이용한다. 전 step에서의 $E[g^2]_{t-1}$과 현재의 $g^2$의 가중평균을 계산한 값을 Adagrad의 $G_t$에 대신 적용하여 learning rate를 조정하도록 하였다. 이 때 $\gamma = 0.9$, $\eta = 0.001$로 제안한다.
$E[g^2]_t = \gamma E[g^2]_{t-1} + (1- \gamma)g_t^2$
$\theta_{t+1} = \theta_{t} - \frac{\eta}{\sqrt{E[g^2]_t+\epsilon}} g_t$
이렇게 대체할 경우 $G_t$가 무한정 커지지 않도록 하여 학습률을 너무 낮추지 않고 유지할 수 있다는 장점이 있다. 이와 비슷한 발상을 한 알고리즘으로 AdaDelta가 있다. AdaDelta는 지수평균을 통한 연산은 물론 분자에 RMS 연산을 포함시킴으로써, 분모와 분자의 단위를 맞추고 학습률을 초반에 지정하지 않아도 자동으로 적절한 학습률을 찾도록 바꾸었다.
$E[g^2]_t = \gamma E[g^2]_{t-1} + (1- \gamma)g_t^2$
$E[\triangle \theta ^2]_t = \gamma E[\triangle \theta^2]_{t-1} + (1-\gamma) \triangle \theta_t ^2$
$RMS[g]_t = \sqrt{E[g^2]_t + \epsilon}$
$ RMS[\triangle \theta]_t = \sqrt{E[\triangle \theta ^2]_t + \epsilon}$
$ \triangle \theta_t = - \frac {RMS[\triangle \theta]_{t-1}}{RMS[g]_t} g_t $
$\theta_{t+1} = \theta_{t} + \triangle \theta_t$
3. Adam
Adam(Adaptive Moment Estimation)은 현재 딥러닝 모델 학습에서 가장 많이 사용되는 Gradient descent optimizer로, 원리는 Momentum과 RMSProp의 방식을 혼용하여 사용한다고 이해하면 된다. Momentum에서 사용하던 이전 gradinet를 m_t에 반영하여 현재 gradient와의 평균값을 사용하고, RMSProp에서 사용하던 RMS를 v_t에 반영하여 parameter별 차등된 learning rate을 나타냈다.
논문에서 제시한 알고리즘에 따르면 다음과 같은 순서로 진행된다.
A. 초기 required parameter 설정 : $\alpha = 0.001$, $\beta_1 = 0.9$, $\beta_2 = 0.999$, $\epsilon = 10^{-8}$일 경우 잘 작동
- $\alpha$ : Stepsize (= Learning rate)
- $\beta_1$, $\beta_2$ : Exponential decay rates for the moment estimates, gradient의 반영비 조절
- $f(\theta)$ : Stochastic Objective Function (=Loss function)
- $\theta_0$ : 초기 Parameter vector
B. 초기화 : $m_0$, $v_0$, $t$ 를 0으로 초기화
C. Optimizer 반복문 실행
- Time step이 증가함에 따라 $t \leftarrow t+1$
- Gradient 계산 : $g_t \leftarrow \triangledown_{\theta}f_t(\theta_{t-1})$
- Biased moment 계산
- $m_t$ : Momentum, first moment
- $v_t$ : RMSProp, second raw moment
$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t$
$v_t=\beta_2 v_{t-1} + (1-\beta_2)g_t^2$
- Biased-corrected moment 계산
- $1-\beta_2$로 나누는 이유는 $E(v_t)$가 $E(g_t)$에 근사하도록 설정하기 위함
$\hat{m_t} = \frac{m_t}{1-\beta_1^t}$
$\hat{v_t} = \frac{v_t}{1-\beta_2^t}$
- 최종 parameter 업데이트
$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v_t}}+\epsilon} \hat{m_t}$
결과적으로 Adam으로 인해 나타나는 손실함수의 값이 특정한 지점에서 수렴함을 보일 수 있고, 다른 Optimizer와 성능을 비교한 실험에서 가장 빠른 수렴속도를 보였다.
4. AdamW
AdamW는 SGD와 Adam 모델에 L2 regularization과 Weight decay 개념을 적용한 알고리즘으로, Overfitting을 방지하는 목적으로 설계되었다. Weight decay란 이전 weight의 크기를 어느 정도 줄여서 반영하는 것을 의미하는데, 이는 L2 regularization을 적용하여 같은 효과를 낼 수 있다. 다만, Adam에 L2 regularization을 적용할 경우 weight decay 효과가 SGD의 경우보다 낮은 rate으로 적용되므로 generalization 능력이 비교적 떨어지는 것으로 볼 수 있다.
$f_t^{reg} (\theta) = f_t(\theta) + \frac{\lambda '}{2}\sum_{i}^{}\theta_i^2$ (L2 regulation)
$\theta_{t+1} = (1-\lambda)\theta_t - \alpha\triangledown f_t(\theta_t)$ (weight decay)
Gerneralization 능력을 더욱 향상하기 위해, 논문에서는 AdamWR이라는 알고리즘을 추가적으로 제시하고 있다. Learning rate을 의도적으로 조정하여 좋은 최적점에 도달하도록 하는 것을 learning rate annealing이라고 하는데, 보통은 learning rate을 지속적으로 감소하여 설계하는 것이 일반적이나 AdamWR에서는 중간중간 learning rate을 증가시키는 모습을 보여주었다(Warm restart). 이는 비교적 가파르게 변하는 local minimum에서 최적점이 형성될 확률을 낮추므로, 각 data별 generalized된 test loss를 얻기에 적합하다. 쉽게 말해, 학습데이터별로 서로 다르게 측정되는 예측치가 비교적 균등하게 출력된다는 것이다.
'Computer Vision' 카테고리의 다른 글
[2024-2] 박지원- SENet(Squeeze-and-Excitation Networks) (0) | 2024.12.19 |
---|---|
[2024-2] 김수용 - Object Detection (0) | 2024.12.16 |
[2024-2] 이재호 CNN의 역사 1 (2012~2015) (0) | 2024.12.08 |
[2024 - 2] 김동규 - LeNet : Gradient-Based Learning Appliedto Document Recognition (1) | 2024.12.07 |
[2024-2] 백승우 - VoxelMorph: A Learning Framework for Deformable Medical Image Registration (0) | 2024.11.07 |