ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Optimizer
    AI 2026. 1. 29. 15:30

    딥러닝 모델이 학습한다는 것은 결국 손실 함수(Loss Function)의 값을 최소화하는 최적의 가중치(Weight)를 찾아가는 과정입니다.

    Optimizer는 이 과정에서 "어떤 방향으로, 얼마나 빠르게" 가중치를 수정할지 결정하는 가이드 역할을 합니다.

    우리가 산 정상(높은 Loss)에서 골짜기(낮은 Loss)로 내려갈 때, 매 순간 어디로 발을 내디딜지 결정하는 알고리즘이라고 보시면 됩니다.

     

    가장 근본이 되는 Gradient Descent(경사 하강법)입니다.
    $$w \leftarrow w - \eta \cdot \frac{\partial L}{\partial w}$$

    • 수식의 의미: 현재 가중치($w$)에서 기울기($\frac{\partial L}{\partial w}$)의 반대 방향으로 학습률($\eta$)을 곱한 만큼 이동하여 새로운 가중치를 결정합니다.
    • 수정하고 싶은 대상: 모델의 예측 성능을 결정하는 가중치(Weight)입니다.
    • 한 문장 정리: 손실(Loss)을 최소화하기 위해 학습률(Learning Rate)로 보정한 기울기(Gradient)의 반대 방향으로  가중치(Weight)를 반복적으로 업데이트합니다.

     

    🧐 Local Minima(지역 최솟값)란 무엇인가?

    우리의 목표는 손실 함수($Loss$) 값이 가장 낮은 지점인 Global Minimum(전역 최솟값)을 찾는 것입니다. 하지만 함수의 모양이 복잡할 경우, 마치 산을 내려오다 만난 작은 웅덩이에 빠져버리는 상황이 발생하는데 이것이 바로 Local Minima입니다.

    • 문제점: Optimizer는 기울기가 0인 곳을 만나면 "아, 여기가 바닥이구나!"라고 착각하고 학습을 멈춰버립니다. 실제로는 더 낮은 지점이 옆에 있는데도 말이죠.

     

    🧗 Local Minima를 극복하는 Optimizer의 전략

    Optimizer들은 각자의 방식으로 이 '웅덩이'를 탈출하거나 우회합니다.

    관성(Momentum)의 힘: "가던 힘으로 밀고 나가라"

    가장 대표적인 극복 방법입니다.

    • 원리: 단순히 현재의 기울기만 보는 게 아니라, 이전 단계에서 내려오던 속도(관성)를 기억합니다.
    • 효과: 작은 웅덩이(Local Minima)에 빠지더라도 이전에 내려오던 가속도 덕분에 웅덩이를 '툭' 치고 넘어가 더 낮은 곳으로 향할 수 있습니다.

    진동(Stochasticity)의 힘: "랜덤하게 흔들어라"

    기본 GD가 아닌 SGD(확률적 경사 하강법)가 Local Minima에 더 강한 이유입니다.

    • 원리: 전체 데이터를 다 보지 않고, 일부(Batch)만 보기 때문에 매 순간 계산되는 기울기 방향이 조금씩 다르고 노이즈가 섞여 있습니다.
    • 효과: 이 불규칙한 '진동' 덕분에 웅덩이에 고이지 않고 이리저리 튀면서 더 넓은 영역을 탐색하게 됩니다.

    고차원의 마법: "사실 Local Minima는 드물다?"

    최근 딥러닝 이론에서는 수만 개의 가중치가 있는 고차원 공간에서 모든 방향의 기울기가 0이 되는 Local Minima는 생각보다 드물다고 봅니다.

    • Saddle Point(말안장 지점): 한쪽 방향으로는 최솟값이지만, 다른 쪽 방향으로는 내리막길인 지점입니다.
    • 극복: Adam과 같은 Adaptive Optimizer들은 각 가중치마다 학습률을 다르게 조절하여, 탈출구가 있는 방향으로 빠르게 발을 내디뎌 Saddle Point를 빠져나옵

     

    Optimizer의 발전 과정과 종류

    Optimizer는 크게 두 가지 고민을 해결하며 발전해 왔습니다.

    1. Step Direction: 어느 방향으로 갈 것인가? (Momentum 계열)
    2. Step Size: 얼마나 큰 보폭으로 갈 것인가? (Adaptive 계열)
    계보 Optimizer 특징 및 장단점 Name (Code)
    기본 SGD (Stochastic Gradient Descent) 특징: 전체 데이터가 아닌 랜덤하게 선택된 하나의 데이터(또는 배치)로 기울기를 계산합니다.

    장점: 계산 속도가 빠르고 메모리 소모가 적습니다.

    단점: 경로가 매우 불안정(진동)하며, 로컬 미니마(Local Minima)에 갇히기 쉽습니다.
    sgd
    방향 보정 Momentum 특징: '관성' 개념을 도입하여 이전 기울기 값을 일정 부분 유지합니다.

    장점: 가던 방향으로 계속 가려는 성질 덕분에 진동을 줄이고 Local Minima를 탈출하는 데 도움을 줍니다.

    단점: 최적 지점을 지나칠 우려가 있습니다.
    momentum
    보폭 보정 Adagrad 특징: 변수마다 학습률을 다르게 적용합니다. 많이 변화한 변수는 보폭을 줄이고, 적게 변화한 변수는 보폭을 크게 가져갑니다.

    장점: 학습 초기에 빠르게 수렴합니다.

    단점: 학습이 진행될수록 보폭이 너무 작아져 나중에는 학습이 거의 멈춥니다.
    adagrad
    보폭 보정 RMSProp 특징: Adagrad의 단점(보폭이 0이 되는 문제)을 해결하기 위해 지수 이동 평균을 사용합니다.

    장점: 과거의 기울기 반영 비중을 낮춰 학습이 멈추지 않고 지속되게 합니다.
    rmsprop
    최종 진화 Adam (Adaptive Moment Estimation) 특징: Momentum(방향)과 RMSProp(보폭)의 장점을 결합한 알고리즘입니다.

    장점: 현재 딥러닝에서 가장 범용적으로 쓰이며, 대부분의 문제에서 안정적이고 빠른 성능을 보입니다.

    단점: 특정 상황에서 일반화 능력이 SGD보다 떨어질 수 있다는 보고가 있습니다.
    adam

     

    더 강력한 성능을 위한 심화 Optimizer

    이름 특징 및 메커니즘 보완 포인트 추천 상황
    NAG 가던 방향으로 미리 가본 뒤 기울기 계산 Momentum의 과도한 오버슈팅 방지 및 안정성 강화 안정적인 가속이 필요할 때
    AdamW 가중치 감쇠(Weight Decay) 수식 수정 Adam의 과적합(Overfitting) 문제 해결 최신 논문 및 NLP 실무 표준
    RAdam 학습 초기 학습률의 급격한 변화를 수학적으로 보정 초기 학습의 불안정성 해결 및 쉬운 튜닝 스케줄러 설정이 어려울 때
    Nadam Adam 알고리즘에 NAG의 선험적 개념 결합 Adam보다 더 빠른 수렴 속도 지향 매우 빠른 학습 속도 필요 시
    AdaBelief 기울기 예측의 정확도(Belief)에 따라 보폭 조절 Adam의 속도와 SGD의 높은 일반화 성능을 동시 추구

     

     

    💡 결론: 어떤 것을 써야 할까?

    1. 가장 먼저 시도할 것: Adam 혹은 AdamW. 대부분의 문제에서 가장 무난하고 좋은 성능을 보입니다.
    2. 모델의 끝판왕 성능을 내고 싶을 때: 잘 튜닝된 SGD + Momentum이나 AdaBelief.
    3. 데이터가 너무 크거나 메모리가 부족할 때: SGD 계열.
Designed by Tistory.