ML

6. Adam

마로그래머 2023. 7. 24. 14:33
반응형

Adam (Adaptive Moment Estimation)

MomentumRMSProp 을 합친 알고리즘인 Adam

어떻게 작동하는지?

# 지수 가중 평균법 : Vt = β*Vt-1 + (1-β)*Θt


# Vdw = 0, Sdw = 0, Vdb = 0, Sdb = 0 로 초기화

# 모멘텀을 구현해준다. (RMSProp과 구분하기위해 β1으로 표기)
Vdw = β1*Sdw + (1-β1)*dw
Vdb = β1*Sdb + (1-β1)*db

# RMSProp을 구현해준다. (모멘텀과 구분하기위해 β2으로 표기)
Sdw = β2*Sdw + (1-β2)*dw²
Sdb = β2*Sdb + (1-β2)*db²

# 각각 편향보정을 해준다.
V^corrected dw = Vdw / (1-β^t)
V^corrected db = Vdb / (1-β^t)

S^corrected dw = Sdw / (1-β2^t)
S^corrected db = Sdb / (1-β2^t)

그리고 가중치를 이렇게 업데이트해준다.

α = learning_rate


w := w - α * V^correcte dw / √S^corrected dw + ε
b := b - α * V^correcte db / √S^corrected db + ε

ε : 0이되어 값이 폭발하는 것을 막기위해 더해주는 10^-8 값


이렇게 계산하면

  • 모멘텀 의 속도
  • RMSProp 의 다양한 방향으로 그라디언트를 적용하는 능력

이 둘을 합친 효과를 낸다.


신경망에 잘 작동한다는 것이 증명되어 일반적으로 많이 쓰이는 알고리즘이다.


Adam 의 Hyperparameters

  • α : learning_rate인 α는 매우 중요하기도하고 보정될 필요가 있기 때문에 다양한 값을 시도해서 잘 맞는 것을 찾아야한다.
  • β1 : 모멘텀에 관한 항인 β1(이동평균, 가중평균, 즉 도함수의 평균을 계산)은 기본적으로 0.9가 좋다.
  • β2 : dw^2와 db^2의 이동가중평균인 β2는 Adam 논문 저자가 0.999를 추천했다.
  • ε : 0이되어 값이 폭발하는 것을 막는 ε는 값이 크게 상관없지만 Adam 논문 저자가 10^(-8) 을 추천했다. 보통 이 값을 설정하지 않아도 전체 성능에는 영향이 없다.




반응형