기계학습 기초 · 최적화

경사 하강법과 지그재그 현상

직관에서 출발해 고윳값 분해와 모멘텀 이론까지, 단계적으로 깊어지는 인터랙티브 학습자료. “왜 학습이 골짜기를 튕기며 갈까?”라는 하나의 질문을 세 가지 깊이로 답합니다.

LEVEL 1 · 입문
언덕 내려가기

짙은 안개 속 산비탈에 서 있다고 상상해 봅시다. 목표는 골짜기 바닥에 도달하는 것인데, 보이는 것은 발밑 경사뿐입니다. 합리적인 전략은 하나입니다. 가장 가파르게 내려가는 방향으로 한 걸음 딛고, 다시 발밑을 확인한다. 이것이 경사 하강법의 전부입니다.

기계학습에서 “산의 높이”는 모델이 틀린 정도, 즉 손실 함수 L이고, “내가 선 위치”는 모델의 파라미터 w입니다. 발밑 경사는 미분값 L′(w)입니다.

wk+1 = wk − η · L′(wk) η(eta) = 학습률(learning rate), 한 걸음의 크기 · k = 반복 횟수

기울기 앞에 붙은 마이너스 부호가 핵심입니다. 기울기는 “올라가는 방향”을 가리키므로, 반대로 가야 내려갑니다. 기울기가 가파르면 크게, 평평하면 작게 움직이므로 바닥 근처에서는 저절로 조심스러워집니다.

한 문장 요약

경사 하강법 = 지금 위치의 기울기 반대 방향으로, 학습률만큼 이동하기를 반복. 알고리즘은 세 줄이지만, 잘 작동시키는 일은 전적으로 η에 달려 있습니다.

학습률 하나로 갈리는 네 가지 운명

가장 단순한 그릇 L(w) = w2을 봅시다. 여기서 w는 모델의 파라미터(위 비유에서 "내가 선 위치")이고, L은 손실("산의 높이")입니다. w = 0일 때 손실이 0으로 가장 낮으니, 바닥은 원점입니다. 기울기는 2w이므로 갱신식은 아래처럼 곱셈 한 번으로 정리됩니다. 이 한 줄이 뒤에 나올 모든 이야기의 씨앗입니다.

wk+1 = wk − η·2wk = (1 − 2η) wk 매 반복마다 위치에 (1 − 2η)가 곱해진다 → 이 값의 부호와 크기가 모든 것을 결정한다

먼저, 손으로 계산되는 예제 하나

슬라이더를 만지기 전에 숫자를 직접 따라가 봅시다. 출발점은 w0 = 1, 학습률은 η = 0.1. 필요한 것은 곱셈뿐입니다.

L′(1) = 2×1 = 2  →   w1 = 1 − 0.1×2 = 0.8 기울기 2는 “올라가는 방향”이니 반대로 간다 · 한 걸음의 폭은 η × 기울기 = 0.2

두 번째 걸음부터는 미분을 다시 할 필요조차 없습니다. 위 식대로 배율 1−2η = 0.8을 계속 곱하기만 하면 됩니다.

kwk어떻게 나왔나손실 L = wk2
01출발점1
10.80.8×10.64
20.640.8×0.80.4096
30.5120.8×0.640.262
40.40960.8×0.5120.168
50.327680.8×0.40960.107
여기까지가 경사 하강법의 전부

위치는 매 걸음 0.8배, 손실은 0.64배(= 0.82)씩 줄어듭니다. 바닥(0)에 정확히 닿지는 못하고 한없이 가까워질 뿐입니다. 손실이 절반이 되는 데 약 1.6걸음이 걸리니 10걸음이면 대략 1/100이 됩니다. 아래 슬라이더로 이 0.8을 직접 바꿔 보세요.

데모 1 — 학습률 슬라이더

η를 움직이며 파란 점이 바닥으로 가는 경로를 관찰하세요. 0.5를 넘는 순간 점이 반대편으로 뛰어넘기 시작합니다.

배율 (1−2η)0.800
최종 |w|—
10⁻³ 도달까지—

실험해 보면 η의 값에 따라 완전히 다른 네 개의 체제(regime)가 나타납니다. 배율 r = 1 − 2η의 부호와 절댓값만 보면 됩니다.

