Linearism › 최적화 › OP.3

3장. 경사하강법의 수렴

최적화 · 2부. 반복 알고리즘

심화 · 약 15분 · 연습문제 5 · 그림 1

요약

하강 보조정리, 학습률 1/L, 볼록 함수에서 O(1/k) 수렴, 강볼록 함수에서 선형 수렴, 조건수와 지그재그, 직선 탐색

다변수 미적분 5장에서 경사하강법 xk+1=xk−η∇f(xk)\mathbf x_{k+1} = \mathbf x_k - \eta\nabla f(\mathbf x_k)를 배웠습니다. 이 장에서는 “얼마나 빨리 수렴하는가”를 정확히 따집니다. 학습률을 얼마로 잡아야 안전한지, 몇 번 반복하면 오차가 얼마로 줄어드는지, 길쭉한 골짜기에서 왜 느려지는지를 2장의 LL, mm, κ\kappa로 답합니다. 논문의 “converges at rate O(1/k)O(1/k)”, “linear convergence”를 읽을 수 있게 됩니다.

3.1 하강 보조정리

정리 3.1 (하강 보조정리). ff가 LL-매끄러우면(헤세 행렬의 고윳값 ≤L\le L) 모든 x,y\mathbf x, \mathbf y에 대해

f(y)≤f(x)+∇f(x)⊤(y−x)+L2∥y−x∥2.f(\mathbf y) \le f(\mathbf x) + \nabla f(\mathbf x)^\top(\mathbf y - \mathbf x) + \frac L2\|\mathbf y - \mathbf x\|^2.

함수가 이차함수보다 빨리 휘지 않는다는 뜻입니다. 1장의 1계 조건(접평면이 아래)과 짝을 이루어, 이번에는 이차함수가 위에서 덮습니다.

따름정리 3.2. η≤1/L\eta \le 1/L로 경사하강법을 한 번 하면

f(xk+1)≤f(xk)−η2∥∇f(xk)∥2.f(\mathbf x_{k+1}) \le f(\mathbf x_k) - \frac{\eta}{2}\|\nabla f(\mathbf x_k)\|^2.

증명. 정리 3.1에 y−x=−η∇f\mathbf y - \mathbf x = -\eta\nabla f를 넣으면 f(xk+1)≤f(xk)−η∥∇f∥2+Lη22∥∇f∥2f(\mathbf x_{k+1}) \le f(\mathbf x_k) - \eta\|\nabla f\|^2 + \frac{L\eta^2}{2}\|\nabla f\|^2이고, η≤1/L\eta \le 1/L이면 Lη2/2≤η/2L\eta^2/2 \le \eta/2입니다. □

그러므로 학습률이 1/L1/L 이하이면 매 단계 함숫값이 반드시 줄어듭니다. 그래디언트가 클수록 많이 줄어듭니다.

3.2 수렴 속도

정리 3.3 (볼록). ff가 볼록이고 LL-매끄러우며 η=1/L\eta = 1/L이면

f(xk)−f∗≤L∥x0−x∗∥22k.f(\mathbf x_k) - f^* \le \frac{L\|\mathbf x_0 - \mathbf x^*\|^2}{2k}.

오차가 1/k1/k에 비례해 줄어듭니다. 오차를 ε\varepsilon 이하로 만드는 데 약 L∥x0−x∗∥2/(2ε)L\|\mathbf x_0 - \mathbf x^*\|^2/(2\varepsilon)번이 필요합니다. 이를 O(1/k)O(1/k) 수렴이라 씁니다. (OO는 “상수배를 빼면 이만큼”이라는 뜻입니다.)

정리 3.4 (강볼록). ff가 mm-강볼록이고 LL-매끄러우며 η=1/L\eta = 1/L이면

f(xk)−f∗≤(1−1κ)k(f(x0)−f∗).f(\mathbf x_k) - f^* \le \left(1 - \frac1\kappa\right)^k(f(\mathbf x_0) - f^*).

오차가 매번 일정한 비율로 줄어드는 것을 선형 수렴(linear convergence)이라 합니다. 로그 눈금으로 그리면 직선이 되기 때문에 붙은 이름입니다. 정확도의 자릿수 하나를 얻는 데 약 κln⁡10≈2.3κ\kappa\ln10 \approx 2.3\kappa번이 듭니다.

O(1/k)O(1/k)와 선형 수렴의 차이는 큽니다. 오차를 10−610^{-6}로 줄이려면 O(1/k)O(1/k)는 약 10610^6번 단위가 필요하지만, κ=10\kappa = 10인 선형 수렴은 약 140140번이면 됩니다.

3.3 이차함수에서 정확히 보기

f(x)=12x⊤Axf(\mathbf x) = \frac12\mathbf x^\top A\mathbf x(AA의 고윳값 m=λ1≤⋯≤λn=Lm = \lambda_1 \le \dots \le \lambda_n = L)이면 경사하강법은

xk+1=(I−ηA)xk,\mathbf x_{k+1} = (I - \eta A)\mathbf x_k,

이고, 고유벡터 방향 성분은 매번 (1−ηλi)(1 - \eta\lambda_i)배가 됩니다.

  • 모든 ii에서 ∣1−ηλi∣<1|1 - \eta\lambda_i| < 1, 곧 0<η<2/L0 < \eta < 2/L이어야 수렴합니다. 이 범위를 넘으면 가장 가파른 방향에서 진동하며 발산합니다.
  • 가장 느린 방향의 수축률 max⁡i∣1−ηλi∣\max_i|1 - \eta\lambda_i|를 가장 작게 하는 학습률은 η∗=2m+L\eta^* = \frac{2}{m + L}이고, 그때 수축률은 κ−1κ+1\dfrac{\kappa - 1}{\kappa + 1}입니다.

