검색
← 모듈 로드맵

Distill 해설 글 모음

글 · 준전문가 · Distill

원제 · Distill

고윳값 분해로 경사 하강과 모멘텀의 수렴 속도를 계산해 보는 Distill 모멘텀 글 수업

먼저 알아야 할 것

경사 하강법고윳값 · 고유벡터모멘텀 갱신식2차 함수

다루는 내용

Distill의 「Why Momentum Really Works」(Goh, 2017)를 바탕으로 한 자체 수업입니다. 2차 손실을 고윳값 방향으로 쪼개 경사 하강의 속도가 조건수 κ에 대해 (κ−1)/(κ+1)임을 보이고, 최적 모멘텀이 이를 (√κ−1)/(√κ+1)로 바꿔 조건수 100에서 걸음 수를 약 10분의 1로 줄이는 것을 계산합니다. 수렴 범위와 초반 출렁임, 같은 학술지 어텐션 글의 핵심도 짧게 다룹니다.

해설

Distill 해설 글 모음 — 수업: 모멘텀은 왜 정말 효과가 있나

온라인 학술지 Distill의 대표 글 「Why Momentum Really Works」(Gabriel Goh, 2017)의 논리를 우리 말로 다시 짠 수업입니다. 경사 하강법이 좁은 골짜기에서 느린 이유를 고윳값으로 쪼개 보고, 모멘텀이 수렴 속도를 "조건수의 제곱근" 수준으로 바꾸는 과정을 2차 함수에서 직접 계산합니다. 끝에 같은 학술지의 「어텐션과 증강 순환 신경망」(2016)이 어텐션을 어떻게 설명하는지도 짧게 봅니다.

항목내용
출처Distill(2016~2021, 온라인 학술지) · distill.pub · 중심 글: Gabriel Goh, "Why Momentum Really Works", 2017-04-04, distill.pub/2017/momentum
트랙 · 수준딥러닝 기초 · 중급
이 수업이 다루는 범위모멘텀 글의 2차 모델 분석(고윳값 분해 · 조건수 · 최적 매개변수 · 수렴 범위), 어텐션 글의 핵심 개념
형식원문 번역이 아닌 자체 해설 · 숫자 예는 해설용으로 직접 만든 것 · 식은 원 글 표기를 따름

들어가기 전에

  • 딥러닝 (Goodfellow) — 조건수 · 모멘텀 갱신식 · 적응형 학습률의 개요를 먼저 보고 오면, 이 수업은 그중 모멘텀을 정밀하게 파고드는 단계입니다.

한눈에 보기

  • 경사 하강법을 2차 함수에서 고윳값 방향으로 쪼개면, 방향마다 독립적인 '등비수열'이 된다는 것을 봅니다.
  • 조건수 κ\kappa가 크면 경사 하강의 수렴 속도가 (κ−1)/(κ+1)(\kappa-1)/(\kappa+1)로 1에 가까워져 느려지는 이유를 계산합니다.
  • 모멘텀을 최적으로 맞추면 속도가 (κ−1)/(κ+1)(\sqrt\kappa-1)/(\sqrt\kappa+1)가 되어, 조건수 100인 문제에서 필요한 걸음 수가 약 10분의 1로 줄어드는 것을 확인합니다.
  • 모멘텀이 처음 몇 걸음은 오히려 오차를 키울 수 있다는 점, 발산하지 않는 범위가 0<αλ<2+2β0 < \alpha\lambda < 2 + 2\beta라는 점을 압니다.
  • 어텐션을 "위치들에 대한 확률 분포로 가중합하기"로 이해합니다.

1. 경사 하강법을 고윳값으로 쪼개기

직관(해설용 비유): 타원 모양 그릇 바닥으로 구슬을 굴린다고 합시다. 그릇의 긴 축과 짧은 축 방향은 서로 간섭하지 않고 각자 따로 움직입니다. 짧은 축(가파른 방향)은 금방 바닥에 닿거나 튀고, 긴 축(완만한 방향)은 아주 천천히 갑니다. 전체 속도는 가장 느린 방향이 정합니다.