학습률 범위배율 r = 1−2η행동비유
0 < η < 0.50 < r < 1단조 수렴 — 한쪽에서만 접근, 부호 유지조심스레 걸어 내려감
0.5 < η < 1−1 < r < 0진동하며 수렴 — 매번 반대편으로 넘어가되 진폭은 줄어듦좌우로 튕기며 가라앉음
η = 1r = −1영구 순환 — 두 점 사이를 영원히 왕복제자리 진자 운동
η > 1|r| > 1발산 — 진폭이 커지며 튕겨 나감골짜기 밖으로 날아감

이 네 줄이 실제로 어떤 숫자인지, 모두 같은 출발점 w0=1에서 나란히 놓아 봅시다. 하는 일은 앞의 표와 똑같습니다 — 배율 r을 계속 곱할 뿐입니다.

η배율 rw0w1w2w3w4무슨 일이 벌어지나
0.1+0.810.80.640.5120.4096부호 그대로, 한쪽에서만 접근
0.5010000한 걸음에 정확히 바닥
0.9−0.81−0.80.64−0.5120.4096매번 반대편으로 넘어가되 진폭은 줄어듦
1.0−11−11−11영원히 두 점 왕복
1.2−1.41−1.41.96−2.7443.8416진폭이 커지며 튕겨 나감
첫째 줄과 셋째 줄을 비교해 보세요

η=0.1과 η=0.9는 부호만 다르고 크기가 완전히 같습니다(0.8, 0.64, 0.512 …). 배율이 각각 +0.8과 −0.8이기 때문입니다. 학습률을 아홉 배로 키웠는데 수렴 속도는 조금도 빨라지지 않고, 요란하게 진동만 하게 된 것입니다. 즉 “진동한다”와 “느리다”는 서로 다른 문제입니다. 가장 빠른 값은 그 둘 사이인 η=0.5이고, 여기서 배율이 0이 되어 단 한 걸음에 끝납니다.

첫 번째 통찰

진동은 학습률이 조금 큰 상태, 발산은 많이 큰 상태입니다. 둘은 종류가 다른 고장이 아니라 같은 축 위의 정도 차이입니다. 그래서 손실 곡선이 톱니처럼 흔들리기 시작하면 “곧 터질 수도 있다”는 조기 경보로 읽어야 합니다.

일반적인 함수에서는 2 대신 곡률(2계 미분) L이 들어가, 수렴 조건이 η < 2/L이 됩니다. 즉 가장 가파르게 휘는 곳의 곡률이 학습률의 상한을 정합니다. 이 사실이 다음 장의 지그재그를 낳습니다.

LEVEL 2 · 학부
골짜기와 지그재그

파라미터가 여럿이면 미분은 그래디언트(편미분 벡터) ∇L이 되고, 갱신식의 모양은 그대로입니다.

wk+1 = wk − η ∇L(wk),   ∇L = (∂L/∂w1, …, ∂L/∂wn) ∇L은 등고선에 항상 수직이며 가장 가파른 상승 방향을 가리킨다

여기서 결정적인 사실이 하나 있습니다. “가장 가파른 방향”은 “최솟값을 향하는 방향”이 아닙니다. 등고선이 동그란 그릇이면 둘이 일치하지만, 길쭉한 골짜기 모양이면 그래디언트는 골짜기 바닥을 따라가는 대신 양쪽 벽을 향해 거의 수직으로 서게 됩니다. 그 결과가 지그재그입니다.

아래 지형은 L(x,y) = ½(x2/κ + y2) 입니다. κ가 커질수록 등고선이 옆으로 길게 늘어나 좁고 깊은 협곡이 됩니다.

데모 2 — 골짜기 탐험기 (캔버스를 눌러 시작점 이동)

κ를 키우면 골짜기가 좁아지고, η를 올리면 세로 방향으로 튕기기 시작합니다. β(모멘텀)를 올려 지그재그가 어떻게 눌리는지 확인하세요.

경로 등고선 발산 구간
수렴 한계 2/λmax2.00
세로축 배율 1−η−0.50
가로축 배율 1−η/κ0.925
손실이 1/1000 되는 데—

지그재그는 왜 생기는가 — 축별 분해