예제 3.5. f=x2+50y2f = x^2 + 50y^2(λ=2,100\lambda = 2, 100, κ=50\kappa = 50). η<2/100=0.02\eta < 2/100 = 0.02이어야 수렴하고, 최적 학습률 η∗=2/102\eta^* = 2/102에서 수축률은 49/51≈0.9649/51 \approx 0.96입니다. yy 방향은 가파르고 xx 방향은 완만해서, 학습률을 yy에 맞추면 xx 방향으로 아주 느리게 갑니다. 경로는 골짜기 벽 사이를 지그재그로 오갑니다.

동그란 그릇(x² + y²)에서는 경로가 곧장 중심으로 가지만, 길쭉한 그릇(x² + 3y²)에서는 같은 학습률에서 지그재그가 생기고, 학습률이 2/λmax = 1/3을 넘으면 발산합니다

이 위젯은 JavaScript가 필요합니다

3.4 학습률 정하기: 직선 탐색

LL을 모를 때는 매 단계 학습률을 고릅니다.

알고리즘 3.6 (되돌아가기 직선 탐색, backtracking line search). η\eta를 큰 값에서 시작해, 아르미호 조건(Armijo condition)

f(x−η∇f)≤f(x)−η2∥∇f∥2f(\mathbf x - \eta\nabla f) \le f(\mathbf x) - \frac\eta2\|\nabla f\|^2

이 성립할 때까지 η←η/2\eta \leftarrow \eta/2로 줄입니다.

따름정리 3.2에 따라 η≤1/L\eta \le 1/L이면 조건이 반드시 성립하므로, 몇 번 줄이면 멈춥니다. 딥러닝에서는 함숫값을 매번 정확히 계산하기 비싸서 직선 탐색 대신 학습률 스케줄(5장)을 씁니다.

3.5 이 장의 요약

  • η≤1/L\eta \le 1/L이면 매 단계 ff가 η2∥∇f∥2\frac\eta2\|\nabla f\|^2 이상 줄어듭니다.
  • 볼록: O(1/k)O(1/k). 강볼록: 선형 수렴 (1−1/κ)k(1 - 1/\kappa)^k.
  • 이차함수: η<2/L\eta < 2/L에서 수렴, 최적 η=2/(m+L)\eta = 2/(m + L), 수축률 (κ−1)/(κ+1)(\kappa - 1)/(\kappa + 1).
  • 조건수가 크면 지그재그로 느려집니다.

쓰이는 곳. 최적화 논문의 수렴 정리(“Theorem: with step size 1/L, the iterates satisfy…”), 딥러닝의 학습률 선택과 발산(손실이 NaN이 되는 현상), 대규모 언어 모델의 “learning rate warmup” 논의, 물리 시뮬레이션의 에너지 최소화, 공학의 반복 설계 최적화가 이 장의 분석을 씁니다.

문제

3.1 [계산] · 확인 문제

f(x,y)=2x2+10y2f(x, y) = 2x^2 + 10y^2에서 경사하강법이 수렴하는 학습률의 상한(이 값 미만이면 수렴)은?

정답
0.1
풀이

헤세 행렬 diag(4,20)\mathrm{diag}(4, 20)이므로 L=20L = 20, 상한 2/L=0.12/L = 0.1입니다.

3.2 [계산] · 확인 문제

같은 함수에서 최적 학습률과 그때의 수축률을 구합니다.

값 답
최적 학습률 η∗\eta^* [?]
수축률 [?]
정답
1/12
2/3
풀이

η∗=2/(4+20)=1/12\eta^* = 2/(4 + 20) = 1/12, κ=5\kappa = 5이므로 수축률 (5−1)/(5+1)=2/3(5 - 1)/(5 + 1) = 2/3입니다.

3.3 [계산] · 확인 문제

f(x)=3x2f(x) = 3x^2에서 x0=2x_0 = 2, η=0.1\eta = 0.1로 경사하강법을 두 번 하면 x2x_2는?

정답
0.32
풀이

xk+1=xk−0.1⋅6xk=0.4xkx_{k+1} = x_k - 0.1\cdot6x_k = 0.4x_k이므로 x2=0.16⋅2=0.32x_2 = 0.16\cdot2 = 0.32입니다.

3.4 [계산] · 확인 문제

강볼록 함수에서 κ=100\kappa = 100, η=1/L\eta = 1/L일 때, 한 단계마다 오차의 상한이 곱해지는 비율은?

정답
0.99
풀이

1−1/κ=0.991 - 1/\kappa = 0.99입니다. 오차를 1/e1/e로 줄이는 데 약 100100번이 듭니다.

3.5 [증명]

이차함수 f(x)=12x⊤Axf(\mathbf x) = \frac12\mathbf x^\top A\mathbf x에서 경사하강법이 xk+1=(I−ηA)xk\mathbf x_{k+1} = (I - \eta A)\mathbf x_k가 됨을 보이고, η>2/λmax⁡\eta > 2/\lambda_{\max}이면 고유벡터 방향 성분이 발산함을 설명합니다.

풀이

∇f=Ax\nabla f = A\mathbf x이므로 xk+1=xk−ηAxk=(I−ηA)xk\mathbf x_{k+1} = \mathbf x_k - \eta A\mathbf x_k = (I - \eta A)\mathbf x_k입니다. λmax⁡\lambda_{\max}의 고유벡터 방향 성분은 매번 1−ηλmax⁡1 - \eta\lambda_{\max}배가 되는데, η>2/λmax⁡\eta > 2/\lambda_{\max}이면 이 값이 −1-1보다 작아 절댓값이 1을 넘습니다. 그래서 그 성분은 부호를 바꾸며 기하급수적으로 커집니다.