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

규모의 법칙(Neural scaling laws)

언어 모델⁠(language model)⁠의 시험 손실이 매개변수⁠(parameter)⁠ 수·자료 양·계산량의 거듭제곱으로 줄어든다는 경험적 관계. 측정한 범위 안에서 맞춘 곡선이며, 이론에서 유도된 법칙은 아니다.

L(N)≈(NcN)αN,L(N,D)≈E+ANα+BDβ,C≈6NDL(N) \approx \left(\frac{N_c}{N}\right)^{\alpha_N}, \qquad L(N, D) \approx E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}}, \qquad C \approx 6ND

언어 모델을 열 배 크게 만들면 얼마나 좋아질까요? 큰 모델 하나를 학습시키는 데 몇 달과 막대한 돈이 드니, 미리 알 수 있다면 쓸모가 큽니다. 2020년 오픈AI의 재러드 캐플런 등은 트랜스포머⁠(transformer)⁠ 언어 모델을 크기를 바꿔 가며 여럿 학습시켜 이 물음에 답하려 했습니다. 모델의 크기는 매개변수 수 N으로 잽니다. 매개변수는 학습으로 값이 정해지는 수들이고, 모델이 배운 것은 모두 이 수들에 담깁니다.

성적은 손실로 잽니다. 언어 모델은 글을 잘게 자른 조각(토큰⁠(token)⁠, 대개 낱말이나 낱말의 일부)을 하나씩 보며 다음 토큰을 확률⁠(probability)⁠로 맞히는데, 손실은 모델이 정답 토큰을 얼마나 잘못 맞혔는지를 잰 점수로, 낮을수록 좋습니다. 정확히는 정답 토큰에 준 확률의 로그에 음수를 붙여 평균⁠(mean)⁠한 값(토큰당 교차 엔트로피⁠(cross-entropy)⁠)이고, 자연로그⁠(natural logarithm)⁠를 쓰므로 단위를 나트라 부릅니다. 손실 2.3나트는 대략 정답에 평균 10분의 1쯤의 확률을 준 셈이고, 손실 0.69나트는 2분의 1쯤입니다. 캐플런 등은 학습에 쓰지 않은 글에서 잰 손실을 N에 대해 그렸습니다.

그래프의 두 축은 로그 눈금이었습니다. 로그 눈금에서는 1, 10, 100, 1000이 같은 간격으로 놓입니다. 그렇게 그리자 점들이 거의 한 직선 위에 놓였습니다. 로그–로그 그래프에서 직선이 되는 관계를 거듭제곱 법칙⁠(power law)⁠이라 합니다. 작은 예로 y = 100/x를 보면, x가 1, 10, 100일 때 y는 100, 10, 1입니다. x가 한 눈금(10배) 오른쪽으로 갈 때마다 y는 늘 한 눈금(10분의 1) 내려가니, 로그 눈금에서는 일정한 기울기⁠(slope)⁠로 내려가는 직선이 됩니다. y가 x의 거듭제곱(여기서는 x의 −1제곱)에 비례하면 언제나 이렇게 직선이 됩니다. 캐플런 등이 맞춘 식은 다음과 같습니다.

L(N)≈(NcN)αN,αN≈0.076,Nc≈8.8×1013L(N) \approx \left(\frac{N_c}{N}\right)^{\alpha_N}, \qquad \alpha_N \approx 0.076,\quad N_c \approx 8.8\times10^{13}

