이번에는 딥러닝에서 기본적인 요소이면서 중요한 요소임에도 따로 포스팅으로 다루지 않았었던
옵티마이저(Optimizer) 의 개념에 대해서 간단히 정리해보겠습니다.
옵티마이저는 딥러닝 학습에 매우 중요한 요소이지만, 처음 시작하는 분들께서 "SGD 와 Adam의 차이가 뭘까?" 등의 의문을 가질 수도 있습니다.
이번 포스팅에서는 저도 딥러닝을 처음 공부할때 가졌었던 위와 같은 의문들에 대해서 알기 쉽게 정리해보고자 합니다.
1. 옵티마이저(Optimizer)란?
- Optimizer는 Loss Function을 최소화하는 방향으로 가중치를 업데이트하는 알고리즘을 말합니다.
- 옵티마이저의 핵심 역할을
* 학습 Loss의 감소
* 학습 가중치(w)의 업데이트
* 학습 속도 & 성능 최적화
의 방향성을 결정한다고 보시면 되겠습니다.
즉, Loss를 최소화 시키는 방향으로 학습을 해나갈건데 어떤 방법으로 학습을 해나갈까에 대한 방향성의 개념으로 비유해볼 수 있을 것 같습니다.
옵티마이저의 공식은 아래와 같습니다. (L은 Loss Function)
아래는 Optimizer의 발달 계보에 대해 잘 정리되어있는 포스팅입니다
이 중 대표적인 Optimzier에 4개에 대해서 알아보면
1) SGD (Stochastic Gradient Descent)
* 가장 기본적인 경사하강법에 Stocahstic한 방법(데이터 샘플을 무작위로 선택하여 가중치를 업데이트)을 적용했습니다.
* 단순하지만, 술며 속도가 느리고 Local minimum에 갇힐 가능성이 있습니다.
2) Momentum SGD (SGD + Momentum)
* SGD의 단점인 진동 문제(oscillation)를 해결하기 위해 관성(Momentum)이라는 개념을 추가했고, 이는 이전 업데이트 값을 일정 비율로 유지하면서 가중치를 업데이트하는 개념이라고 보시면 되겠습니다.
3) RMS Prop
* 학습률을 자동으로 조정하는 방식으로, SGD보다 빠르고 안정적인 수렴이 가능합니다.
* RNN, LSTM과 같은 순차 데이터 학습에 특히 유리합니다.
4) Adam(Adaptive Moment Estimation)
* SGD + Momentum + RMS Prop을 결합한 강력한 옵티마이저이자 가장 많이 활용됩니다.
* 적응형 학습률(Adaptive Learning Rate)를 사용합니다.
'딥러닝 with Python' 카테고리의 다른 글
[딥러닝 with Python] Affinity Score란? (0) | 2025.02.20 |
---|---|
[개념정리] FLOPS란? FLOPS(Floating Pont Operations Per Second) (0) | 2025.02.18 |
[딥러닝 with Python] GRPO란? (Group Relative Policy Optimization) (0) | 2025.01.30 |
[딥러닝 with Python] 논문 리뷰 : DeepSeek-R1 (0) | 2025.01.28 |
[딥러닝 with Python] NCE란?(Noise Contrastive Estimation) (1) | 2024.12.15 |
댓글