본문 바로가기
옵티마이저

[옵티마이저 설명] Adam: A Method for Stochastic Optimization (2015) Part 02 논문 분석

by 인공지능과 함께 2023. 11. 4.

들어가기에 앞서

이 포스트는 Part 02에 해당되며, Adam 논문을 분석하는데 초점이 맞춰져 있습니다. 특히 bias correction term의 의미와 수식 그리고 실제 이것이 성능에 어떻게 영향을 주는지르 알아볼 것입니다. 이 시리즈에 대한정보는 다음과 같습니다.

 

논문

https://arxiv.org/pdf/1412.6980.pdf

 

Bias correction term은 왜 있는 거야?

논문에서 bias correction term은 Adam의 adaptive learning rate를 기준으로 설명하고 있습니다. adaptive learning rate는 통상 v로 쓰며, 다음과 같은 업데이트 규칙을 가지고 있습니다.

v
v

이 수식은 귀납적으로 표현된 수식입니다. 고등학교 때 배운 지식을 이용하여 위의 수식을 변형하면 다음과 같은 sum 연산을 이용하여 다시 쓸 수 있습니다.

 

 

변형된 수식
변형된 수식

두 개의 식은 완전히 수학적으로 동일한 수식입니다. Adam 논문의 저자들은 v와 g^2의 평균 값이 동일해지기를 원합니다. 그래서 위의 v_t에 평균을 취합니다. 

 

 

v 평균
v 평균

위의 수식을 다음과 같이 풀어 쓸 수 있습니다.

 

 

 

분리
분리

여기서 v_t와 g_i^2는 서로 연관돼 있기 때문에 온전히 선형적으로 분리할 수는 없습니다. 그래서 저자들은 v_t와 g_i^2의 평균의 오차 값을 zeta로 따로 퉁쳐서 두 개의 변수를 분리했습니다. 그리고 sum 값은 수학적으로 연산할 수 있기 때문에 최종 다음과 같은 수식이 나오게 됩니다.

 

 

 

최종
최종

위의 수식에서 저자들은 g_i^2 값이 안정화되면 zeta 값은 0으로되며, 그렇지 않을 경우 beta_1 값을 조절하여 zeta가 작은 값이 되도록 유지해야 한다고 합니다. 따라서 논문에서는 zeta는 단순히 0으로 치부하고 양변을 (1-beta_2^t)로 나눴습니다. 그리하여 비로소 아래와 같은 수식이 나오게 됩니다.

 

 

bias correction
bias correction

위의 수식이 바로 bias correction term의 의미입니다. 이와 같은 방식을 momentum에도 적용했죠. 여기서 의문이 들 수 있습니다. "그럼 v 말고 g^2를 바로 쓰면 되는 거 아닌가?" 그럴 경우, adaptive learning rate의 의미가 가라지게 됩니다.

 

 

 

Bias correction term의 이유는 알겠는데, 실제 그게 어떤 영향을 주지?

bias correction term을 사용하지 않을 경우, 학습 초반에 불안정하다는 얘기가 잇습니다. 그리고 Adam에서는 이 주장을 뒷받침할 자료를 보여줬습니다.

bias correction의 효용성
bias correction의 효용성

위의 도표의 왼쪽은 학습 초기(10 epochs)입니다. 붉은색 그래프는 bias correction, 초록색은 no bias correction입니다. 세로 축은 loss이며, 가로 축은 learning rate입니다. 보시다시피 beta1이 0일 때는 no bias correction은 그래프에 안 나올 정도로 loss가 높습니다. 반면 bias correction은 learning rate가 1e-3 정도에서 loss가 가장 낮다는 것을 확인할 수 있죠. beta1이 0.9일 때는 no bias correction 도 loss가 줄어드는 것을 볼 수 있지만, bias correction보다는 그래프가 전체적으로 높에 위치해 있습니다. 즉 학습 초반에는 bias correction의 힘이 막강하다는 것을 알 수 있습니다. 이 같은 현상은 100 epochs에서도 조금은 보입니다.

 

재밌는 점은 1e-3에서 loss가 가장 낮다는 것입니다. 이것이 바로 Adam의 default learning rate가 1e-3인 이유입니다.

 

 

 

AdaMax

AdaMax는 Adam 논문에 같이 올라온 optimizer입니다. Adam은 adaptive learning rate로 g^2, 즉 L2-norm을 사용했지만, AdaMax에서는 infinite-norm을 사용합니다. 쉽게 말하자면 max(g_t)를 g^2 대신에 사용한다는 것입니다. 이렇게 될 경우 학습이 안정하 되어 좋은 성능을 보인다고 합니다.

 

 

논문의 단점?

Adam 논문에서는 weight decay 항을 고려하지 않았습니다. 사실 weight decay는 optimizer와는 무관한 것으로 여겨졌기에 그럴 수도 있다고 생각됩니다. 하지만, 이것이 Adam에게 안 좋은 영향을 줬죠. Adam은 기존의 optimizer와는 다르기에 기존의 weight decay 방식이 아닌, 새로운 방식을 적용해야 했습니다. 그 방식이 바로 AdamW죠.