[AI] Gradient Descent 옵티마이저의 진화
웨이트와 바이어스를 조정하여 최적의 해를 찾아가는 여정
옵티마이저 발전 역사 요약
1. 기본 경사 하강법 (Basic Gradient Descent)
가장 기본적인 형태로, 손실 함수의 기울기(gradient)를 계산하여 기울기가 낮아지는 방향으로 파라미터를 업데이트하는 방식입니다. 데이터를 어떻게 사용하느냐에 따라 세 가지로 나뉩니다.
1.1 배치 경사 하강법 (Batch Gradient Descent)
전체 학습 데이터를 한 번에 모두 사용하여 기울기를 계산합니다. 한 걸음을 내딛기 위해 전체 지도를 모두 살펴보는 것과 같습니다.
장점
- 전체 데이터를 사용하므로 최적해를 향한 경로가 안정적입니다.
- 전역 최적해(Global Minimum)를 찾을 가능성이 높습니다. (Convex 함수에서)
단점
- 데이터가 매우 크면 한 번 업데이트하는 데 엄청난 계산량과 메모리가 필요합니다.
- 학습 속도가 매우 느립니다.
주요 사용처
- 데이터셋 크기가 매우 작을 때 (메모리에 모두 올릴 수 있을 때)
- 모델 파라미터가 적은 간단한 선형 회귀, 로지스틱 회귀
- 매우 안정적인 수렴 과정이 필요할 때
1.2 확률적 경사 하강법 (Stochastic Gradient Descent, SGD)
전체 데이터 중 딱 하나의 샘플만 무작위로 뽑아서 기울기를 계산하고 업데이트합니다. 지도를 대충 훑어보고 일단 한 걸음 내딛고 보는 방식입니다.
장점
- 업데이트 속도가 매우 빠릅니다.
- 경로가 불안정하게 움직여서 지역 최적해(Local Minimum)를 탈출할 수 있습니다.
단점
- 경로의 변동성이 커서 최적해 근처에서 값이 크게 튀고 수렴이 불안정할 수 있습니다.
- 모든 샘플이 동등한 중요도를 갖지 않아 비효율적일 수 있습니다.
주요 사용처
- 데이터셋이 매우 클 때 (실시간으로 데이터가 추가되는 온라인 학습 환경)
- 중복된 데이터가 많은 대규모 데이터셋 학습
- 다른 복잡한 옵티마이저의 기본 알고리즘으로 사용 (e.g., Adam)
1.3 미니배치 경사 하강법 (Mini-batch Gradient Descent)
배치와 SGD의 장점을 절충한 방식으로, 전체 데이터 중 일부(미니배치)를 사용해 기울기를 계산합니다. 현재 가장 널리 사용되는 기본 방식입니다.
장점
- 배치 방식보다 업데이트가 빠릅니다.
- SGD보다 안정적으로 수렴합니다.
- 하드웨어(GPU)를 효율적으로 활용할 수 있습니다.
단점
- 미니배치의 크기(batch size)를 잘 설정해야 하는 하이퍼파라미터가 추가됩니다.
주요 사용처
- 사실상 모든 현대 딥러닝 모델의 표준 학습 방식
- 컴퓨터 비전, 자연어 처리 등 대부분의 딥러닝 분야
2. 발전된 옵티마이저 (Advanced Optimizers)
기본적인 경사 하강법의 한계를 극복하기 위해 '관성'과 '적응적 학습률' 개념이 도입되었습니다.
2.1 모멘텀 (Momentum)
이전의 이동 방향을 일정 부분 유지하려는 '관성'을 추가한 방식입니다. 언덕을 내려오는 공이 가속도가 붙는 것처럼, 같은 방향으로 계속 이동하면 속도가 빨라집니다.
장점
- 관련 없는 방향의 진동을 줄여주고, 관련 있는 방향으로의 학습은 가속합니다.
- SGD보다 수렴 속도가 빠릅니다.
단점
- 관성 계수(momentum)를 직접 설정해야 합니다.
주요 사용처
- 손실 지형이 복잡하고 골짜기가 깊은 심층 신경망(Deep Neural Networks)
- SGD의 학습 속도를 개선하고 싶을 때
2.2 네스테로프 가속 경사 (Nesterov Accelerated Gradient, NAG)
모멘텀의 똑똑한 버전입니다. 관성에 의해 한 걸음 미리 가본 위치에서 기울기를 계산하여, 잘못된 방향으로 너무 멀리 가는 것을 방지합니다.
장점
- 모멘텀보다 더 빠르고 효율적으로 수렴하는 경향이 있습니다.
- 최적해에 가까워질수록 속도를 줄여 안정성을 높입니다.
단점
- 계산이 조금 더 복잡합니다.
주요 사용처
- 순환 신경망(RNN)과 같이 불안정한 그래디언트를 가진 모델
- 모멘텀보다 조금 더 나은 성능을 원할 때 (주로 연구에서 사용)
2.3 Adagrad (Adaptive Gradient)
각 파라미터마다 '적응적인' 학습률을 적용합니다. 변화가 적었던 파라미터는 더 크게, 변화가 많았던 파라미터는 더 작게 업데이트합니다.
장점
- 희소한 데이터(sparse data)에서 좋은 성능을 보입니다.
- 학습률을 수동으로 조절할 필요가 줄어듭니다.
단점
- 시간이 지날수록 학습률이 0에 가까워져 학습이 멈추는 문제가 발생할 수 있습니다.
주요 사용처
- 자연어 처리(NLP) 분야 (단어 임베딩 등)
- 특정 피처(단어)의 등장 빈도가 매우 낮은 희소 데이터셋
2.4 RMSprop
Adagrad의 학습률이 급격히 감소하는 문제를 해결하기 위해 제안되었습니다. 기울기 제곱 값의 지수 이동 평균을 사용하여 오래된 정보의 영향력을 줄입니다.
장점
- Adagrad의 학습 중단 문제를 해결했습니다.
- Adagrad보다 불안정한 상황에서 더 잘 작동합니다.
단점
- 여전히 학습률(η)을 수동으로 설정해야 합니다.
주요 사용처
- 순환 신경망(RNN, LSTM, GRU) 학습
- Adagrad의 대안으로 널리 사용되었음 (Adam 등장 이전)
2.5 Adam (Adaptive Moment Estimation)
모멘텀(1차 모멘트의 추정)과 RMSprop(2차 모멘트의 추정)을 결합한 방식입니다. 현재 가장 널리 사용되는 옵티마이저 중 하나입니다.
- 각 파라미터마다 적응적인 학습률을 가지면서, 동시에 진행 방향에 관성을 가집니다.
- 대부분의 경우 기본 설정값으로도 좋은 성능을 보입니다.
- 빠르고 안정적인 수렴을 보여줍니다.
단점
- 때로는 최적해를 지나쳐 버리거나 특정 상황에서 수렴하지 못하는 문제가 보고됩니다.
주요 사용처
- 대부분의 딥러닝 문제에 대한 기본 옵션(Default choice)
- 복잡한 신경망 구조와 대규모 데이터셋 학습에 매우 효과적
2.6 AdamW (Adam with Decoupled Weight Decay)
Adam에서 L2 정규화(Weight Decay)를 개선한 방식입니다. 기존 Adam에서는 Weight Decay가 학습률에 영향을 받아 효과가 감소하는 문제가 있었는데, AdamW는 이를 분리하여 정규화가 더 잘 작동하도록 합니다.
장점
- Adam보다 더 나은 일반화 성능을 보여줍니다.
- 대규모 언어 모델(LLM)과 같은 최신 딥러닝 모델에서 표준으로 자리 잡고 있습니다.
단점
- Adam과 마찬가지로 하이퍼파라미터가 많지만, 보통 기본값이 잘 작동합니다.
주요 사용처
- 트랜스포머(Transformer) 기반의 대규모 언어 모델(BERT, GPT 등)
- 일반화 성능이 매우 중요한 최신 컴퓨터 비전 모델