NcN_c(N 씨)와 αN\alpha_N(알파 N)은 측정값에 맞춰 정한 상수입니다. 양변에 로그를 취하면 log⁡L=αNlog⁡Nc−αNlog⁡N\log L = \alpha_N\log N_c - \alpha_N\log N이라, 가로축을 log N, 세로축을 log L로 잡으면 기울기가 −αN-\alpha_N인 직선입니다. 이 식은 이론에서 유도한 것이 아니라 측정값에 맞춘 곡선입니다. 여기서 N은 임베딩⁠(embedding)⁠ 행렬⁠(matrix)⁠을 뺀 매개변수 수입니다. 임베딩 행렬은 토큰마다 수의 목록을 하나씩 적어 둔 표로, 모델이 토큰을 수로 바꿀 때 씁니다. 또 이 L(N)은 자료가 모자라지 않은 상태에서 시험 손실이 더 내려가지 않을 때까지 학습시킨 모델의 손실입니다. 자료가 적으면 모델을 키워도 이 선만큼 내려가지 않습니다. 축: . 노란 점을 끌어 보면 아래에 손실과, 그 N이 측정한 범위 안인지가 나옵니다.

캐플런 등(2020)이 맞춘 L(N). 실선은 실제로 측정한 범위(임베딩을 뺀 매개변수 768개~약 15억 개), 점선은 그 밖으로 늘인 것입니다. 점에 올리면 값이 나옵니다.

