ML
6. Adam
마로그래머
2023. 7. 24. 14:33
반응형
Adam (Adaptive Moment Estimation)
Momentum 과 RMSProp 을 합친 알고리즘인 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) 을 추천했다. 보통 이 값을 설정하지 않아도 전체 성능에는 영향이 없다.
반응형