수학 개념 지도
딥러닝과 언어 모델

확률적 경사 하강법과 Adam(Stochastic gradient descent and Adam)

데이터 전체의 기울기⁠(slope)⁠ 대신 무작위로 뽑은 일부(미니배치⁠, minibatch⁠)의 기울기로 걷는 경사 하강법⁠(gradient descent)⁠. 그 기울기는 참 기울기의 치우침 없는 추정⁠(unbiased estimator)⁠이고 흩어짐은 배치 크기의 제곱근에 반비례한다. 모멘텀⁠(momentum)⁠과 Adam은 길쭉한 골짜기에서 걸음을 다듬는 변형이다.

θk+1=θk−η g^k,g^k=1B∑i∈Bk∇ℓi(θk),E[g^k]=∇L(θk)\theta_{k+1} = \theta_k - \eta\,\hat g_k, \qquad \hat g_k = \frac1B\sum_{i \in \mathcal B_k} \nabla \ell_i(\theta_k), \qquad \mathbb E[\hat g_k] = \nabla L(\theta_k)

데이터 N개에 대한 손실은 예 하나하나의 손실의 평균⁠(mean)⁠ L(θ)=1N∑iℓi(θ)L(\theta) = \frac1N\sum_i \ell_i(\theta)이고, 기울기도 평균입니다. 그래서 경사 하강법의 한 걸음을 내딛으려면 기울기 N개를 모두 계산해야 합니다. N이 수백만이면 한 걸음이 너무 비쌉니다. 확률적 경사 하강법(SGD)은 걸음마다 무작위로 B개(미니배치)만 뽑아, 그 평균 기울기 g^\hat g로 걷습니다. 고르게 무작위로 뽑는다면 g^\hat g의 기댓값⁠(expected value)⁠은 참 기울기 ∇L\nabla L과 같습니다. 걸음마다 방향이 조금씩 틀리지만 평균으로는 옳은 쪽입니다.

아래는 점 200개에 직선 y^=ax+b\hat y = ax + b를 맞추는 최소제곱 회귀⁠(least-squares regression)⁠의 손실을 (a, b) 평면의 등고선으로 그린 것입니다. 흰검은 점 θ를 끌고, 미니배치 크기 B = 를 바꿔 보세요. 다시 뽑기

청록 화살표는 전체 기울기로 내디딜 한 걸음 −η∇L(η = 0.3)이고, 분홍 점 40개는 서로 다른 미니배치 40개로 내디딜 한 걸음의 도착점입니다.

분홍 점들은 청록 화살표 끝 둘레에 흩어져 있고, B를 늘리면 모여듭니다. 미니배치 기울기와 참 기울기의 차이를 40번 잰 크기의 제곱 평균의 제곱근은 지금 이고, 아래 식으로 계산한 이론값은 입니다. 예 하나의 기울기들이 흩어진 정도를 분산⁠(variance)⁠ σ²로 재면, 서로 독립⁠(independence)⁠으로 뽑은 B개의 평균은 분산이 σ²/B입니다. 그래서 흩어짐의 폭은 B\sqrt B에 반비례하고, 폭을 반으로 줄이려면 B를 4배로 늘려야 합니다(큰 수의 법칙⁠, law of large numbers⁠). 전체 N개에서 겹치지 않게 뽑으면 분산에 (N−B)/(N−1)(N - B)/(N - 1)이 더 곱해져서, B = N이면 흩어짐이 정확히 0입니다. B가 어느 정도 크면서 N보다는 훨씬 작으면 흩어진 모양이 정규분포⁠(normal distribution)⁠에 가까워지는데, 중심 극한⁠(limit)⁠ 정리 때문입니다.

