한양과학기술고등학교

에듀테크 프로젝트 대시보드

경사 하강법 (Gradient Descent)

경사 하강법 (Gradient Descent)

안개가 자욱한 산에서 가장 낮은 골짜기를 찾아야 한다. 앞은 안 보이고, 발밑의 기울기만 느낄 수 있다. 그러면 방법은 하나다 — 지금 서 있는 곳에서 가장 가파르게 내려가는 방향으로 한 걸음 옮기고, 다시 기울기를 재고, 또 한 걸음. 이게 경사 하강법이다. AI 모델 학습은 결국 "예측이 얼마나 틀렸는지"를 나타내는 손실 함수(loss) 라는 골짜기에서, 파라미터를 조금씩 움직여 가장 낮은 지점을 찾아가는 과정이다. 한 걸음의 크기를 정하는 값이 학습률(learning rate, η) 인데, 너무 작으면 한없이 느리고 너무 크면 골짜기를 튕겨 나가 버린다.

x다음  =  x현재  −  η · f'(x현재)   ( 학습률 × 기울기 만큼 반대 방향으로 이동 )

1D 골짜기 시뮬레이터 — 공을 굴려 최솟값 찾기

반복 (step)
0
현재 x
-0.500
손실 f(x)
2.000
기울기 f'(x)
0.000
걸음 크기 |η·f'|
0.000
한 걸음 을 눌러 보세요. 곡선은 손실 함수, 노란 공은 현재 파라미터 값입니다. 초록 화살표는 그 지점의 기울기(접선) 이고, 공은 매 걸음마다 기울기의 반대쪽으로 η 배만큼 굴러갑니다.

알고리즘 (한 변수 → 여러 변수)

# f(x) = x⁴/4 − x³/3 − x² + 2  (위 시뮬레이터의 손실 곡선)
def f(x):      return x**4/4 - x**3/3 - x**2 + 2
def grad(x):   return x**3 - x**2 - 2*x        # f'(x)

x   = -0.5          # 시작 위치 (초기 파라미터)
eta = 0.1           # 학습률 η

for step in range(100):
    g = grad(x)
    x = x - eta * g               # ★ 핵심 한 줄: 기울기 반대 방향으로 이동
    if abs(g) < 1e-4:            # 기울기가 거의 0 = 바닥 도착
        break

# 파라미터가 여러 개면 x 대신 벡터 w, grad 대신 편미분 벡터(그래디언트)
#   w = w - eta * ∇L(w)     ← 딥러닝의 학습 루프도 근본은 이것
  • 기울기가 양수 → 오른쪽이 오르막 → x 를 왼쪽으로. 기울기가 음수 → x 를 오른쪽으로. 그래서 항상 - η·f'(x).
  • 바닥에 가까워질수록 기울기가 작아져 걸음도 저절로 작아진다 → 부드럽게 수렴.
  • 기울기 f'(x) 를 손으로 구하기 어려운 복잡한 모델은 역전파(backpropagation) 로 자동 계산한다.

실전 예제 — 점들에 직선 맞추기 (선형 회귀)

흩어진 점들을 가장 잘 지나가는 직선 y = w·x + b 를 찾는다. 손실은 평균제곱오차(MSE), 즉 각 점과 직선 사이 세로 거리를 제곱해 평균한 값. w, b 두 개의 기울기를 따라 직선이 스스로 돌아가 자리를 잡는다.

반복
0
기울기 w
0.000
절편 b
0.000
손실 MSE
–
한 걸음 을 누르면 현재 직선의 오차를 재고, w 와 b 를 각각의 기울기 반대 방향으로 조금씩 조정합니다. MSE 그래프가 점점 0에 가까워지는 걸 보세요.

학습률과 함정 — 무엇이 잘못될 수 있나

상황증상대처
η 너무 작음수백·수천 걸음을 걸어도 바닥 근처에도 못 감 (학습이 안 끝남)η 키우기 / 스케줄링
η 적당함몇 걸음 만에 손실이 매끄럽게 감소해 최솟값에 안착그대로
η 너무 큼골짜기를 가로질러 반대편으로 튕김 → 손실이 진동하거나 발산(NaN)η 줄이기
지역 최솟값 / 안장점더 낮은 골짜기가 있는데 얕은 웅덩이에 갇힘, 기울기 0이라 멈춤모멘텀·Adam, 여러 시작점
특성 스케일 제각각어떤 축은 가파르고 어떤 축은 완만해 지그재그로 느리게 감정규화(스케일링)
  • 배치(Batch) GD: 매 걸음 전체 데이터로 기울기 계산 — 정확하지만 느림.
  • 확률적(SGD): 데이터 한 개(또는 소량)로 기울기 추정 — 빠르고 지역 최솟값을 잘 빠져나오지만 노이즈가 큼.
  • 미니배치: 32~256개씩 묶어서 — 둘의 절충, 딥러닝의 사실상 표준.
  • 모멘텀 / Adam: 이전 걸음의 방향을 관성처럼 누적해 진동을 줄이고 평평한 구간을 빨리 통과.