아래 내용은 인프런 [처음하는 딥러닝과 파이토치(Pytorch) 부트캠프] 강의를 듣고 공부한 내용입니다.
Adam(Adaptive Moment Estimation) Optimizer
가장 많이 사용하는 optimizer, 결국 Adam optimizer를 이해하기 위해 기존의 optimizer를 설명하는 것.
** Optimizer
= 확률적 경사하강법의 파라미터 변경 폭이 불안정한 문제를 해결하기 위해 학습 속도와 운동량을 조정하는 옵티마이저 적용
- Adam : Momentum과 RMSProp의 장점을 결합한 경사하강법으로, RMSProp의 특징인 기울기의 제곱을 지수평균한 값과 모멘텀 특징인 v(i)를 수식에 활용함. 즉, 알엠에스프롭의 G함수와 모멘텀의 v(i)를 사용하여 가중치를 업뎃함. optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
- Momentum : 운동량을 조정하는 방법으로 진짜 길 같은 곳으로만 이동. 매번 기울기를 구하지만, 가중치를 수정하기 전에 이전 수정방향(+, -)을 참고하여 같은 방향으로 일정한 비율만 수정하는 방법임. 수정이 양의 방향과 음의 방향으로 순차적으로 일어나는 지그재그 현상이 줄어들고, 이전 이동 값을 고려하여 일정 비율만큼 다음 값을 결정하므로 관성 효과를 얻을 수 있음. SGD 모멘텀은 확률적 경사하강법에서 기울기를 속도로 대체하여 사용함. 이전 속도의 일정 부분 반영. 즉, 이전에 학습했던 속도와 현재 기울기를 반영해서 가중치 구함. (local minimum에서 빠르게 빠져나올 수 있도록)
- RMSProp : 아다그라드의 G(i) 값이 무한히 커지는 것을 방지하고자 제안된 방법임. G 값이 너무 크면 학습률이 작아져 학습이 안될 수 있으므로, 사용자가 r값을 이용하여 학습률 크기를 비율로 조정할 수 있도록함.
정리)
Adam optimizer는 Momentum과 RMSProp를 결합한 느김으로 Momentim의 장점인 이전 gradient의 경향을 적용하면서(관성 적용) , RMSProp의 장점인 learning rate가 점점 소실되는 문제를 해결하여 이전 learning rate의 경향을 적용함(learning rate도 맞춤형으로 제공).
-> momentum의 장점을 취하기 위한 식
-> RMSProp의 장점을 취하기 위한 식
오래 iteration을 돌리더라도 learning rate을 맞춤형으로 제공할 수 있게 됨
--> 실제 optimizer를 선언할 때 SGD처럼 직접 learning rate를 하이퍼 파라미터로 안넣어줘도 됨.
but, 위의 mt와 vt를 그대로 적용하면, 학습 초반에 파라미터들이 0으로 편향되는 경향이 있으므로, 이를 보정하기 위해 다음과 같이 계산
*** 최종 식
+++ AdaMax
: AdaMax는 Adam 논문에서 extension으로 제안된 알고리즘
- Adam은 다음과 같이 learning rate를 계산(L2 norm으로 정의한다면)
- AdaMax는 learning rate를 계산하는 부분을 Lp norm으로 확장함.
여기서 p가 무한대라고 가정하면, 간단하고 안정적이 알고리즘이 된다고 함.
'Deep Learning & AI > DNN' 카테고리의 다른 글
Classification 문제를 위한 softmax 핵심 이해 (0) | 2024.02.02 |
---|---|
DNN Pytorch 실습 (당뇨병 환자 데이터셋, fashion mnist 데이터셋) (2) | 2023.12.29 |
Neural Network and Backpropagation (0) | 2023.12.29 |