왜 이득인가. 기울기 계산의 비용은 B에 비례하지만, 정확도는 B\sqrt B에 비례해서만 좋아집니다. B = 100으로 한 걸음 가는 비용이면 B = 1로 100걸음을 갈 수 있습니다. 바닥에서 멀리 있을 때는 방향이 대충 맞기만 해도 되니, 조금씩 비틀거리는 걸음 100번이 대개 더 멀리 갑니다. 그러나 바닥 근처에서는 잡음이 기울기보다 커져서, 학습률⁠(learning rate)⁠이 일정하면 바닥 둘레를 맴돌 뿐 멈추지 않습니다. 1951년 허버트 로빈스와 서턴 먼로는 학습률 ηk\eta_k를 ∑kηk=∞\sum_k \eta_k = \infty(걸음을 모두 더하면 끝이 없어, 출발점이 아무리 멀어도 닿을 수 있을 만큼)이면서 ∑kηk2<∞\sum_k \eta_k^2 \lt \infty(잡음이 결국 가라앉을 만큼)가 되게 줄여 나가면, 적당한 조건 아래 이런 잡음 섞인 되풀이가 답으로 다가간다는 것을 보였습니다. ηk=1/k\eta_k = 1/k가 그런 예입니다. 볼록 문제에서는 적당한 가정 아래 k걸음 뒤의 오차가 1/k1/\sqrt k의 빠르기로 줄어든다는 것도 알려져 있습니다. 실제로는 데이터를 섞은 뒤 B개씩 차례로 쓰는 일이 많고, 이렇게 전체를 한 바퀴 도는 것을 에포크라 부릅니다(에포크⁠(epoch)⁠마다 다시 섞곤 합니다).

길쭉한 골짜기. 경사 하강법의 두 번째 약점은 방향마다 곡률⁠(curvature)⁠이 크게 다른 골짜기입니다. 아래 그릇은 한 방향의 곡률이 다른 방향의 40배입니다(조건수⁠(condition number)⁠ 40). 세 방법이 같은 점에서 출발합니다. 그릇: , SGD와 모멘텀의 학습률 η = , Adam의 걸음 크기 α = , 기울기 잡음 σ = 잡음 다시 뽑기

걸음에서 f는 SGD , 모멘텀 , Adam 입니다(가장 낮은 값은 0). 잡음이 0이면 분홍 SGD는 보통의 경사 하강법과 같습니다. 가파른 방향으로는 벽 사이를 오가고, 완만한 방향으로는 느립니다. η가 가파른 방향의 곡률 20에 대해 2/20 = 0.1을 넘으면 SGD는 발산⁠(divergence)⁠합니다.

모멘텀. 기울기를 속도⁠(velocity)⁠에 쌓아 두고 그 속도로 움직입니다. v⃗←μv⃗+∇L\vec v \leftarrow \mu\vec v + \nabla L, θ←θ−ηv⃗\theta \leftarrow \theta - \eta\vec v이고 여기서는 μ = 0.9입니다. 골짜기를 가로지르는 성분은 걸음마다 부호가 바뀌어 서로 지워지고, 골짜기를 따라가는 성분은 같은 방향으로 쌓입니다. 기울기가 한결같은 방향으로는 걸음이 1/(1 − μ) = 10배까지 커지는 셈입니다. 1964년 소련의 보리스 폴랴크가 제안해 '무거운 공' 방법이라고도 합니다.

Adam. 좌표마다 기울기의 이동 평균 m과 기울기 제곱의 이동 평균 v를 따로 기억하고, θ←θ−α m^/(v^+ϵ)\theta \leftarrow \theta - \alpha\,\hat m/(\sqrt{\hat v} + \epsilon)로 움직입니다. m^,v^\hat m, \hat v는 처음 몇 걸음에서 0 쪽으로 치우친 평균을 바로잡은 값이고, 흔히 β1=0.9\beta_1 = 0.9, β2=0.999\beta_2 = 0.999를 씁니다. m은 모멘텀 구실을 합니다. v\sqrt v로 나누는 것은 좌표마다 기울기의 크기를 맞추는 일이라, 가파른 좌표에서든 완만한 좌표에서든 한 걸음의 크기가 대개 α를 크게 넘지 않습니다. 2014년 디데릭 킹마와 지미 바가 발표했습니다. 좌표마다 기울기 제곱의 이동 평균의 제곱근으로 나누는 부분은 제프리 힌턴이 2012년 강의에서 소개한 RMSprop과 같고, Adam은 여기에 모멘텀을 합친 셈입니다.

