본문 바로가기
C.W.K.
Stream
Lesson 03 of 06 · published

경사하강법: 손실 지형을 굴러 내려가기

~10 min · gradient-descent, optimization, learning-rate

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

산속에서 눈을 가리고 내려가기

손실을 산의 높이라고 상상해 봐. 목표는 손실이 가장 낮은 골짜기에 닿는 거야. 전체 지형은 보이지 않아도 발밑이 어느 쪽으로 기울었는지는 느낄 수 있지. 경사하강법은 그 기울기를 보고 가장 가파르게 내려가는 쪽으로 한 걸음씩 움직여. 바닥에 가까워질 때까지 이 일을 반복하는 거야.

식으로 쓰면 야. 기울기 는 가장 가파르게 올라가는 방향을 가리켜. 그래서 앞에 마이너스를 붙여 반대쪽으로 내려가고, 학습률 가 한 걸음의 크기를 정해.

실패하는 세 가지 방식

  • 학습률이 너무 작음 → 한 걸음이 너무 짧아서 끝없이 기어가. 제한된 시간 안에는 수렴하지 못할 수도 있어.
  • 학습률이 너무 큼 → 골짜기를 계속 뛰어넘으며 진동하다가 무한대로 발산할 수도 있어.
  • 초기화가 나쁨 → 기울기가 거의 0인 평평한 곳이나 안장점에서 시작해 좀처럼 움직이지 못해.

그래서 학습률을 고르는 일이 실전 딥러닝에서 그렇게 중요해. 어느 곳에나 통하는 기본값은 거의 없어. 같은 옵티마이저라도 손실 지형에 따라 알맞은 걸음 크기가 달라지거든.

곧 만나게 될 변형들

  • SGD — 미니배치로 계산한 기울기를 쓰는 가장 단순한 방식이야. 단순하지만 의외로 강력해.
  • 모멘텀 — 지난 기울기를 누적해 작은 굴곡을 밀고 지나가.
  • Adam — 모멘텀에 파라미터별 걸음 크기를 더해. 현대 학습에서 자주 쓰는 기본 선택지야.
  • 학습률 스케줄 — 처음에는 빨리 움직이고 골짜기에 가까워질수록 천천히 움직여. 코사인 감쇠와 워밍업이 흔해.
경사하강법은 엔진, 손실은 지형, 학습률은 걸음 크기야. 머신러닝 엔지니어링의 큰 몫은 이 엔진이 주어진 지형을 안정적으로 찾아가게 만드는 일이야.

Code

1차원 그릇에서 경사하강법 실행하기·python
import numpy as np

# f(w) = (w - 3)^2 최소화 — w=3 에 최소 있는 그릇
def f(w):  return (w - 3) ** 2
def df(w): return 2 * (w - 3)

w = -5.0          # 최소에서 멀리 시작
lr = 0.1          # 학습률

for step in range(50):
    w -= lr * df(w)
    if step % 10 == 0:
        print(f"step {step}: w = {w:.4f}, loss = {f(w):.4f}")
print(f"최종: w = {w:.4f}")    # ~3.0

External links

Exercise

lr = 0.5, lr = 1.1, lr = 0.001로 경사하강법을 실행해. 각 값에서 무슨 일이 일어날지 먼저 예측한 뒤 수렴, 진동, 발산, 느린 이동을 관찰해.
Hint
lr=0.5는 빠르게 수렴하고, lr=1.1은 골짜기를 넘나드는 폭이 커지며 발산해. lr=0.001은 아주 천천히 움직여서 훨씬 많은 반복이 필요해. 알맞은 값은 손실 지형에 따라 달라져.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.