이 지형에서는 두 축이 서로 간섭하지 않으므로, 벡터 갱신식을 두 개의 독립적인 1차원 문제로 쪼갤 수 있습니다. 이것이 지그재그를 이해하는 가장 명확한 방법입니다.

xk+1 = (1 − ηλx) xk   ·   yk+1 = (1 − ηλy) yk λ는 각 축의 곡률(헤세 행렬의 고윳값). 여기서 λx = 1/κ (완만), λy = 1 (가파름)

같은 η를 쓰지만 각 축이 느끼는 배율은 서로 다릅니다. 곡률이 큰 축은 ηλ가 커서 배율이 음수가 되기 쉽고(→ 부호가 매번 뒤집힘 = 진동), 곡률이 작은 축은 배율이 1에 가까워 거의 움직이지 않습니다(→ 답답한 전진).

데모 3 — 두 축의 좌표 수열

위: 완만한 축(x) · 아래: 가파른 축(y). 막대가 기준선 위아래로 번갈아 서면 그것이 지그재그의 정체입니다. 데모 2의 슬라이더와 실시간으로 연동됩니다. 막대 높이는 압축(0.35승) 스케일 — 급감하는 진폭에서도 부호 교대가 보이도록 한 것입니다.

세로축 부호 교대—
가로축 진행률—
지그재그의 정체

지그재그는 알고리즘의 버그가 아니라 “가파른 축은 이미 과도하게, 완만한 축은 여전히 부족하게” 움직이는 상태입니다. 하나의 η로 서로 다른 곡률의 축들을 동시에 만족시킬 수 없기 때문에 생기는 구조적 갈등입니다. 진행은 완만한 축이 결정하고, 안정성은 가파른 축이 결정합니다.

조건수 κ와 학습률의 딜레마

두 축의 곡률 비율을 조건수(condition number)라 부릅니다.

κ = λmaxλmin κ = 1이면 완벽한 원형 그릇, κ가 클수록 좁고 긴 협곡 (ill-conditioned)

이제 딜레마가 선명해집니다.

η를 λmax에 맞추면 λmin 방향은 ηλmin ≈ 2/κ만큼만 줄어들어 κ가 클수록 기어갑니다. 반대로 λmin에 맞춰 η를 키우면 λmax 방향이 폭발합니다. κ가 곧 문제의 난이도인 셈입니다.

실제 신경망에서 κ는 흔히 10³~10⁶에 이릅니다. 입력 특징의 스케일이 제각각이거나(예: 나이 0–100 vs 소득 0–10⁸), 층이 깊어 그래디언트 크기가 층마다 크게 다를 때 κ가 급격히 커집니다.

숫자로 따라가기 — 한 예제의 10걸음

LEVEL 1의 1차원 예제에 축을 하나 더한 것이 이번 예제입니다. 달라지는 것은 딱 하나 — 두 축의 곡률이 다르다는 점, 즉 κ > 1입니다. 앞에서는 배율이 1−2η 하나뿐이었지만, 이제는 축마다 배율이 따로 생깁니다. 아래 숫자는 전부 손으로 검산할 수 있으며, 데모 2를 κ=10, η=1.6으로 맞추면 같은 경로를 눈으로 볼 수 있습니다.

이번 예제의 설정

첫 걸음을 손으로

기울기는 각 변수로 편미분하면 됩니다. ∂L/∂x = x/10, ∂L/∂y = y이므로 시작점에서 ∇L = (0.5, 2)입니다. 이제 갱신식에 그대로 넣습니다.

x1 = 5 − 1.6 × 0.5 = 4.2  ·   y1 = 2 − 1.6 × 2 = −1.2 y는 2만 내려가면 바닥인데 3.2를 갔다 → 1.2만큼 지나쳐서 반대편 벽에 붙었다

단 한 걸음에 지그재그의 씨앗이 심어졌습니다. 게다가 방향 자체가 어긋나 있습니다. 최솟값은 왼쪽으로 5, 아래로 2 떨어져 있는데, 그래디언트 반대 방향은 왼쪽으로 0.5, 아래로 2를 가리킵니다. 두 방향의 각도 차이는 약 54°. “가장 가파른 방향”이 “가야 할 방향”이 아니라는 말이 이 숫자입니다.

그림 A — 이 예제의 10걸음 경로