단계:

  1. 손실을 2차 함수 f(w)=12w⊤Aw−b⊤wf(w) = \frac12 w^\top A w - b^\top w로 둡니다. 실제 신경망 손실도 최저점 근처에서는 이 모양과 비슷합니다.
  2. 최적점은 w⋆=A−1bw^\star = A^{-1}b입니다.
  3. 대칭 행렬 AA를 고윳값 분해 A=Q diag(λ1,…,λn) Q⊤A = Q\,\mathrm{diag}(\lambda_1, \dots, \lambda_n)\,Q^\top 합니다.
  4. 좌표를 xk=Q⊤(wk−w⋆)x^k = Q^\top(w^k - w^\star)로 바꾸면, 경사 하강 wk+1=wk−α∇f(wk)w^{k+1} = w^k - \alpha\nabla f(w^k)가 방향마다 따로 놉니다.
xik+1=(1−αλi) xik⟹xik=(1−αλi)k xi0x_i^{k+1} = (1 - \alpha\lambda_i)\,x_i^k \quad\Longrightarrow\quad x_i^k = (1 - \alpha\lambda_i)^k\,x_i^0
기호뜻
AA곡률을 나타내는 대칭 행렬(헤세 행렬)
λi\lambda_iAA의 고윳값 — ii번째 방향의 곡률, 원 글은 λ1\lambda_1을 가장 작은 값, λn\lambda_n을 가장 큰 값으로 둠
xikx_i^kkk걸음 뒤 ii번째 고유 방향의 오차
α\alpha걸음 크기(학습률)
1−αλi1 - \alpha\lambda_i그 방향의 한 걸음 배율 — 절댓값이 1보다 작아야 수렴

숫자로 해 보기(해설용): 고윳값이 λ1=1\lambda_1 = 1, λ2=100\lambda_2 = 100인 2차원 문제입니다. 학습률 α=0.0198\alpha = 0.0198이면 두 방향 배율은 1−0.0198=0.98021 - 0.0198 = 0.9802와 1−1.98=−0.98021 - 1.98 = -0.9802입니다. 가파른 방향은 부호를 바꾸며 튀고(지그재그), 완만한 방향은 걸음마다 2%씩만 줄어듭니다. 두 배율의 절댓값이 같다는 점이 다음 절의 '최적 학습률'입니다.

왜 이렇게 하나: 많은 변수가 얽힌 문제를 서로 독립인 1차원 문제 여러 개로 바꾸면, 수렴 여부와 속도를 등비수열 하나로 읽을 수 있습니다. 원 글 전체가 이 한 가지 변환 위에서 진행됩니다.

2. 조건수와 경사 하강의 한계

단계:

  1. 학습률을 키우면 완만한 방향은 빨라지지만, 가파른 방향 배율 ∣1−αλn∣|1 - \alpha\lambda_n|이 1을 넘으면 발산합니다. 그래서 α<2/λn\alpha < 2/\lambda_n이어야 합니다.
  2. 가장 느린 방향의 배율과 가장 빠른 방향의 배율 절댓값을 같게 맞추는 것이 최선입니다.
  3. 그 값이 α=2/(λ1+λn)\alpha = 2/(\lambda_1 + \lambda_n)이고, 그때 전체 수렴 속도(한 걸음 배율)는 다음과 같습니다.
α⋆=2λ1+λn,속도=κ−1κ+1,κ:=λnλ1\alpha^\star = \frac{2}{\lambda_1 + \lambda_n}, \qquad \text{속도} = \frac{\kappa - 1}{\kappa + 1}, \qquad \kappa := \frac{\lambda_n}{\lambda_1}
기호뜻
κ\kappa조건수(condition number) — 가장 큰 곡률 ÷ 가장 작은 곡률
속도오차가 한 걸음마다 곱해지는 비율. 0에 가까울수록 빠름

숫자로 해 보기(해설용): κ=100\kappa = 100이면 α⋆=2/101≈0.0198\alpha^\star = 2/101 \approx 0.0198, 속도는 99/101≈0.980299/101 \approx 0.9802입니다. 오차를 1000분의 1로 줄이려면 0.9802k=10−30.9802^k = 10^{-3}, 즉 k=ln⁡(10−3)/ln⁡(0.9802)≈345k = \ln(10^{-3})/\ln(0.9802) \approx 345걸음이 필요합니다. 조건수가 1이면(완전한 원 모양 그릇) 속도 0, 한 걸음에 끝납니다.

3. 모멘텀: 무거운 공

