728x90
그래디언트(gradient)
: 텐서 연산의 변화율
- 가장 작은 손실 함수의 값을 만드는 가중치의 조합을 해석적으로 찾는다.
- 그래디언트의 반대방향으로 가중치를 조정한다.
1. 훈련 샘플 배치 x와 이에 상응하는 타깃 y를 추출한다.
2. x로 네트워크를 실행하고 예측 y_pred를 구한다.
3. 이 배치에서 y_pred와 y사이의 오차를 측정하여 네트워크의 손실을 계산한다.
4. 네트워크의 파라미터에 대한 손실 함수의 그래디언트를 계산한다.
5. 그래디언트의 반대 방향으로 파라미터를 조금 이동시킨다.
미니 배치 확률적 경사 하강법
- 미니 배치 SGD (mini-batch stochastic gradient descent)
- 배치 : 데이터 분할 시의 배치 사이즈
- 확률적 : 각 배치 데이터가 무작위로 선택됨을 의미
🌟 step값을 적절하게 고르는 것이 중요하다!step
이 너무 작을 경우- 지역 최솟값(local minimum) 에 갇힐 수 있다.
→ 지역 최솟값이 아닌 전역 최솟값을 찾아야하므로 step
이 너무 클 경우
함수 곡선 내의 완전한 임의 위치로 이동할 수 있다.
옵티마이저 (최적화 방법)
: 최소 손실 방향으로 하이퍼 파라미터를 업데이트하는 과정
- 모멘텀(Momentum)
: 현재 기울기 값뿐만 아니라 현재 속도 또한 함께 고려를 하여 값을 조정하는 것
- 모멘텀은 SDG의 local minimum을 해결해줄 수 있다.
- 최적점을 찾아가며 해당 최적점에 연관된 방향으로 가속화를 시키는 역할을 한다.
Adagrad
- 과거 gradient를 제곱하여 계속 더해간다. 학습이 덜 된 변수는 학습을 더 빨리, 학습이 많이 된 변수는 학습 참여 횟수를 줄이는 식으로 하여 랜덤값들을 효율적으로 빠르게 학습시켜, 최적화하는 방법이다.
- 무한히 학습을 진행하다보면 값이 무한히 커져, 최소값에 도달하기도 전에 0에 수렴하게 되어 갱신이 이루어지지 않을 수도 있다.
RMSProp
- 지수 가중 이동 평균(Exponentially weighted moving average)
- gradient의 단순 누적이 아닌 최신 gradient의 누적 비율을 늘려서 반영하는 방법이다.
Adam
- 학습률을 변경하는 RMSProp과 최적화에 의한 갱신 경로를 변경하는 Momentum을 조합하여 만들어진 옵티마이저
- Momentum처럼 지금까지 계산해온 기울기의 지수 평균을 저장하고 RMSProp처럼 기울기의 제곱 값의 지수 평균을 저장한다.
🌟 Optimizer에 대해서 쉽게 정리해두신 그림
더보기
Reference
- 논문) 기계학습 옵티마이저 성능 평가
- Keras Keras API reference / Optimizers
- 책) 케라스 창시자에게 배우는 딥러닝
728x90
'🤖 AI' 카테고리의 다른 글
[OCR] EasyOCR 손글씨 및 한국어 Fine Tuning (0) | 2023.05.31 |
---|---|
[DNN] 신경망의 구조 (0) | 2022.02.07 |
[CNN]CNN모델의 이해 (0) | 2021.09.20 |
[Tensorflow_Keras_API] tf.keras.utils.get_file : 데이터 다운로드 메서드 (0) | 2021.07.21 |
[Jupyter Notebook] 매직 키워드(매직 커맨드 '%') (0) | 2021.07.05 |