점선은 시작점에서 최솟값을 향하는 방향, 파란 선은 실제 경로입니다. 첫 걸음(k=0→1)이 점선과 54° 어긋난 채 바닥을 지나쳐 반대편으로 넘어가고, 그때부터 경로가 톱니처럼 접힙니다. 숫자는 반복 횟수 k. 가로축이 확대되어 그려져 화면상 각도는 실제 값과 다릅니다.

경사 하강법 경로 (η=1.6) 등고선 최솟값 방향

두 번째 걸음부터는 계산을 반복할 필요도 없습니다. 축별로 배율 곱셈일 뿐이니까요.

xk+1 = (1 − 1.6×0.1) xk = 0.84 xk   ·   yk+1 = (1 − 1.6×1) yk = −0.6 yk 가로축 배율은 양수(부호 유지·느린 전진), 세로축 배율은 음수(매번 부호 뒤집힘 = 지그재그)

10걸음 전체

kxk 완만 · 매번 ×0.84yk 가파름 · 매번 ×(−0.6)손실 Lk
05.0002.0003.250
14.200−1.2001.602
23.5280.7200.882
32.964−0.4320.532
42.4890.2590.343
52.091−0.1560.231
61.7560.0930.159
71.475−0.0560.110
81.2390.0340.077
91.041−0.0200.054
100.8750.0120.038

이 표에서 읽어야 할 것은 세 가지입니다.

  1. y 열의 부호가 +, −, +, − 로 완벽하게 교대합니다. 크기는 매번 0.6배로 줄지만 방향은 매번 반대입니다. 화면에서 보이는 지그재그가 바로 이 열입니다.
  2. x 열은 부호를 한 번도 바꾸지 않고 0.84배씩만 줄어듭니다. 진동은 없지만 답답합니다. 10걸음을 걸었는데 5에서 0.87까지밖에 못 왔습니다.
  3. 손실은 처음 두 걸음에 3.25 → 0.88로 73% 떨어진 뒤 급격히 둔해집니다. 초반 하락은 대부분 y가 정리되면서 생긴 것이고, y가 사라진 뒤에는 느린 x만 남기 때문입니다. 실제 학습 곡선에서 흔히 보는 “초반 급락 후 정체”가 이 구조입니다.

그림 B — 두 축의 값을 나란히

같은 10걸음을 축별로 분리한 것입니다(가로축은 반복 k, 세로축은 좌표값). y는 0선을 매번 가로지르며 튕기고, x는 한 번도 0선을 넘지 않고 완만하게 미끄러집니다. 지그재그는 주황 선, 학습이 끝나지 않는 이유는 초록 선입니다.

xk — 완만한 축 (λ=0.1) yk — 가파른 축 (λ=1)

수치로 확인하면 격차가 분명합니다. 10걸음 뒤 y는 처음의 0.6%까지 줄었지만 x는 아직 17.5%가 남아 있습니다. 각 축이 1/1000까지 줄어드는 데 필요한 걸음 수는 y축이 14회, x축이 40회입니다. 즉 전체 학습 시간의 3분의 2 가까이가 이미 조용해진 세로축을 데리고 가로축을 기다리는 시간입니다.

η를 바꿨다면 — 같은 지형, 다섯 가지 선택

η가로 배율 1−η/10세로 배율 1−η1/1000 도달무슨 일이 벌어지나
0.5+0.950+0.500135회진동은 전혀 없다. 대신 가로축이 거의 멈춰 있어 가장 느리다.
1.0+0.9000.00066회세로축이 단 한 걸음에 정확히 0. 지그재그가 완전히 사라지는데도 여전히 66회.
1.6+0.840−0.60040회세로축은 진동, 가로축은 전진. 위 표의 예제.
1.818+0.818−0.81835회최적 η★ = 2/(0.1+1). 두 배율의 절댓값이 같아지는 점 — 가장 빠른데 진동은 가장 심하다.
2.1+0.790−1.100발산세로 배율의 절댓값이 1을 넘어 진폭이 매 걸음 1.1배로 커진다.
이 표가 말하는 것

η를 1.0으로 낮추면 지그재그는 완전히 없어집니다. 그런데 수렴은 오히려 1.9배 느려집니다(35회 → 66회). 진동을 없애는 것과 빨리 수렴하는 것은 같은 목표가 아닙니다. 최적점 η★=1.818은 진동을 감수하고 고른 값이며, 거기서도 40걸음 남짓이 필요한 이유는 순전히 κ=10이라는 지형 탓입니다.

