본문 바로가기
딥러닝

신경망 매개변수 갱신: 옵티마이저

by 데이널 2024. 1. 29.

이번 포스팅은 신경망의 매개변수 갱신하는 최적화 방법인 옵티마이저에 대해 알아보도록 하겠습니다. 이 부분에 대해 가장 잘 정리된 '밑바닥부터 시작하는 딥러닝' 저서를 기반으로 작성했습니다. 

 

 

확률적 경사 하강법(SGD, Stochastic Gradient Descent)

최적의 매개변수 값을 찾는 단서로 매개변수의 기울기(미분)을 이용하는 방법입니다. 매개변수의 기울기를 통해 매개변수 값을 경신하면서 최적의 값에 다가갑니다. 

  • 수식 : $ 𝑊⟵𝑊 −𝜂 \dfrac{𝜕𝐿}{𝜕𝑊}  $ , 𝜂(에타)는 학습률을 의미(0.01, 0.001로 미리 정의)

이 방법은 기울어진 방향으로 일정 거리(학습률)만큼 갱신한는 단순한 방법입니다. 

  • 장점 : 단순하고 구현이 쉬움
  • 단점 
    • 비등방형 함수에서는 탐색 경로가 비효율적
    • 비등방성: 방향에 따라서 물리적 성질이 바뀌는 것
    • 예를들어, y축의 기울기가 크고, x축은 작은 경우 지그재그 이동

SGD(Stochastic Gradient Descent)
SGD(Stochastic Gradient Descent)


모멘텀(Momentum)

모멘텀은 운동량을 뜻하는 단어로 “관성”이라는 개념을 적용했습니다. 

  • 수식 : $ 𝑊⟵𝑊+𝑣,  𝑣⟵ 𝛼𝑣−𝜂 \dfrac{𝜕𝐿}{𝜕𝑊} $     

이 수식에서 변수 𝑣 는 물체의 속도(𝛼 = 0.9 값 설정)입니다. 결국, 𝛼𝑣 항은 물체가 아무런 힘을 받지 않을때 하강하는 역할을 한다고 할 수 있습니다.  처음 𝑣의 초기값은 0으로 설정합니다. 

  • 장점
    • SGD에 비해 지그재그가 덜함
    • x축의 힘이 아주 작지만 같은 방향으로 진행되어 일정한 가속하는 형태로 변영되기 때문에 Local Minimum문제도 해결할 수 있음
    • 실제로 공을 굴렸다고 생각한다면, 첫번째 로컬 미니멈의 최소에 멈추지않고 관성을따라 오른쪽으로 더 움직여 최저값 찾음
  • 단점 : 관성 때문에 경우에 따라 최저점을 지나칠 수 있음

Momentum
Momentum

 

 

AdaGrad

 

AdaGrad는 Adaptive Gradient Decent의 줄임말입니다. 여기서 Adaptive라는 말이 학습률 감소(Learning rate decay) 기법을 사용하는다는 말인데요. 이는 학습률을 효과적으로 정하는 기술로 처음에는 크게 학습하다가 조금씩 작게 학습하는 방법입니다. 경사에 따라 학습률을 조정해서 최저점을 지나치는 문제 보완했다고 할 수 있죠.

수식 : $ ℎ⟵ℎ + \dfrac{𝜕𝐿}{𝜕𝑊}  \dfrac{𝜕𝐿}{𝜕𝑊},  𝑊⟵𝑊−𝜂 \dfrac{1}{\sqrt{ℎ}}  \dfrac{𝜕𝐿}{𝜕𝑊} $     

식에서 알 수 있듯이 매개변수를 갱신할 때 $ \dfrac{1}{\sqrt{ℎ}} $ 를 곱해 학습률을 줄입니다.

  • 기울기 ↑, h ↑ , 학습률↓(경사가 급하면 천천히)
  • 기울기 ↓, h ↓ , 학습률↑(경사가 완만해지면 크게)

학습률 감소는 매개변수의 원소마다 다르게 적용됩니다. 

RMSProp 기법

무한히 학습을 진행하면 어느 순간 갱신량이 0이 되어 갱신이 더 이상 진행되지 않는 문제 발생하는데요. 이 문제를 해결하기 위해 RMSProp을 사용합니다. 과거의 모든 기울기를 균일히 더하는 것이 아니라 먼 과거의 기울기는 서서히 잊고 새로운 기울기 정보를 크게 반영하는 방식입니다. 다시 말해  '지수이동평균'이라는 기법을 사용하는 것입니다. 이렇게 되면, 과거의 기울기의 반영 크기가 기하급수적으로 감소합니다. 

 

AdaGrad
AdaGrad


Adam(AdaGrad + Momentum)

아담은 Adaptive Moment Estimation로 Momentum과 AdaGrad를 섞은 기법입니다. 모멘텀에서 사용하는 계수와 학습률에 대한 계수가 사용됩니다. 더불어 학습률을 줄여나가고 속도를 계산하여 학습의 갱신 강도를 적응적으로 조정합니다. 

Adam의 특성

  • 하이퍼파라미터의 '편향 보정'이 진행(일반화 기능)
  • 현재 가장 많이 쓰이고 있는 optimizer임
  • 하이퍼파라미터 3개 설정
  • 학습률-α, 일차 모멘텀용 계수-β1, 이차 모멘텀용 계수-β2
  • 논문에 따르면 기본 설정값은 β1이 0.9, β2가 0.999이고, 이 값이면 많은 경우에 좋은 결과를 얻을 수 있다고 함

Adam
Adam

 

NAG(Nesterov Accelerated Gradient)

NAG는 Momentum 기법을 베이스로 한 방식입니다. 미리 경사를 확인 할 수 있게 경사에 맞춰 속도를 조절하는 방식으로 기울기를 계산합니다. 모멘템은 이동 백터를 계산할 때 현재 위치에서 기울기와 모덴텀 스텝을 독립적 계산 수행 후 합친는 방식이라면, NAG는 모멘텀 스텝으로 먼저 이동했다 가정 후 해당 위치에서 기울기를 구해 스텝을 이동 합니다. 모멘텀은 관성으로 안해서 최적값을 지나칠 수 있는 단점이 있는데 NAG는 같이 관성을 이용하더라도 학습이 어느 정도 진행되었다면 최적값을 지나치는 문제를 방지할 수 있습니다.