경사하강법과 학습률, 이차함수에서의 수렴과 조건수, 확률적 경사하강법과 모멘텀, 뉴턴 방법
임계점을 연립방정식 ∇f=0으로 풀 수 없을 때(신경망은 파라미터가 수십억 개입니다), 컴퓨터는 산을 내려가듯 조금씩 움직여 최솟값을 찾습니다. 이 장에서는 가장 기본적인 방법인 경사하강법을 다루고, 학습률을 어떻게 고르는지, 왜 길쭉한 골짜기에서 느린지(조건수), 이를 고치는 모멘텀과 뉴턴 방법을 봅니다. 머신러닝 논문의 “optimizer” 부분이 모두 이 장의 이야기입니다.
5.1 경사하강법
2장의 정리 2.8에 따라 −∇f는 가장 가파르게 내려가는 방향입니다. 그 방향으로 조금씩 움직입니다.
정의 5.1 (경사하강법). 시작점 x0에서
xk+1=xk−η∇f(xk)
를 되풀이하는 방법을 경사하강법(gradient descent)이라 하고, 보폭 η>0을 학습률(learning rate)이라 합니다.
증명.∇f=Ax입니다. A의 고유벡터 좌표에서 각 성분은 (1−ηλi)배씩 줄어듭니다. 모든 i에서 ∣1−ηλi∣<1, 곧 0<ηλi<2이어야 하고, 가장 엄격한 조건은 λmax에서 나옵니다. □
가장 좋은 η를 골라도, 가장 느린 방향의 수축 비율은
λmax+λminλmax−λmin=κ+1κ−1,κ=λminλmax
입니다. κ는 조건수(condition number, 선형대수 30장)입니다. 등위선이 원에 가까우면(κ≈1) 한두 번에 도착하고, 길쭉한 타원이면(κ가 크면) 가파른 방향으로는 튀고 평평한 방향으로는 기어서 지그재그로 느립니다. 위젯에서 x2+3y2(κ=3)와 x2+y2(κ=1)을 비교해 보면 보입니다.
예제 5.4.f=21(x2+9y2), 곧 A=diag(1,9). 수렴하려면 η<2/9≈0.222입니다. κ=9이므로 가장 좋은 η=2/(1+9)=0.2에서도 매번 108=0.8배씩만 줄어듭니다.
이것이 데이터의 특징을 정규화(평균 0, 분산 1로 맞춤)하면 학습이 빨라지는 이유입니다. 정규화는 손실의 등위선을 원에 가깝게 만들어 κ를 줄입니다.
5.3 확률적 경사하강법과 모멘텀
머신러닝의 손실은 데이터 하나하나의 손실의 평균 L=N1∑i=1Nℓi입니다. N이 수백만이면 ∇L을 정확히 구하는 것이 비쌉니다.
정의 5.5 (확률적 경사하강법). 매 단계 데이터 몇 개(미니배치 B)를 무작위로 골라 ∣B∣1∑i∈B∇ℓi로 그래디언트를 어림해 씁니다. 이것을 확률적 경사하강법(stochastic gradient descent, SGD)이라 합니다.
미니배치 그래디언트의 기댓값은 진짜 그래디언트와 같습니다(이산수학 13강의 기댓값의 선형성). 대신 잡음이 섞이므로 학습률을 점점 줄여 가는 일이 많습니다.
정의 5.6 (모멘텀). 속도 v를 두고
vk+1=βvk+∇f(xk),xk+1=xk−ηvk+1
로 움직입니다(0≤β<1, 보통 0.9). 지그재그 방향의 그래디언트는 서로 상쇄되고, 꾸준한 방향은 쌓여 빨라집니다. 무거운 공이 골짜기를 굴러 내려가는 모습입니다.
논문에 자주 나오는 Adam은 모멘텀에 더해 성분마다 그래디언트 크기의 이동평균으로 나눠 보폭을 맞추는 방법입니다. 성분마다 학습률을 따로 정해 조건수 문제를 줄이려는 것입니다.
5.4 뉴턴 방법
이차 근사(4장)를 쓰면 한 번에 그 근사의 최소점으로 갈 수 있습니다.
정의 5.7 (뉴턴 방법).xk+1=xk−H(xk)−1∇f(xk).
f(xk+h)≈f+∇f⋅h+21hTHh를 h로 미분해 0으로 두면 Hh=−∇f이기 때문입니다. 미적분학 6장의 뉴턴 방법(f′의 근 찾기)을 여러 변수로 넓힌 것입니다.
이차함수에서는 한 번에 최소점에 도착합니다(조건수와 상관없이).
극소점 근처에서는 2차 수렴(맞는 자릿수가 매번 두 배)합니다.
대신 매 단계 n×n 헤세 행렬을 구하고 연립방정식을 풀어야 하므로, 변수가 많으면 비쌉니다. 그래서 큰 신경망에는 경사하강법 계열을, 변수가 적은 문제(통계 모델 적합 등)에는 뉴턴 방법을 씁니다.
예제 5.8.f=21(x2+9y2), x0=(1,1). ∇f=(1,9), H=diag(1,9)이므로 x1=(1,1)−(1,1)=(0,0). 한 번에 도착합니다.
5.5 이 장의 요약
경사하강법 x←x−η∇f. 이차함수에서 η<2/λmax.
수렴 속도는 조건수 κ가 정합니다. 길쭉한 골짜기에서 느립니다.
SGD는 그래디언트를 미니배치로 어림합니다. 모멘텀은 지그재그를 줄입니다. 뉴턴 방법은 헤세 행렬로 한 번에 갑니다.
쓰이는 곳. 머신러닝 논문의 학습 설정(optimizer: SGD, momentum, Adam, learning rate schedule, warmup)은 모두 이 장의 개념입니다. 학습이 발산하면 학습률이 2/λmax보다 크지 않은지 의심합니다. 배치 정규화와 입력 정규화는 조건수를 줄이는 장치로 해석됩니다. 물리 시뮬레이션의 에너지 최소화와 통계의 최대우도 추정도 같은 알고리즘을 씁니다.
문제
5.1 [계산] · 확인 문제
f(x,y)=x2+3y2에 시작점 (2,1), 학습률 η=0.1로 경사하강법을 한 번 적용한 점을 씁니다.
좌표
값
x1
[?]
y1
[?]
정답
1.6
0.4
풀이
∇f=(2x,6y)=(4,6)이므로 (2,1)−0.1(4,6)=(1.6,0.4)입니다.
5.2 [계산] · 확인 문제
f(x,y)=2x2+8y2에 경사하강법이 수렴하는 학습률 η의 상한(η< 이 값)은?
힌트 1
f=21xTAx로 쓰면 A=diag(4,16)입니다.
정답
1/8
풀이
λmax=16이므로 η<2/16=1/8입니다.
5.3 [계산] · 확인 문제
f=21xTAx의 A 고윳값이 1과 100일 때, 가장 좋은 학습률에서 한 단계마다 줄어드는 비율 κ+1κ−1은?
정답
99/101
풀이
κ=100이므로 10199≈0.980입니다. 오차를 절반으로 줄이는 데 약 35단계가 듭니다.
5.4 [계산]
f(x,y)=x2+xy+y2−3x(4장 문제 4.1)에 시작점 (0,0)에서 뉴턴 방법을 한 번 적용한 점을 씁니다.
좌표
값
x1
[?]
y1
[?]
정답
2
-1
풀이
∇f(0,0)=(−3,0), H=[2112]. Hh=(3,0)을 풀면 h=(2,−1)이므로 x1=(2,−1)입니다. 이차함수라 한 번에 최소점(4장의 답)에 도착합니다.
5.5 [증명]
한 변수 f(x)=2ax2(a>0)에 경사하강법을 쓸 때 xk=(1−ηa)kx0임을 보이고, 수렴 조건 0<η<2/a를 유도합니다. η=1/a이면 어떻게 되는지도 씁니다.
풀이
f′(x)=ax이므로 xk+1=xk−ηaxk=(1−ηa)xk이고, 귀납법으로 xk=(1−ηa)kx0입니다. x0=0일 때 xk→0일 필요충분조건은 ∣1−ηa∣<1, 곧 0<ηa<2입니다. η=1/a이면 1−ηa=0이라 한 번에 x1=0에 도착합니다. 이것은 뉴턴 방법(η=1/f′′)과 같습니다.