그림 C — η 다섯 개의 손실 곡선

세로축은 로그 스케일입니다. 위 표를 그림으로 옮긴 것으로, 기울기가 가파를수록 빠른 학습입니다. η=0.5(회색)는 매끈하지만 가장 완만하고, η=2.1(빨강)만 위로 치솟아 발산합니다. 진동하는 η=1.6·1.818이 오히려 아래쪽에 있다는 점을 보세요.

η=0.5 (진동 없음, 가장 느림) η=1.0 (진동 없음) η=1.6 (예제) η★=1.818 (최적) η=2.1 (발산)

같은 예제에 모멘텀을 얹으면

이 지형의 이론적 최적값은 β★ = 0.270, η★ = 2.309입니다(κ=10이라 β가 관행값 0.9보다 훨씬 작습니다). 같은 시작점에서 손실을 나란히 놓으면 이렇습니다.

k02456810
경사 하강법 (η=1.6)3.2500.8820.3430.2310.1590.0770.0383
모멘텀 (η★, β★)3.2502.7260.5880.2320.0860.0110.0012

초반 네 걸음은 모멘텀이 오히려 손해입니다. 관성 때문에 더 크게 넘어가 k=2에서는 손실이 3배 넘게 높습니다. 그러다 5번째 걸음에서 따라잡고, 10번째 걸음에서는 33배 앞섭니다. 모멘텀은 “첫 걸음을 잘 딛는 방법”이 아니라 “반복이 쌓일수록 유리해지는 방법”입니다. 몇 걸음만 보고 옵티마이저를 판단하면 안 되는 이유이기도 합니다.

그림 D — 경사 하강법 vs 모멘텀, 같은 시작점

왼쪽은 경로, 오른쪽은 손실입니다. 모멘텀(주황)은 초반에 더 크게 넘어갔다가 진동이 스스로 상쇄되며 중심으로 빨려 들어갑니다. 오른쪽 그래프에서 두 선이 교차하는 5번째 걸음이 역전 지점입니다.

경사 하강법 (η=1.6) 모멘텀 (η★=2.309, β★=0.270)
직접 확인해 보려면 데모 2를 κ=10, η=1.6, β=0으로 맞춘 뒤 캔버스의 오른쪽 위(x≈5, y≈2)를 눌러 시작점을 옮기고 ▶ 애니메이션을 누르세요. 데모 3의 위·아래 막대그래프가 각각 위 표의 x 열과 y 열에 대응합니다. 그다음 β만 0.27로 올리면 지그재그가 눌리는 모습이 보입니다. 마지막 모멘텀 비교(η★=2.309, β★=0.270)는 데모 4의 κ를 10으로 맞추면 같은 파라미터 그대로 재현됩니다.

LEVEL 3 · 심화
최적 학습률과 수렴 속도의 한계

이차 함수라면 최적의 η를 정확히 계산할 수 있습니다. 모든 축의 배율 중 최댓값 maxi |1 − ηλi|를 최소화하면 되는데, 이는 양 끝 두 개, 즉 |1−ηλmin|과 |1−ηλmax|가 같아지는 지점입니다.

η★ = 2λmin + λmax   ⟹   ρ = κ − 1κ + 1,  ‖wk − w★‖ ≤ ρk‖w0 − w★‖ ρ = 반복당 오차 감소 비율. 최적으로 튜닝해도 완만한 축은 여전히 진동하며 수렴한다.

주목할 점: 최적 학습률에서도 지그재그는 사라지지 않습니다. 정의상 η★λmax = 2κ/(κ+1) > 1이므로 가파른 축의 배율은 항상 음수입니다. 최적점은 “진동 없음”이 아니라 “진동의 감쇠 속도와 전진 속도가 정확히 균형을 이루는 점”입니다.

조건수 κ최적 ρ = (κ−1)/(κ+1)오차 1/1000 반복 수모멘텀 사용 시절감
100.81835113.2×
500.961173256.9×
1000.980346359.9×
1,0000.9983,45411031×
10,0000.999834,539346100×

