Imbalanced Data를 preprocessing 하기 위해서 Class weights 방법을 사용하지만 이러한 결과로 Back propagation에 영향을 많이 주기 때문에 optimizer를 어떠한 것을 고르는지가 학습의 결과에 큰 영향을 미친다. SGD와 같이 기울기의 크기를 바로 계산하여 update하는 방식은 사용할 수 없기 떄문에, Scaling Change에 상대적으로 영향을 덜 받는 Adam과 같은 optimizer를 사용해야한다.
Optimization을 하기 위한 고려사항은 크게 3가지가 존재한다.
1. Local Minima
2. Plateau
3 Zigxag
Logcal Minima 문제는 에러를 최소화시키는 최적의 파라미터를 찾는 문제에 있어서 파라미터의 공간에 수많은 hole들이 존재하여 local minima에 빠질 경우 global minimum을 찾기 힘들게 되는 문제를 일컫는다.
Adam(Adaptive Moment Estimation)
- Adam은 Adagrad, Adadelta, Rmsprop처럼 각 파라미터마다 다른 크기의 업데이트를 적용하는 방법이다.
특히 Adadelta에서 사용한 decaying average of squared gradients뿐 아니라, decaying average of gradients를 사용한다.
RMSProp과 Momentum을 조합한 방식으로 학습률과 방향 2가지 모두 고려한 방식이다.
< adam의 장점 >
- 간단한 구현, 효율적인 연산, 메모리 요구사항이 거의 없음.
-gradient 의 diagonal rescaling 에 독립적, 파라미터마다 학습률을 달리 조정 가능
- gradient에 noisy가 있거나 sparse한 문제에도 적합
- adam의 hyper-parameter는 직관적이며 tuning이 거의 필요 없다.
ADAM은 크게 moment를 계산하는 부분과, moment를 bias로 조정하는 부분으로 구성되어 있다.
moment는 Momentum이 적용된 first moment와 AdaGrad, RMSProp 이 적용된 second moment가 있음.
Adam의 pseudo-코드 // 출처 : 원문
우주 최강보스 옵티마이저 : )
https://wjddyd66.github.io/dl/NeuralNetwork-(3)-Optimazation2/
'Deep learning' 카테고리의 다른 글
Keras Tuner 사용방법(튜토리얼) (0) | 2021.08.24 |
---|---|
Keras Tuner 케라스 튜너 설치 (0) | 2021.08.23 |
Class imbalance (class weight, sample weight) (0) | 2021.08.18 |
SMOTE for imbalanced image dataset (0) | 2021.08.13 |
GAN(Generative Adversarial Network) (0) | 2021.08.06 |