직관: 2절의 공은 매 순간 경사만 보고 움직이는 '가벼운 공'입니다. 모멘텀은 공에 무게를 줍니다. 무거운 공은 좌우로 튀는 움직임이 서로 상쇄되고, 같은 방향으로 계속 미는 힘은 속도로 쌓입니다.

단계:

  1. 속도 zz를 두고, 매 걸음 이전 속도를 β\beta배로 줄인 뒤 현재 기울기를 더합니다.
  2. 그 속도에 α\alpha를 곱해 움직입니다.
  3. β=0\beta = 0이면 보통 경사 하강법과 같습니다.
zk+1=βzk+∇f(wk),wk+1=wk−αzk+1z^{k+1} = \beta z^{k} + \nabla f(w^{k}), \qquad w^{k+1} = w^{k} - \alpha z^{k+1}
기호뜻
zkz^k누적된 속도(지난 기울기의 감쇠 합)
β\beta속도를 얼마나 기억할지
α\alpha걸음 크기

숫자로 해 보기 ① 1차원(해설용): f(w)=12w2f(w) = \frac12 w^2(기울기 =w= w), 시작 w0=1w^0 = 1, z0=0z^0 = 0, α=0.5\alpha = 0.5, β=0.5\beta = 0.5입니다.

걸음모멘텀 zz모멘텀 ww보통 경사 하강 ww
110.50.5
2100.25
30.5−0.250.125
40−0.250.0625
5−0.25−0.1250.0313
6−0.2500.0156

모멘텀은 0을 지나쳐 반대편으로 갔다가 돌아오는 진동을 보입니다. 이 쉬운 1차원 문제(조건수 1)에서는 보통 경사 하강이 더 낫습니다. 모멘텀의 진가는 조건수가 클 때 드러납니다.

4. 최적 모멘텀: 조건수의 제곱근

원 글은 모멘텀도 고유 방향마다 쪼개 2×2 행렬의 반복으로 분석하고, 두 매개변수를 최적으로 고르면 다음을 얻습니다.

α=(2λ1+λn)2,β=(λn−λ1λn+λ1)2,속도=κ−1κ+1\alpha = \left(\frac{2}{\sqrt{\lambda_1} + \sqrt{\lambda_n}}\right)^2, \qquad \beta = \left(\frac{\sqrt{\lambda_n} - \sqrt{\lambda_1}}{\sqrt{\lambda_n} + \sqrt{\lambda_1}}\right)^2, \qquad \text{속도} = \frac{\sqrt\kappa - 1}{\sqrt\kappa + 1}

2절의 경사 하강 속도 (κ−1)/(κ+1)(\kappa-1)/(\kappa+1)에서 κ\kappa 자리에 κ\sqrt\kappa가 들어갔습니다. 원 글은 이를 "조건수에 제곱근을 씌운 셈"이라고 표현합니다.

숫자로 해 보기 ② 2차원(해설용): 다시 λ1=1\lambda_1 = 1, λ2=100\lambda_2 = 100, κ=10\sqrt\kappa = 10입니다.

경사 하강(최적)모멘텀(최적)
α\alpha2/101≈0.01982/101 \approx 0.0198(2/11)2≈0.0331(2/11)^2 \approx 0.0331
β\beta0(9/11)2≈0.6694(9/11)^2 \approx 0.6694
속도99/101≈0.980299/101 \approx 0.98029/11≈0.81829/11 \approx 0.8182
오차 1/1000까지 걸음 수(근사)약 345약 34

시작점 (1,1)(1, 1)에서 실제로 돌려 보면 오차 크기는 다음과 같습니다.

걸음102040
경사 하강1.160.9480.635
모멘텀2.610.6800.0242

주의할 점: 모멘텀은 처음 10걸음 동안 오히려 오차가 시작값보다 커졌습니다. 최적 β\beta에서는 두 고윳값이 겹쳐 오차에 걸음 수에 비례하는 항이 붙기 때문에, 처음엔 출렁이다가 나중에 훨씬 빨리 줄어듭니다. '속도'는 충분히 오래 돌렸을 때의 비율입니다.

5. 발산하지 않는 범위와 실전의 의미

원 글은 0≤β<10 \le \beta < 1일 때 모멘텀이 수렴하는 조건을 0<αλi<2+2β0 < \alpha\lambda_i < 2 + 2\beta로 줍니다. 경사 하강의 조건 0<αλi<20 < \alpha\lambda_i < 2보다 넓어서, 모멘텀은 걸음 크기를 거의 두 배까지 키울 수 있습니다.