'비스듬한 그릇'을 골라 보세요. 곡률은 그대로 두고 그릇을 출발점과 함께 30° 돌렸을 뿐입니다. 잡음이 0이면 SGD와 모멘텀의 f 곡선은 두 그릇에서 똑같은데, Adam만 눈에 띄게 느려집니다. Adam의 크기 맞춤은 좌표축마다 따로 하는 것이라, 길쭉한 방향이 좌표축과 어긋나면 그 방향을 알아보지 못합니다. 방향마다의 곡률을 제대로 알려면 헤세 행렬⁠(Hessian matrix)⁠ 전체가 필요한데, 변수가 수십억 개면 그 행렬⁠(matrix)⁠을 만들 수조차 없습니다. Adam의 v\sqrt v는 곡률이 아니라 기울기 크기의 제곱 평균의 제곱근이지만, 좌표별로 싸게 얻을 수 있는 대용품 구실을 합니다. σ를 올리면 세 방법 모두 바닥 근처에서 흔들리고, 같은 η라면 모멘텀은 잡음까지 쌓아서 더 크게 흔들립니다. 학습률을 줄이면 흔들림은 줄지만 멀리서 오는 데 오래 걸리므로, 실제 학습에서는 처음 얼마 동안 학습률을 서서히 키웠다가(워밍업⁠, warmup⁠) 차차 줄이는 일정표를 흔히 씁니다.

잡음은 해롭기만 할까. 작은 미니배치로 찾은 해가 새 데이터에서 더 잘 맞는 경우가 보고되었고, 잡음 덕분에 날카로운 골짜기보다 넓은 골짜기에 머문다는 설명이 제안되었습니다. 기울기가 0인 안장점⁠(saddle point)⁠을 빠져나오는 데 잡음이 도움이 된다는 분석도 있습니다. 그러나 이것들은 실험과 부분적인 이론이 섞인 설명이지, 언제나 성립하는 정리가 아닙니다. 어떤 방법이 가장 좋은지도 문제마다 달라서, 실무의 선택은 대부분 실험으로 정합니다.

이어지는 곳. 미니배치마다의 기울기는 자동 미분⁠(automatic differentiation)⁠의 후진 모드⁠(reverse mode)⁠, 신경망⁠(neural network)⁠에서는 역전파⁠(backpropagation)⁠가 계산합니다. 미니배치 기울기는 전체 평균을 무작위 표본⁠(sample)⁠의 평균으로 어림하는 몬테카를로 방법⁠(Monte Carlo method)⁠의 한 예이고, 학습률이 일정할 때 바닥 근처에서 맴도는 θ는 한 걸음이 지금 자리에만 달린 마르코프 연쇄⁠(Markov chain)⁠를 이룹니다. 학습 데이터⁠(training set)⁠의 손실을 끝까지 줄이면 과적합⁠(overfitting)⁠이 생길 수 있어 검증 오차를 보며 멈추거나 정규화를 더합니다. 많은 대형 언어 모델⁠(language model)⁠은 AdamW로 학습합니다. AdamW는 걸음마다 가중치⁠(weight)⁠를 조금씩 0 쪽으로 줄이는 가중치 감쇠⁠(weight decay)⁠를, Adam의 크기 맞춤과 섞지 않고 따로 적용하는 변형입니다. 미니배치도 커서, GPT-3(2020)의 가장 큰 모형은 한 걸음에 약 320만 토큰⁠(token)⁠을 썼습니다. 배치 크기와 학습률, 학습량 사이의 관계는 규모의 법칙⁠(scaling laws)⁠ 연구에서 실험으로 잽니다.

이 개념이 나오는 큰 생각가장 좋은 것 고르기

이 개념이 나오는 긴 글

신경망과 기계 학습 배우는 기계 예를 보여 주면 규칙을 스스로 찾는 기계. 1958년의 퍼셉트론에서 오늘의 심층 신경망까지, 그 밑바닥에는 미분과 연쇄법칙이 있다. 언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다.

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념