반복 수가 κ에 선형으로 늘어납니다. κ가 10배가 되면 학습 시간도 10배입니다. 그런데 마지막 열이 말하듯, 모멘텀을 쓰면 이 의존성이 κ로 떨어집니다 — 이것이 다음 절의 핵심입니다.

처방 다섯 가지

① 문제 자체를 동그랗게 — 정규화

가장 근본적인 해법은 알고리즘이 아니라 지형을 바꾸는 것입니다. 입력 특징을 표준화(평균 0, 분산 1)하거나 배치 정규화·층 정규화를 넣으면 헤세 행렬의 고윳값 분포가 좁아져 κ 자체가 줄어듭니다. 데모 2에서 κ=1 버튼을 누르면 경로가 단 한 걸음의 직선이 되는 것을 볼 수 있습니다. 지그재그 대응책 중 비용 대비 효과가 가장 큽니다.

② 진동을 상쇄시키기 — 모멘텀 (Heavy Ball)

이전 이동 방향을 관성으로 누적합니다. 공이 골짜기를 구르듯 움직인다는 비유에서 이름이 왔습니다.

vk+1 = β vk + ∇L(wk),   wk+1 = wk − η vk+1 β는 보통 0.9. β=0이면 순수 경사 하강법과 같다.

왜 지그재그가 줄어들까요? 부호 때문입니다. 진동하는 축의 그래디언트는 +, −, +, −로 번갈아 나타나므로 누적하면 서로 상쇄됩니다. 반면 골짜기를 따라가는 축의 그래디언트는 계속 같은 부호라 누적되어 실효 보폭이 최대 1/(1−β)배(β=0.9면 10배)까지 커집니다. 억눌러야 할 방향은 억누르고, 밀어야 할 방향은 미는 셈입니다.

β★ = (κ − 1)2(κ + 1)2,   η★ = 4(λmin + λmax)2  ⟹  ρ = κ − 1κ + 1 κ → √κ. 조건수 10,000인 문제에서 필요한 반복이 34,539 → 346으로 줄어든다.
주의 — β는 클수록 좋은 값이 아닙니다. 감쇠가 걸린(underdamped) 영역에서는 모든 축이 똑같이 √β 비율로 수렴합니다. 이것이 κ 의존성을 없애 주는 원리이지만, 동시에 β가 문제의 κ에 비해 과하면 원래 빨랐던 축까지 √β로 느려집니다. 관행적인 β=0.9는 κ ≳ 38부터 최적 튜닝된 경사 하강법을 앞지르고, β=0.9가 정확히 최적이 되는 지점은 κ ≈ 1,442입니다. 반대로 κ가 그보다 작은 문제에서는 β=0.9가 오히려 손해입니다. η와 β는 항상 함께 튜닝하세요.

Nesterov 가속 경사법(NAG)은 “먼저 관성만큼 미리 가본 뒤 그 지점의 기울기를 재는” 변형으로, 과도한 오버슈트를 한 박자 먼저 교정합니다. 일반 볼록 함수에서 O(1/k2) 수렴률을 보장하며, 이는 1차 방법이 도달 가능한 이론적 최적입니다.

③ 축마다 다른 보폭 — 적응적 방법 (RMSProp · Adam)

“하나의 η로 모든 축을 감당할 수 없다”는 것이 문제였으니, 축마다 η를 다르게 주자는 접근입니다. 최근 그래디언트 제곱의 이동 평균으로 각 축을 나눠 줍니다.

mk = β1mk−1 + (1−β1)gk,  vk = β2vk−1 + (1−β2)gk2,  wk+1 = wk − η m̂kv̂k + ε Adam = 모멘텀(m) + 축별 스케일링(v) + 초기 편향 보정(m̂, v̂)

그래디언트가 큰(가파른) 축은 v가 커서 자동으로 보폭이 줄고, 작은 축은 늘어납니다. 대각 근사 전처리(diagonal preconditioning)로 κ를 실질적으로 낮추는 것과 같습니다. 다만 축이 회전된 골짜기(변수 간 상관이 큰 경우)에는 대각 성분만으로 부족해 효과가 제한됩니다.

④ 곡률을 직접 쓰기 — 2차 방법