숫자로 해 보기(해설용): β=0.9\beta = 0.9이면 αλ<3.8\alpha\lambda < 3.8까지 괜찮습니다. 가장 큰 곡률이 100이라면 경사 하강은 α<0.02\alpha < 0.02, 모멘텀은 α<0.038\alpha < 0.038입니다.

실전에서 읽는 법:

  • 실제 신경망은 2차 함수가 아니고 고윳값도 모르므로, 위 최적값을 그대로 계산해 쓰지는 않습니다. 대신 "조건수가 나쁜 문제일수록 β\beta를 1에 가깝게(예: 0.9 · 0.99)"라는 감각을 줍니다.
  • 학습 초반 손실이 출렁이는 것은 모멘텀의 정상적인 모습일 수 있습니다(4절).
  • 원 글은 이 밖에도 모멘텀의 물리적 해석(스프링에 매단 추, 감쇠 진동자와 임계 감쇠), 1차 방법이 넘을 수 없는 한계(네스테로프의 하한), 확률적 기울기에서의 모멘텀을 다룹니다.
mermaid
flowchart LR
  F[2차 손실 f w] --> E[고윳값 분해 A = Q Λ Qᵀ]
  E --> I[방향마다 독립된 1차원 문제]
  I --> G[경사 하강: 배율 1 − αλ]
  G --> K[속도 κ−1 / κ+1]
  I --> M[모멘텀: 2×2 반복]
  M --> S[속도 √κ−1 / √κ+1]
  K --> C[조건수 100: 약 345걸음]
  S --> C2[조건수 100: 약 34걸음]

6. 덧붙임: 「어텐션과 증강 순환 신경망」(2016)

Chris Olah와 Shan Carter(Google Brain)가 2016년 9월 8일 Distill에 쓴 글입니다. 순환 신경망(RNN)을 확장한 네 가지 방향을 다룹니다.

  • 신경 튜링 기계(Neural Turing Machines): 외부 메모리를 읽고 씁니다.
  • 어텐션 인터페이스(Attentional Interfaces): 입력의 일부에 집중합니다.
  • 적응형 계산 시간(Adaptive Computation Time): 단계마다 계산량을 바꿉니다.
  • 신경 프로그래머(Neural Programmer): 연산을 불러 프로그램을 만듭니다.

이 글이 어텐션을 설명하는 방식은 간단합니다. 모델이 "어디를 볼지"를 하나만 고르는 대신, 모든 위치에 대한 확률 분포를 내고 그 확률로 가중합합니다. 내용 기반 어텐션은 질의(query)와 각 항목의 내적으로 점수를 매긴 뒤 소프트맥스로 분포를 만듭니다.

숫자로 해 보기(해설용): 질의와 세 항목의 내적 점수가 (2,1,0)(2, 1, 0)이면 소프트맥스 가중치는 (0.665,0.245,0.090)(0.665, 0.245, 0.090)입니다. 항목 값이 (10,20,30)(10, 20, 30)이라면 어텐션 출력은 0.665⋅10+0.245⋅20+0.090⋅30≈14.250.665 \cdot 10 + 0.245 \cdot 20 + 0.090 \cdot 30 \approx 14.25입니다. 하나를 딱 고르지 않고 '부드럽게' 고르기 때문에 미분이 가능하고, 역전파로 "어디를 볼지"까지 학습됩니다. 자세한 내용은 어텐션 직관: 쿼리 · 키 · 값을 손으로 계산하기에서 다룹니다.

연습 문제

문제 1. 고윳값이 λ1=1\lambda_1 = 1, λn=4\lambda_n = 4일 때 경사 하강의 최적 학습률과 속도, 최적 모멘텀의 속도를 구하세요. 풀이: κ=4\kappa = 4. 경사 하강은 α=2/5=0.4\alpha = 2/5 = 0.4, 속도 3/5=0.63/5 = 0.6입니다. 모멘텀은 κ=2\sqrt\kappa = 2라 속도 1/3≈0.3331/3 \approx 0.333, α=(2/3)2≈0.444\alpha = (2/3)^2 \approx 0.444, β=(1/3)2≈0.111\beta = (1/3)^2 \approx 0.111입니다.

