Deep Learning #06 Optimizer

김서영·2025년 4월 26일

딥러닝

목록 보기
6/13
post-thumbnail

Gradient Descent

: 기울기를 이용하여 손실함수를 최소화하는 방향으로 파라미터를 업데이트하는 알고리즘

문제점

  • 학습 데이터가 많을 경우, 연산량 매우 많아짐
  • 지역 최소점 근처에서 급격히 느려짐
    (학습을 진행할 수록 미분값이 작아지면서 속도 느려짐)

1. SGD (Stochastic Gradient Descent)

전체 학습 데이터에서 미리 정의한 N개 만큼의 데이터를 랜덤으로 뽑아 학습하는 방법

SGD의 한계점

Zigzag Oscillation : 지그재그로 학습되는 문제

  • 한 epoch 당 작은 업데이트 일어남
  • 랜덤으로 데이터를 선택하기에, 업데이트 방향 매번 바뀜
  • Local Minima에 빠질 가능성 큼


사진 출처

(이것을 해결하려는 Optimizer 등장 -> Momentum)

2. Momentum

이전 단계에서 이동 방향을 기억하고, 현재 기울기에 관성을 더하는 방식
(과거에 이동하던 방향을 재활용하여 두 벡터의 합산으로 위치 업데이트)

Momentum 수식


Momentum 장점

  • 가속 효과로 수렴 속도 빠름
  • 진동 효과 줄이고, 안정적으로 학습
  • 기울기가 0인 곳에서 탈출 가능

Momentum 단점

  • 가속도가 너무 커져서 발산 가능성 존재
  • 항상 최적점에 도달하지 않음

(이것을 해결하려는 Optimizer 등장 -> NAG)

3. NAG (Nesterov Accelerated Gradient)

Momentum의 개선 버전으로 다음 위치를 미리보고, 기울기 계산하는 방식
(큰 차이 없지만 momentum 이용해서 한 단계 더 보고 이동)


사진 출처

NAG 장점

  • Momentum 보다 정교하게 수렴
  • 가속도에 의한 Overshoot 문제 감소

NAG 단점

  • 가속도가 너무 커지면 발산 가능성 존재
    (Learning rate 조절 필요)

동일한 Learning rate를 사용하는 것은 그렇게 좋은 성능을 내지 않음
이것을 해결하기 위해 나온 Optimizer -> AdaGrad

4. Adagrad (Adaptive Gradient)

각 파라미터마다 자동으로 학습률을 다르게 조정하는 방식

핵심 아이디어

  • 자주 업데이트 되는 Weight : Learning rate 작게 조정
    (자주 등장하거나 변화를 많이 한 변수들의 경우
    optimum에 가까이 있을 확률이 높아서 세밀하게 학습 필요)
  • 드물게 업데이트 되는 Weight : Learning rate 크게 조정
    (적게 변화한 변수들의 경우
    : optimum에 도달하기 위해서는 많이 이동해야되기에, 빠르게 loss 값을 줄이는 방향으로 이동 필요)

사진 출처

Adagrad 수식


Adagrad의 장점

  • 학습률을 자동으로 조정
  • 희소 데이터에 강함
  • 파라미터별 아정적 수렴

Adagrad의 단점

  • 기울기 제곱 누적이 계속 커져서, 학습률이 너무 작아짐
    (한 번 학습률이 작아지면 커지기 어려움)

(이것을 해결하려는 Optimizer 등장 -> RMSProp)

5. RMSProp (Root Mena Square Propagation)

Adagrad의 기울기 제곱 누적으로 학습률이 너무 작아지는 것을 해결하기 위해, 지수 이동 평균으로 업데이트한 방식

Adagrad는 시간에 따른 단조증가 함수
-> RMSProp은 exponential average

RMSProp 수식


RMSProp의 장점

  • 학습률이 너무 작아지는 현상 방지
  • 과거의 기울기는 조금 반영하고, 최신의 기울기 위주로 반영

RMSProp의 단점

  • 학습률과 감쇠율을 잘 설정하지 않으면 불안정함

6. Adam (Adaptive Moment Estimation)

Momentum과 Rmsprop의 장점을 합친 방식

적응형 학습률 조정, 방향성 조절 모두 가능하여 성능 가장 좋음
(최근에 가장 많이 사용하는 Optimizer)

Adam 수식


Optimizer 비교

profile
안녕하세요 :)

0개의 댓글