뉴턴법 wk+1 = wk − H−1∇L은 헤세 행렬의 역행렬을 곱해 지형을 완벽한 원으로 되돌립니다(실질 κ = 1). 이차 함수라면 단 한 걸음에 끝납니다. 문제는 파라미터 n개일 때 H가 n×n이라 딥러닝(n ≈ 10⁹)에서는 계산이 불가능하다는 점. 그래서 L-BFGS(저계수 근사), K-FAC(크로네커 인수분해), Shampoo 같은 근사 2차 방법이 쓰입니다.

⑤ 걸음 폭을 시간에 따라 줄이기 — 스케줄과 클리핑

초반에는 큰 η로 빠르게 내려오고 후반에는 줄여 진동을 잠재우는 학습률 스케줄(step decay, cosine annealing)이 표준입니다. 초반 발산을 막는 워밍업, 그래디언트 폭발을 잘라내는 클리핑도 함께 쓰입니다. 다만 이들은 증상 완화이지 κ를 줄이지는 않습니다.

구분해야 할 두 종류의 흔들림. 여기서 다룬 지그재그는 결정론적 진동으로, 학습률이 곡률에 비해 클 때 생깁니다. 반면 SGD의 손실 곡선이 떠는 것은 미니배치마다 그래디언트 추정이 달라서 생기는 확률적 노이즈입니다. 전자는 η를 낮추거나 지형을 고쳐야 하고, 후자는 배치 크기를 키우거나 평균을 내야 합니다. 처방이 다르므로 진단을 먼저 하세요.

비교 실험실

같은 골짜기, 같은 시작점, 같은 반복 횟수에서 세 방법의 경로를 겹쳐 봅니다.

데모 4 — GD vs 모멘텀 vs Adam

경사 하강법과 모멘텀 모두 이론적 최적 파라미터(η★, β★)를 씁니다. 그런데도 파란 경로는 끝까지 벽을 튕기며 기어가고, 주황 경로는 초반에 관성으로 크게 한 번 휘돈 뒤 진동이 스스로 상쇄되며 정확히 안착합니다. κ를 키울수록 아래 손실 곡선의 격차가 벌어집니다.

경사 하강법 모멘텀 (최적 β★) Adam

손실 곡선 (로그 스케일)

GD 최종 손실—
모멘텀 최종 손실—
Adam 최종 손실—
사용된 β★—
수렴률 κ vs √κ—

진단 가이드 — 증상에서 처방까지

증상가장 흔한 원인먼저 해볼 것
손실이 NaN/Inf가 됨η > 2/λmax (발산)η를 1/3~1/10로, 워밍업, 그래디언트 클리핑
손실이 톱니처럼 크게 진동하며 잘 안 줄어듦η가 임계값 근처 (지그재그)η 절반으로 ↓, 모멘텀 β=0.9, 입력 정규화
손실이 거의 평평하게 아주 천천히 감소η 과소 또는 κ 과대η ↑, 정규화, Adam, 학습률 탐색(LR range test)
초반엔 빠르다가 중반에 정체좁은 골짜기 진입, κ 유효값 상승모멘텀/Nesterov, cosine 스케줄
학습 손실만 흔들리고 추세는 하락미니배치 노이즈 (지그재그 아님)배치 크기 ↑, EMA 평활화 후 재판단
일부 층만 학습되고 나머지는 정체층간 그래디언트 스케일 불균형층별 학습률, 정규화 층 추가, 가중치 초기화 점검

핵심 정리 카드

  1. 갱신식 w ← w − η∇L. 마이너스가 “내려간다”를 만든다.
  2. 수렴 조건 η < 2/λmax. 가장 가파른 축이 상한을 정한다.
  3. 지그재그 조건 1/λmax < η < 2/λmax. 배율이 음수가 되어 부호가 매 반복 뒤집힌다.
  4. 원인은 큰 조건수 κ = λmax/λmin. 하나의 η로 여러 곡률을 만족시킬 수 없다.
  5. 최적 η는 2/(λmin+λmax), 수렴률 (κ−1)/(κ+1) — 반복 수가 κ에 비례.
  6. 모멘텀은 이를 κ로 낮춘다. 진동 성분은 상쇄, 일관된 성분은 누적되기 때문.
  7. 가장 먼저 할 일은 옵티마이저 교체가 아니라 입력·활성값 정규화로 κ 자체를 줄이는 것.