문제 2. 1절 예(λ=1,100\lambda = 1, 100)에서 학습률을 0.0210.021로 키우면 무슨 일이 생기나요? 풀이: 가파른 방향 배율이 1−2.1=−1.11 - 2.1 = -1.1로 절댓값이 1을 넘어 발산합니다.

문제 3. 경사 하강 속도 0.980.98과 모멘텀 속도 0.820.82로 오차를 100분의 1로 줄이는 걸음 수를 비교하세요. 풀이: ln⁡(0.01)/ln⁡(0.98)≈228\ln(0.01)/\ln(0.98) \approx 228, ln⁡(0.01)/ln⁡(0.82)≈23\ln(0.01)/\ln(0.82) \approx 23으로 약 10배 차이입니다.

문제 4. β=0.5\beta = 0.5인 모멘텀이 수렴하려면 αλ\alpha\lambda는 어디까지 허용되나요? 풀이: 2+2×0.5=32 + 2 \times 0.5 = 3 미만입니다.

스스로 점검

  1. 고윳값 분해를 하면 왜 분석이 쉬워지나요?
    • 답: 2차 함수에서 경사 하강이 고유 방향마다 서로 독립인 등비수열 xik=(1−αλi)kxi0x_i^k = (1-\alpha\lambda_i)^k x_i^0로 바뀌어, 방향별 배율만 보면 되기 때문입니다.
  2. 조건수가 클수록 경사 하강이 느린 이유는?
    • 답: 가장 가파른 방향 때문에 학습률을 2/λn2/\lambda_n 아래로 묶어야 하고, 그 학습률로는 가장 완만한 방향이 거의 움직이지 않아 속도 (κ−1)/(κ+1)(\kappa-1)/(\kappa+1)이 1에 가까워지기 때문입니다.
  3. 모멘텀이 처음에 오차를 키울 수 있다는 것은 무엇을 뜻하나요?
    • 답: 수렴 '속도'는 오래 돌렸을 때의 비율이고, 초반엔 진동 · 겹친 고윳값 때문에 출렁일 수 있다는 뜻입니다. 초반 몇 걸음만 보고 모멘텀이 나쁘다고 판단하면 안 됩니다.

용어 정리

용어쉬운 뜻
2차 모델(quadratic model)손실을 12w⊤Aw−b⊤w\frac12 w^\top A w - b^\top w 꼴로 근사한 것
고윳값 분해(eigendecomposition)대칭 행렬을 서로 직교하는 방향과 그 방향의 크기로 쪼개기
고윳값 λi\lambda_i그 방향의 곡률 — 클수록 가파름
조건수 κ\kappa가장 큰 고윳값 ÷ 가장 작은 고윳값
수렴 속도(rate)오차가 한 걸음마다 곱해지는 비율
모멘텀(momentum)지난 기울기를 속도로 쌓아 움직이는 방법, 무거운 공 방법이라고도 함
어텐션(attention)위치들에 대한 확률 분포로 가중합해 "어디를 볼지"를 부드럽게 고르는 방법

더 깊이 보려면

  • 원 글의 조작 가능한 그림 — 학습률 · 모멘텀 값을 바꿔 가며 수렴을 직접 볼 수 있습니다.
  • 원 글 뒷부분 — 다항식 회귀 · 색칠(colorization) 예제, "The Limits of Descent"(1차 방법의 한계), "Momentum with Stochastic Gradients"
  • 같은 학술지의 「Attention and Augmented Recurrent Neural Networks」 — 어텐션 이전의 RNN 확장 흐름

다음에 볼 것

라이선스

두 글 모두 그림과 글이 크리에이티브 커먼즈 저작자표시 CC BY 2.0입니다(따로 표시한 부분, 다른 출처에서 가져온 그림은 제외). 이 페이지는 원문을 번역한 것이 아니라 글의 논리를 바탕으로 새로 쓴 해설이며, 식은 원 글 표기를 따르고 숫자 예는 직접 계산했습니다. 그림은 옮기지 않았습니다.

출처

AI 원리부터 이해하기 · 딥러닝 기초 모듈

딥러닝 기초 모듈 학습

이 글은 딥러닝 기초 모듈의 학습 자료입니다. 전체 29개 자료 중 28번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

번역가능

CC BY