αN=0.076\alpha_N = 0.076은 무슨 뜻일까요? N을 10배로 늘릴 때마다 손실이 10−0.076≈0.8410^{-0.076} \approx 0.84배가 됩니다. 약 16% 줄어든다는 뜻입니다. 두 배로는 약 5%입니다. 느리지만 꾸준합니다. 같은 논문은 자료의 양 D와 계산량 C에 대해서도 비슷한 직선을 보고했습니다(αD≈0.095\alpha_D \approx 0.095, αC≈0.050\alpha_C \approx 0.050). 축을 선형으로 바꾸면 같은 곡선이 세로축에 바짝 붙어 뚝 떨어졌다가 거의 평평하게 누운 꺾인 선처럼 보여서, 1억 개와 15억 개 사이의 차이(2.83 대 2.30)조차 읽기 어렵습니다. 거듭제곱 법칙은 로그 축에서 제 모습이 보이고, 낱말 빈도의 지프의 법칙⁠(Zipf's law)⁠도 그렇습니다.

어디까지 믿을 수 있나. 이 식을 끝까지 믿으면 N → ∞에서 손실이 0으로 갑니다. 그러나 글에는 어떤 모델로도 줄일 수 없는 불확실성이 있습니다. '오늘 점심으로 ___을 먹었다'의 빈칸은 완벽한 모델도 확실히 맞힐 수 없습니다. 이 줄일 수 없는 몫을 글의 엔트로피⁠(entropy)⁠라 합니다. 손실은 이 엔트로피에 모델의 오차(모델의 확률이 실제 글의 확률과 다른 만큼)를 더한 값이라서, 엔트로피 아래로는 내려갈 수 없습니다(언어 모델 참고). 그러니 이 직선은 어딘가에서 꺾여야 하고, 논문 스스로도 그렇게 적었습니다. 또 이 관계는 특정한 자료(WebText2), 글을 토큰으로 자르는 규칙(토크나이저⁠, tokenizer⁠), 모델 구조, 학습 설정에서 잰 것입니다. 지수와 상수는 그 조건과 함께 읽어야 하고, 조건이 바뀌면 값도 바뀝니다.

계산량이 정해져 있다면. 쓸 수 있는 컴퓨터와 시간이 정해져 있다면, 모델을 키울까요, 자료를 더 먹일까요? 먼저 계산량을 셉니다. 단위는 FLOP으로, 실수⁠(real number)⁠의 덧셈이나 곱셈 한 번입니다. 트랜스포머를 학습시킬 때 토큰 하나마다 답을 계산하는 데(앞으로) 약 2N번, 매개변수를 고칠 방향을 계산하는 데(거꾸로) 약 4N번의 연산이 듭니다. 학습 토큰 수를 D라 하면 학습 계산량은 대략 C≈6NDC \approx 6ND입니다(트랜스포머의 매개변수 세기 참고). 이를테면 매개변수 10억 개 모델에 토큰 200억 개를 먹이면 6 × 10⁹ × 2×10¹⁰ = 1.2×10²⁰ FLOP입니다. 2022년 딥마인드의 조던 호프만 등은 매개변수 약 7천만~160억 개의 모델 400여 개를 학습시키고, 손실을 다음 꼴의 식으로 맞췄습니다.

L(N,D)=E+ANα+BDβL(N, D) = E + \frac{A}{N^{\alpha}} + \frac{B}{D^{\beta}}

E는 모델을 한없이 키우고 자료를 한없이 주어도 남는 손실, 둘째 항은 모델이 유한해서, 셋째 항은 자료가 유한해서 생기는 몫입니다. 계산량 C를 고정하면 D=C/6ND = C/6N이므로 손실은 N 하나의 함수⁠(function)⁠가 됩니다. 너무 작은 모델은 자료를 많이 보지만 배운 것을 담을 그릇이 작습니다. 너무 큰 모델은 같은 계산량으로 자료를 조금밖에 보지 못합니다. 그 사이 어딘가에 손실이 가장 낮은 점이 있습니다. 이 곡선을 등계산량(IsoFLOP) 곡선이라 합니다. 계산량 C=10xC = 10^{x} FLOP에서 x = , 상수: . 노란 곡선 위의 점을 끌면 분홍 최저점에서 어느 쪽으로 멀어지든 손실이 올라갑니다. x를 바꾸면 최저점이 분홍 점선을 따라 움직입니다.

가로축은 매개변수 수 N(로그 눈금), 세로축은 맞춘 식이 예측하는 손실(나트/토큰)입니다. 흐린 곡선은 계산량 10¹⁸, 10¹⁹, …, 10²⁶ FLOP의 등계산량 곡선, 노란 곡선이 고른 계산량입니다. 분홍 점선은 계산량에 따라 최저점이 움직이는 자취입니다.

가장 낮은 점에서는 곡선이 잠깐 평평합니다. N을 조금 늘리면 셋째 항(자료 부족)이 커지고 둘째 항(모델 부족)이 작아지는데, 최저점은 이 둘의 변화가 꼭 맞비기는 곳입니다. 이 조건을 풀면 최적의 N과 D가 다음 꼴로 나옵니다.

Nopt=G(C6)βα+β,Dopt=1G(C6)αα+β,G=(αAβB)1α+βN_{\text{opt}} = G\left(\frac{C}{6}\right)^{\frac{\beta}{\alpha+\beta}}, \qquad D_{\text{opt}} = \frac1G\left(\frac{C}{6}\right)^{\frac{\alpha}{\alpha+\beta}}, \qquad G = \left(\frac{\alpha A}{\beta B}\right)^{\frac{1}{\alpha+\beta}}
미분⁠(differentiation)⁠으로 풀어 보기평평하다는 것은 N에 대한 기울기(도함수⁠, derivative function⁠)가 0이라는 뜻입니다. E는 상수이므로 빼고, D=C/6ND = C/6N을 넣은 손실을 N으로 미분해 0으로 놓습니다. ddN[AN−α+B (6N/C)β]=−αAN−α−1+βB (6/C)βNβ−1=0.\frac{d}{dN}\bigl[A N^{-\alpha} + B\,(6N/C)^{\beta}\bigr] = -\alpha A N^{-\alpha-1} + \beta B\,(6/C)^{\beta} N^{\beta-1} = 0. 양변에 Nα+1N^{\alpha+1}을 곱하고 정리하면 Nα+β=αAβB(C6)βN^{\alpha+\beta} = \frac{\alpha A}{\beta B}\left(\frac{C}{6}\right)^{\beta}이고, 양변을 1/(α+β)1/(\alpha+\beta)제곱하면 위의 NoptN_{\text{opt}}입니다. Dopt=(C/6)/NoptD_{\text{opt}} = (C/6)/N_{\text{opt}}에서 D의 식이 나옵니다.

최적의 N과 D가 모두 C의 거듭제곱이고, 두 지수의 합은 1입니다(N과 D를 곱하면 C/6이어야 하니 당연합니다). 호프만 등의 요지는 두 지수가 모두 0.5 가까이라는 것이었습니다. 계산량을 늘릴 때 모델과 자료를 거의 같은 비율로 늘려야 한다는 뜻입니다. 계산량이 100배가 되면 모델도 자료도 약 10배씩입니다.

캐플런 등(2020)은 모델을 훨씬 빨리 키우라고 권했습니다(Nopt∝C0.73N_{\text{opt}} \propto C^{0.73}, 계산량이 100배면 모델은 약 29배). 왜 어긋났는지는 뒤의 연구들이 따졌습니다. 호프만 등(2022)은 캐플런 등이 학습 길이와 상관없이 모든 모델에 같은 학습률⁠(learning rate)⁠ 일정을 썼다는 점을 들었습니다. 학습률은 한 번에 매개변수를 얼마나 고칠지 정하는 수이고, 보통 학습이 끝나 갈수록 줄여 갑니다. 이 일정을 학습 길이에 맞추지 않으면 짧게 학습한 모델의 손실이 실제보다 나쁘게 재집니다. 2024년 피어스와 송은 차이의 대부분이 임베딩 매개변수를 빼고 센 방식과 작은 실험 규모에서 온다고 보고했습니다. 작은 모델에서는 임베딩 표가 전체 매개변수에서 차지하는 몫이 커서, 빼고 세느냐에 따라 기울기가 달라집니다. 같은 해 포리안 등도 마지막 층의 계산량을 세는 방식, 학습 초반 학습률을 천천히 올리는 기간, 모델 크기에 맞춘 설정 조정을 원인으로 들며 두 결과를 맞추었습니다.

호프만 등은 이 결론에 따라 고퍼(매개변수 2,800억 개, 3,000억 토큰)와 비슷한 계산량으로 매개변수 700억 개의 친칠라를 1.4조 토큰으로 학습시켰고, 친칠라가 여러 평가에서 고퍼보다 나았습니다. 여기서 '매개변수 하나당 토큰 약 20개'라는 어림셈이 퍼졌습니다.

그런데 상수를 '2022년 발표값'으로 두고 고퍼의 계산량(5.76×10235.76\times10^{23} FLOP)을 넣으면, 이 그림의 최적점은 매개변수 약 320억 개, 매개변수당 토큰 약 90개로 나옵니다. 같은 논문은 최적점을 세 방법으로 찾았습니다. 첫째는 모델 크기마다 학습 길이를 여러 가지로 바꿔 학습시키며 그동안의 손실을 기록하고, 계산량마다 가장 낮은 손실을 낸 크기를 고르는 방법입니다. 둘째는 계산량을 몇 가지로 고정하고 그때마다 크기를 바꿔 여러 모델을 끝까지 학습시켜, 위 그림 같은 곡선의 최저점을 직접 찾는 방법입니다. 이 두 방법은 약 20개를 가리켰는데, 위의 식으로 맞춘 셋째 방법만 어긋난 것입니다. 2024년 타메이 베시로글루 등은 논문의 그림에서 자료점을 되살려 다시 맞추고, 발표된 상수가 자료에 잘 맞지 않으며 다시 맞춘 상수('2024년 재추정')는 다른 두 방법과 들어맞는다고 보고했습니다. 상수를 바꿔 보면 최적점이 두 배 넘게 움직입니다. 같은 모양의 식이라도 상수 몇 개의 작은 차이가 외삽(측정한 범위 밖으로 곡선을 늘여 예측하기)에서는 큰 차이가 된다는 것, 이 '법칙'들이 조건이 붙은 측정 요약이라는 것을 보여 주는 예입니다.

무엇을 최적화⁠(optimization)⁠하는가. 친칠라식 최적은 '학습 계산량이 정해졌을 때 손실을 가장 낮추는' 선택일 뿐입니다. 학습이 끝난 모델이 답을 낼 때도 계산이 들고(추론 비용), 이 비용은 모델이 클수록 큽니다. 모델을 오래 많은 사람에게 서비스하면 추론 비용이 학습 비용보다 커질 수 있으므로, 작은 모델에 자료를 훨씬 많이 먹이는 편이 이득일 수 있습니다. 2024년 공개된 라마 3의 매개변수 80억 개 모델은 15조 개가 넘는 토큰으로 학습해 매개변수당 약 1,900개였습니다. 또 좋은 글 자료는 유한해서, 같은 자료를 되풀이해 학습하면 어떻게 되는지도 따로 측정되었습니다. 2023년 니클라스 무에니호프 등은 네 번쯤 되풀이하는 것은 새 자료와 거의 차이가 없지만 그보다 많이 되풀이하면 효과가 빠르게 줄어든다고 보고했습니다.

손실과 능력. 규모의 법칙⁠(scaling laws)⁠이 예측하는 것은 평균 손실입니다. 특정 과제의 정답률은 손실과 단순하게 이어지지 않아서, 어떤 과제는 모델이 어느 크기를 넘을 때 갑자기 풀리는 것처럼 보였습니다('창발⁠(emergence)⁠'이라 불렸습니다). 그러나 2023년 라일런 셰퍼 등은 이런 급격한 도약 가운데 상당수가 맞음/틀림처럼 불연속인 채점 방식에서 생기며, 연속적인 척도로 재면 매끄럽게 나아진다고 보고했습니다. 어느 쪽 설명이 얼마나 맞는지는 과제마다 다르고, 아직 논쟁 중입니다.

왜 거듭제곱인가. 확립된 답은 없습니다. 몇 가지 설명이 제안되었습니다. 자료가 실제로 놓인 공간의 차원이 지수를 정한다는 모형, 배워야 할 작은 기술들의 빈도가 지프의 법칙처럼 거듭제곱으로 분포해서 모델이 커질수록 더 드문 기술을 하나씩 익힌다는 모형 등입니다. 이들은 관찰을 재현하는 모형이지 증명된 원인이 아닙니다. 실무에서는 작은 모델 여럿으로 곡선을 맞춘 뒤 큰 모델의 손실을 미리 가늠하는 데 쓰고, 이 예측이 꽤 맞아 왔다는 것이 이 법칙이 널리 쓰이는 이유입니다. 예를 들어 GPT-4 기술 보고서(2023)는 계산량이 1만분의 1 이하인 모델들로 최종 손실을 미리 맞혔다고 적었습니다. 직선 하나를 맞출 때는 로그를 취한 뒤 최소제곱 회귀⁠(least-squares regression)⁠를 하면 되지만, E가 있는 식은 로그를 취해도 직선이 되지 않습니다. 그래서 상수를 조금씩 바꿔 가며 측정값과의 차이를 줄이는 반복 계산(비선형 최적화)으로 맞춥니다.

이어지는 곳.

이 개념이 나오는 긴 글

계산언어학 말을 세는 기계 문법은 규칙일까, 확률일까? 파니니의 문법에서 촘스키의 위계, 섀넌의 영어 엔트로피, 오늘날의 언어 모델까지. 언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다. 측정의 수학 재는 순간 바뀐다 해안선의 길이는 자에 따라, 평균은 누구에게 묻느냐에 따라, 지표는 목표가 되는 순간 달라진다. 리처드슨의 국경과 프랙털 차원, 스티븐스의 척도, 버스 정류장과 타율의 역설, 스피어먼의 요인, 굿하트의 법칙과 보상 해킹을 한 줄로 꿴다. 압축과 과학 압축하는 것이 이해하는 것이다 튀코 브라헤가 20년 동안 적은 행성의 위치를 케플러는 법칙 세 줄로 줄였다. 짧게 적는 일과 이해하는 일은 정말 같은 일일까? 오컴의 면도날을 비트로 재는 법, 과적합을 압축의 실패로 읽는 법, 그리고 그 말이 정리인 곳과 철학인 곳.

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념