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

위치 인코딩의 변천(Positional encoding)

어텐션⁠(attention)⁠은 순서를 모르므로 위치를 따로 알려 줘야 한다. 입력에 위치 벡터⁠(vector)⁠를 더하던 2017년의 방식에서, 어텐션 점수에 상대 거리를 넣는 방식, 쿼리⁠(query)⁠와 키를 위치만큼 회전시키는 RoPE, 거리에 비례해 점수를 깎는 ALiBi를 거쳐, 학습 때보다 긴 문맥으로 늘리는 보간⁠(interpolation)⁠ 기법까지 이어진 흐름.

(Rmθ q)⋅(Rnθ k)=q⋅R(n−m)θ k(R_{m\theta}\,q)\cdot(R_{n\theta}\,k) = q\cdot R_{(n-m)\theta}\,k

토큰⁠(token)⁠ 세 개 [A, B, C]를 셀프 어텐션에 넣은 결과와, 순서를 바꾼 [C, A, B]를 넣은 결과를 비교해 봅시다. 마스크가 없다면 두 번째 출력은 첫 번째 출력의 행을 똑같이 C, A, B 순서로 늘어놓은 것일 뿐입니다. A 자리에 나오는 벡터는 한 성분도 다르지 않습니다. 일반적으로 순서를 바꾸는 치환 행렬⁠(matrix)⁠ P에 대해 Attn⁡(PX)=P Attn⁡(X)\operatorname{Attn}(PX) = P\,\operatorname{Attn}(X)입니다. 까닭은 이렇습니다. 입력의 행을 P로 섞으면 점수 행렬 S는 PSPTPSP^{\mathsf T}로, 값 행렬 V는 PV로 바뀝니다. 행마다 하는 소프트맥스⁠(softmax)⁠는 행과 열을 섞기 전에 하든 뒤에 하든 결과가 같으므로 softmax⁡(PSPT)=P softmax⁡(S) PT\operatorname{softmax}(PSP^{\mathsf T}) = P\,\operatorname{softmax}(S)\,P^{\mathsf T}입니다. 여기에 PV를 곱하면 PTP=IP^{\mathsf T}P = I이므로 P softmax⁡(S) VP\,\operatorname{softmax}(S)\,V, 곧 원래 출력의 행을 섞은 것만 남습니다. 그래서 트랜스포머⁠(transformer)⁠에는 위치를 따로 알려 주는 장치가 필요합니다. 2017년부터 지금까지 이 장치는 여러 번 바뀌었고, 바뀔 때마다 풀려던 문제가 달랐습니다. 처음에는 순서를 구별하는 것, 다음에는 두 토큰의 거리를 직접 보는 것, 마지막에는 학습 때보다 긴 글을 읽는 것이었습니다.

1. 입력에 위치 벡터를 더하기 (2017). 원래 트랜스포머는 위치 p의 토큰 벡터에 위치 벡터 PE(p)를 더했습니다. 벡터의 성분을 둘씩 짝지어, i번째 짝에 진동수⁠(frequency)⁠ ωi=10000−2i/d\omega_i = 10000^{-2i/d}의 사인파⁠(sinusoid)⁠를 씁니다.

PE(p)2i=sin⁡(ωi p),PE(p)2i+1=cos⁡(ωi p),i=0,1,…,d2−1PE(p)_{2i} = \sin(\omega_i\, p), \qquad PE(p)_{2i+1} = \cos(\omega_i\, p), \qquad i = 0, 1, \dots, \tfrac d2 - 1

진동수는 1에서 시작해 짝마다 같은 비율로 줄어드는 등비수열⁠(geometric progression)⁠입니다. 파장 2π/ωi2\pi/\omega_i은 가장 빠른 짝의 2π ≈ 6.3토큰에서 가장 느린 짝의 2π⋅10000(d−2)/d2\pi\cdot 10000^{(d-2)/d}토큰까지 늘어납니다(원 논문의 d = 512에서 약 60,600토큰, 아래 그림의 d = 64에서 약 47,100토큰). 이진수로 수를 셀 때 맨 끝 자리는 매번, 그 앞자리는 두 번에 한 번 바뀌는 것처럼(자릿값 기수법), 빠른 짝과 느린 짝을 함께 보면 위치를 읽을 수 있다는 생각입니다. 다만 이진수와 달리 주기⁠(period)⁠는 짝마다 두 배가 아니라 100002/d10000^{2/d}배씩 늘고, 값도 0과 1로 끊기지 않고 매끄럽게 변합니다. 논문은 이 선택의 이유로 한 가지 성질을 들었습니다. 덧셈정리⁠(addition formula)⁠에 따라 PE(p + k)는 PE(p)에 p와 상관없는 회전 행렬⁠(rotation matrix)⁠을 짝마다 곱한 것이므로, 거리 k만큼 떨어진 곳을 보는 일을 선형 사상⁠(linear map)⁠ 하나로 배울 수 있으리라는 것입니다. 같은 이유로 두 위치 벡터의 내적⁠(dot product)⁠은 거리에만 달려 있습니다.

PE(m)⋅PE(n)=∑icos⁡(ωi(m−n))PE(m)\cdot PE(n) = \sum_{i} \cos\bigl(\omega_i (m - n)\bigr)

이 식에는 흔히 놓치는 점이 두 가지 있습니다. 첫째, 코사인⁠(cosine)⁠은 짝수 함수라서 거리 k와 −k에서 값이 같습니다. 내적만으로는 상대가 앞에 있는지 뒤에 있는지 알 수 없습니다. 둘째, 모델은 PE(m)·PE(n)을 직접 보지 않습니다. 토큰 벡터 e와 위치 벡터를 더한 x=e+PEx = e + PE에 쿼리 행렬과 키 행렬을 곱한 뒤 내적하므로, M=WQTWKM = W_Q^{\mathsf T} W_K라 두면 점수는 네 항으로 갈라집니다.

qm⋅kn=emTMen⏟내용–내용+emTM PE(n)⏟내용–위치+PE(m)TMen⏟위치–내용+PE(m)TM PE(n)⏟위치–위치q_m\cdot k_n = \underbrace{e_m^{\mathsf T} M e_n}_{\text{내용–내용}} + \underbrace{e_m^{\mathsf T} M\, PE(n)}_{\text{내용–위치}} + \underbrace{PE(m)^{\mathsf T} M e_n}_{\text{위치–내용}} + \underbrace{PE(m)^{\mathsf T} M\, PE(n)}_{\text{위치–위치}}

마지막 위치–위치 항조차 늘 거리에만 달려 있지는 않습니다. M이 서로 다른 짝을 섞지 않고, 각 짝 안에서는 회전⁠(rotation)⁠과 교환되는(회전과 확대를 합친) 특별한 모양일 때만 그렇습니다. 아래 그림은 거리 k = 를 고정하고 위치 m을 0에서 200까지 옮기며 위치–위치 항 PE(m)TM PE(m+k)PE(m)^{\mathsf T} M\,PE(m+k)를 d/2로 나눠 그린 것입니다(d = 64). M = I이면 선이 평평하고, M에 무작위 행렬⁠(random matrix)⁠을 더하면 같은 거리인데도 m에 따라 값이 흔들립니다. 주황 선 위의 점을 좌우로 끌면 그 m에서의 값이 나옵니다.

청록: M = I일 때(위치끼리의 내적). 주황: M = I + 무작위 행렬(각 성분의 표준편차⁠(standard deviation)⁠ 2/√d). 두 선 모두 거리는 k로 같고, 달라지는 것은 절대 위치 m뿐입니다.

학습된 모델에서 M은 학습이 정하므로, 사인파를 더해도 점수가 상대 거리만의 함수⁠(function)⁠라는 보장은 없습니다. 이것이 뒤의 방법들이 위치를 입력이 아니라 점수 쪽에 넣으려 한 까닭입니다.

학습되는 위치 벡터. 더 단순한 방법은 위치마다 벡터를 하나씩 두고 가중치⁠(weight)⁠처럼 학습하는 것입니다. 2017년 게링 등의 합성곱⁠(convolution)⁠ 번역 모델(합성곱 신경망⁠(convolutional neural network)⁠으로 만든 seq2seq)이 이렇게 했고, 트랜스포머 논문도 두 방식을 비교해 결과가 거의 같았다고 적었습니다. 그러면서도 사인파를 고른 이유로 "학습 때보다 긴 수열로 외삽⁠(extrapolation)⁠할 수 있을지도 모른다"는 기대를 들었습니다. 이후 BERT(2018, 위치 512개)와 GPT-2(2019, 위치 1,024개)는 학습되는 위치 벡터를 썼습니다. 이 방식에는 분명한 한계가 있습니다. GPT-2라면 표에 1,025번째 행이 없으니 1,025번째 토큰은 아예 넣을 수 없습니다. 사인파는 어떤 위치의 벡터든 계산할 수는 있습니다. 그러나 2021년 프레스 등(아래 ALiBi의 저자들)이 재어 보니, 사인파를 쓴 언어 모델⁠(language model)⁠은 학습 길이를 조금만 넘어도 퍼플렉시티⁠(perplexity)⁠가 크게 나빠졌습니다. 퍼플렉시티는 모델이 실제 다음 토큰에 매긴 확률⁠(probability)⁠들의 기하평균의 역수⁠(inverse)⁠로, 낮을수록 잘 맞힌다는 뜻입니다. 벡터를 계산할 수 있다는 것과, 망이 그 벡터를 처음 보는 조합에서 제대로 쓸 수 있다는 것은 다른 일입니다.

2. 점수에 상대 거리를 넣기 (2018–2020). 2018년 피터 쇼, 야코프 우스코라이트, 아시시 바스와니는 위치 벡터를 입력에 더하지 않고, 어텐션 안에서 키에 거리별 학습 벡터를 더했습니다. i번째 토큰이 j번째 토큰을 볼 때의 점수를 qi⋅(kj+aj−i)/dq_i\cdot(k_j + a_{j-i})/\sqrt d로 두고, 거리가 정해 둔 한도를 넘으면 모두 같은 벡터를 쓰게 잘랐습니다. 값 쪽에도 같은 식으로 거리 벡터를 더했습니다. 2019년 다이쯔항 등의 Transformer-XL은 긴 글을 구간으로 나눠 읽으며 앞 구간의 은닉 상태⁠(hidden state)⁠를 기억으로 다시 쓰려 했는데, 그러면 두 구간이 모두 위치 0부터 시작해 절대 위치가 겹칩니다. 그래서 위의 네 항에서 키 쪽의 PE(n)을 거리의 사인파 Rm−nR_{m-n}로 바꾸고, 쿼리 쪽 위치 항은 위치와 상관없는 학습 벡터 u, v로 바꿨습니다.

smn=emTWqTWk,E en+emTWqTWk,R Rm−n+uTWk,E en+vTWk,R Rm−ns_{mn} = e_m^{\mathsf T} W_q^{\mathsf T} W_{k,E}\, e_n + e_m^{\mathsf T} W_q^{\mathsf T} W_{k,R}\, R_{m-n} + u^{\mathsf T} W_{k,E}\, e_n + v^{\mathsf T} W_{k,R}\, R_{m-n}

2020년 콜린 라펠 등의 T5는 가장 단순한 형태로 갔습니다. 거리마다 수 하나(편향)를 학습해 점수에 더할 뿐입니다. 헤드마다 따로, 층끼리는 공유하며, 거리를 32개 칸으로 묶되 가까운 거리는 촘촘히, 먼 거리는 로그 간격으로 넓게 묶고 128이 넘는 거리는 모두 한 칸에 넣었습니다. 이 셋은 모두 거리를 입력이 아니라 점수 안에 직접 넣었다는 점에서 같습니다. 쇼 등과 T5는 거리마다 학습하는 표를 두었고, Transformer-XL은 거리의 사인파에 학습하는 행렬을 곱해 썼습니다.

3. 회전으로 위치를 넣기: RoPE (2021). 2021년 4월 쑤젠린과 동료들은 질문을 뒤집었습니다. 쿼리와 키에 각자의 위치만 써서 무언가를 해 두었을 때, 그 둘의 내적이 저절로 거리에만 달려 있게 할 수 있을까? 답은 회전입니다. 쿼리와 키의 성분을 둘씩 짝지어 평면 벡터로 보고, 위치 m의 쿼리는 짝마다 각도 mθim\theta_i만큼, 위치 n의 키는 nθin\theta_i만큼 돌립니다(θi=10000−2i/d\theta_i = 10000^{-2i/d}, 사인파와 같은 진동수입니다). 회전 행렬은 RαT=R−αR_\alpha^{\mathsf T} = R_{-\alpha}이고 RαRβ=Rα+βR_\alpha R_\beta = R_{\alpha+\beta}이므로 한 줄로 끝납니다.

(Rmθ q)⋅(Rnθ k)=qTRmθTRnθ k=qTR(n−m)θ k(R_{m\theta}\,q)\cdot(R_{n\theta}\,k) = q^{\mathsf T} R_{m\theta}^{\mathsf T} R_{n\theta}\, k = q^{\mathsf T} R_{(n-m)\theta}\, k

오른쪽에는 m과 n이 차이 n − m으로만 남습니다. 두 토큰을 똑같이 한 칸씩 옮겨도 점수는 그대로입니다. 짝을 복소수⁠(complex number)⁠ 하나로 보면 더 투명합니다. 회전은 eimθe^{im\theta}를 곱하는 것이므로(오일러 공식⁠(Euler's formula)⁠, 복소수의 곱셈), 한 짝의 점수는 Re⁡[q~ k~‾ ei(m−n)θ]\operatorname{Re}\bigl[\tilde q\,\overline{\tilde k}\,e^{i(m-n)\theta}\bigr]입니다. 크기와 기본 각도는 내용(q~ k~‾\tilde q\,\overline{\tilde k})이 정하고, 위치는 그것을 거리만큼 돌리기만 합니다. 아래 그림에서 흐린 화살표 q, k(내용)를 끌어 보고, 수직선 위의 위치 m, n을 끌어 보세요. m과 n을 같은 칸 수만큼 옮기면(아래 버튼이 이것을 합니다) 진한 두 화살표는 함께 돌지만 청록 점은 제자리에 있고, 차이 m − n을 바꾸면 청록 점이 오른쪽 곡선을 따라 움직입니다. θ = . 둘 다 한 칸 뒤로

왼쪽: 한 짝(2차원)의 쿼리와 키. 흐린 화살표가 회전 전, 진한 화살표가 위치만큼 돌린 뒤입니다. 아래 수직선에서 m(노랑)과 n(파랑)을 끕니다. 오른쪽: 이 q, k에서 거리 m − n = −15, …, 15일 때의 점수. 청록 점이 지금의 점수입니다.

'둘 다 한 칸 뒤로'를 누르면 두 화살표가 함께 θ만큼 돌고, 사이각이 그대로이므로 점수도 오른쪽 그래프의 같은 점에 머뭅니다(한쪽이 15에 닿으면 둘에서 같은 수를 빼 작은 번호로 되돌립니다). 구현은 토큰마다 자기 위치만큼 돌리는 절대 방식인데, 효과는 상대 방식입니다. 그래서 따로 배울 표가 필요 없습니다. 키는 자기 위치만으로 돌려 두면 되므로, 이미 계산한 키를 저장해 두었다가 다시 쓰는 캐시와도 잘 맞습니다. 회전은 쿼리와 키에만 하고 값에는 하지 않으며, 층마다 다시 합니다.

실제 모델은 d/2개의 짝을 모두 쓰므로 점수는 여러 진동수의 합 ∑iRe⁡[q~ik~i‾ ei(m−n)θi]\sum_i \operatorname{Re}[\tilde q_i \overline{\tilde k_i}\, e^{i(m-n)\theta_i}]이 됩니다. 진동수 θi\theta_i가 한 기본 진동수의 정수배가 아니므로 엄밀한 푸리에 급수⁠(Fourier series)⁠는 아니지만, 거리의 함수를 여러 진동수의 삼각함수⁠(trigonometric function)⁠로 쌓는다는 점에서 푸리에 급수와 닮은 꼴입니다. RoFormer 논문은 내용 성분의 크기가 유계일 때 이 합의 상한⁠(upper bound)⁠이 거리가 멀수록 대체로 줄어든다는 것을 보였는데, 이것은 상한에 대한 성질이지 모든 점수가 멀수록 작아진다는 보장이 아닙니다. 2024년 바르베로 등이 학습된 Gemma 7B를 들여다본 결과는 다른 쓰임을 보여 줍니다. 가장 빠른 짝들은 '바로 앞 토큰 보기' 같은 위치 패턴을 만드는 데 쓰이고, 가장 느린 짝들은 거의 돌지 않아서 위치와 무관하게 내용을 실어 나르는 통로로 쓰이는 것으로 보였습니다. RoPE는 GPT-J(2021), PaLM(2022), LLaMA(2023)를 거쳐 공개된 큰 언어 모델 다수의 기본값이 되었습니다.

4. 거리에 비례해 점수를 깎기: ALiBi (2021). 같은 해 8월 오피르 프레스, 노아 스미스, 마이크 루이스는 위치 벡터를 아예 없앴습니다. 인과 마스크⁠(causal mask)⁠ 아래에서 i번째 쿼리가 j번째 키(j ≤ i)를 볼 때 점수에 거리에 비례하는 벌점을 더합니다.

sij=qi⋅kjd−mh (i−j),mh=2−8h/H(h=1,…,H)s_{ij} = \frac{q_i\cdot k_j}{\sqrt d} - m_h\,(i - j), \qquad m_h = 2^{-8h/H}\quad (h = 1, \dots, H)

기울기⁠(slope)⁠ mhm_h는 학습하지 않고 헤드마다 정해 둡니다. 헤드가 H = 8개이면 1/2, 1/4, …, 1/256입니다. 점수에 벌점 −m(i − j)를 더하는 것은 소프트맥스의 지수 esije^{s_{ij}}에 e−m(i−j)e^{-m(i-j)}를 곱한 뒤 행의 합이 1이 되게 다시 나누는 것과 같습니다. 그래서 가파른 헤드는 가까운 몇 토큰만 보고 완만한 헤드는 멀리까지 봅니다. 헤드를 바꾸며 '가중치' 보기에서 진한 칸이 대각선 곁에 몰리는지, 행 전체로 퍼지는지 보세요. 헤드: · 보기:

행 = 쿼리의 위치 i, 열 = 키의 위치 j. 인과 마스크로 가린 위 삼각형은 비어 있습니다. '편향'에서는 칸이 진할수록 가중치가 많이 깎이고, '가중치'에서는 내용 점수가 모두 같다고 두었을 때의 소프트맥스 결과입니다(행마다 합 1). 칸에 올리면 정확한 값이 나옵니다.

ALiBi가 외삽에 강한 까닭이 이 그림에 있습니다. 학습 때 1,024토큰까지만 보았다면, 추론 때 더 긴 입력에서 새로 생기는 것은 더 큰 거리에 붙는 더 큰 벌점뿐입니다. 먼 토큰의 가중치는 더 작아질 뿐이고(가파른 헤드에서는 이미 거의 0입니다), 망이 처음 보는 벡터를 해석해야 할 일은 생기지 않습니다. 논문은 1,024토큰으로 학습한 13억 매개변수⁠(parameter)⁠ 모델이 2,048토큰 입력에서, 2,048토큰으로 학습한 사인파 모델과 같은 퍼플렉시티를 내면서 학습은 11% 빠르고 메모리는 11% 적게 썼다고 보고했습니다. 대가도 같은 곳에 있습니다. 먼 토큰의 가중치가 작다는 것은 먼 토큰을 거의 쓰지 않는다는 뜻이기도 합니다. 2023년 치타충 등은 ALiBi 모델이 실제로 기대는 범위가 학습 길이 안에 머문다고 분석했습니다. '길어도 망가지지 않는다'와 '길어진 문맥을 쓴다'는 다른 주장입니다. ALiBi는 BLOOM(2022)과 MPT(2023)에 쓰였습니다.

5. 아무것도 넣지 않기: NoPE. 2022년 아디 하비브 등은 위치 인코딩을 전혀 넣지 않은 인과⁠(causation)⁠ 언어 모델도 표준 모델과 견줄 만하다는 것을 보였습니다. 그들의 설명으로는 위치 정보가 인과 마스크에서 나옵니다. i번째 토큰은 자기 자신을 포함해 앞쪽 i개만 볼 수 있습니다. 그래서 예컨대 보이는 모든 토큰에 고르게 주의하는 헤드에서는 첫 토큰의 값이 1/i의 가중치로 섞여 들어오고, 그 크기로부터 i를 읽어 낼 수 있습니다. 마스크가 없는 양방향 모델에서는 맨 처음의 치환 논증 때문에 이런 일이 불가능합니다. 2023년 아미르호세인 카젬네자드 등은 작은 합성 과제(덧셈, 복사 같은 것)에서 NoPE가 RoPE, ALiBi, T5 편향보다 긴 길이로 더 잘 일반화했다고 보고했습니다. 작은 규모의 실험이라 큰 모델에서도 그런지는 따로 물어야 합니다. 2025년 4월 메타는 Llama 4가 RoPE를 쓰는 층 사이사이에 위치 인코딩이 없는 어텐션 층을 끼워 넣고(iRoPE), 추론 때 어텐션 온도를 조절한다고 발표했습니다. 같은 발표에서 Llama 4 Scout는 256k토큰으로 학습하고 1,000만 토큰 문맥을 지원한다고 밝혔는데, 이것은 회사의 주장이고 그 길이에서 무엇을 얼마나 잘하는지는 따로 재야 할 문제입니다.

6. 학습 때보다 긴 문맥으로 (2023–). RoPE 모델을 학습 길이 L보다 길게 쓰면 무엇이 문제일까요? 짝 i는 거리 k에서 각도 kθik\theta_i를 봅니다. 빠른 짝은 학습 중에 이미 여러 바퀴를 돌았으니 어떤 각도든 본 적이 있습니다. 그러나 파장 2π/θi2\pi/\theta_i가 L보다 긴 느린 짝은 학습 중에 한 바퀴도 돌지 못했고, L을 넘는 거리에서는 처음 보는 각도가 나옵니다. 아래의 방법들은 모두 이 느린 짝을 어떻게 다룰지에 대한 답입니다.

2023년 6월 메타의 천서우위안 등은 위치 보간(PI)을 내놓았습니다. 목표 길이가 L′ = sL이면 위치 m을 m/s로 바꿔, 모든 각도가 학습 때의 범위 안에 머물게 합니다. LLaMA 7B–65B를 1,000걸음 이내의 미세조정⁠(fine-tuning)⁠으로 32,768토큰까지 늘렸고, 보간의 오차 상한이 외삽보다 적어도 약 600배 작다는 계산도 붙였습니다. 대가는 빠른 짝의 해상도입니다. 이웃한 두 토큰의 각도 차이가 1 rad에서 1/s rad로 줄어, 가까운 토큰을 구별하던 짝들이 흐려집니다.

같은 달 레딧 사용자 bloc97은 'NTK-aware' 스케일링을 올렸습니다. 기저 b = 10000을 b′=b sd/(d−2)b' = b\,s^{d/(d-2)}로 바꾸면 θi′=θi s−2i/(d−2)\theta_i' = \theta_i\, s^{-2i/(d-2)}가 됩니다. 가장 빠른 짝(i = 0)은 그대로이고 가장 느린 짝(i = d/2 − 1)은 정확히 PI만큼 1/s로 줄며, 그 사이는 등비적으로 섞입니다. 이름은 '입력에 고주파 정보가 없으면 망이 그것을 배우기 어렵다'는 신경 탄젠트⁠(tangent)⁠ 커널(NTK) 이론의 논의에서 왔습니다. 그러나 식 자체는 그 이론에서 유도한 것이 아니라 경험적 처방입니다. 입력 길이에 따라 s를 바꾸는 'Dynamic NTK'도 나왔습니다.

2023년 8월 보웬 펑, 제프리 퀘넬 등의 YaRN(ICLR 2024)은 짝마다 따로 정합니다. 학습 길이 동안 도는 바퀴 수 ri=Lθi/2πr_i = L\theta_i/2\pi가 32보다 많은 짝은 건드리지 않고, 1보다 적은 짝은 PI처럼 완전히 보간하며, 그 사이는 선형으로 잇습니다. 여기에 소프트맥스를 조금 날카롭게 하는 온도(1/t=0.1ln⁡s+1\sqrt{1/t} = 0.1\ln s + 1)를 더합니다. 보고된 결과는 Llama 2를 약 400 + 200걸음, 원래 학습 토큰의 약 0.1%로 64k와 128k까지 늘린 것입니다. 아래는 머리 차원 128, 기저 10000, 학습 길이 4,096(Llama 2와 같은 설정)인 모델의 64개 짝입니다. 방법: · 늘리는 배율 s =

가로 = 짝 번호(왼쪽일수록 빠름), 세로 = 파장(로그 눈금). 속 빈 점은 원래 파장, 찬 점은 바꾼 뒤의 파장입니다. 가로선 아래의 짝은 그 길이 안에서 한 바퀴 이상 돕니다. 빨간 점은 학습 때 한 바퀴도 못 돈 짝인데 목표 길이에서 처음 보는 각도가 나오는 짝입니다. 점에 올리면 수치가 나옵니다.

그대로 늘리면 느린 짝 18개가 빨개집니다. PI는 빨간 점을 모두 없애지만 모든 점을 똑같이 위로 올려 빠른 짝까지 느리게 만듭니다. NTK-aware는 빠른 짝을 지키고 넘치는 폭을 크게 줄입니다. 그래도 맨 끝 짝을 뺀 느린 짝 17개는 여전히 학습 때보다 큰 각도까지 갑니다. s = 8이면 가장 심한 짝이 학습 때 최대 각도의 약 1.75배까지 갑니다(점에 올려 보세요). NTK-aware는 미세조정 없이 쓸 때는 잘 버티지만, 미세조정과 함께 쓰면 PI보다 못한 결과를 냅니다. YaRN 논문은 그 까닭을 바로 이 약간의 외삽에서 찾았습니다. YaRN은 이미 한 바퀴 이상 돈 짝은 두고 느린 짝만 보간해, 두 문제를 함께 피합니다.

이후의 흐름은 학습 단계에서 기저를 키우는 쪽으로도 갔습니다. Code Llama(2023년 8월)는 16,384토큰 미세조정에서 기저를 1,000,000으로 올려 100k토큰 입력까지 개선을 보고했습니다. Llama 3(2024)는 기저를 500,000으로 두었고, Llama 3.1은 8,192토큰이던 문맥을 8배인 128k토큰으로 늘리면서 짝의 진동수에 따라 배율을 달리 주는, YaRN과 비슷한 방식을 썼습니다. 2024년 2월 마이크로소프트의 LongRoPE는 짝마다의 배율을 탐색으로 정해 약 200만(2,048k) 토큰까지 늘렸다고 보고했습니다.

늘린 문맥을 실제로 쓰는가. 위치 인코딩이 정하는 것은 주로 긴 입력에서 모델이 망가지지 않느냐입니다. 그 정보를 쓰느냐는 따로 재야 합니다. 2023년 넬슨 류 등은 긴 입력의 가운데에 놓인 정보가 처음이나 끝에 놓인 정보보다 덜 쓰인다는 것을 보였습니다("Lost in the Middle"). 2024년 엔비디아의 RULER 벤치마크에서는 32k토큰 이상을 지원한다고 밝힌 모델 17개 가운데 절반만이 32k에서 만족할 만한 성능을 유지했습니다. 문서에서 바늘 하나 찾기는 거의 다 풀었지만, 여러 단계를 따라가거나 모아야 하는 과제에서는 길이가 늘수록 크게 떨어졌습니다. 광고된 문맥 길이와 실제로 쓸 수 있는 길이의 차이는 지금도 측정되고 논쟁되는 문제입니다.

이어지는 곳. 위치가 왜 필요한지는 순서를 모르는 어텐션의 치환 성질에서, 위치 벡터가 어디에 더해지는지는 트랜스포머에서 볼 수 있습니다. 사인파 인코딩과 RoPE의 핵심은 모두 덧셈정리 하나이고, 그것을 행렬로 쓴 것이 회전 행렬, 복소수로 쓴 것이 오일러 공식입니다. 여러 진동수의 삼각함수를 더해 거리의 함수를 만든다는 점은 푸리에 급수와 닮았습니다. 빠른 짝 하나만 보면 거리 k와 k+2π/θik + 2\pi/\theta_i를 구별할 수 없습니다. 시곗바늘 하나로는 몇 바퀴째인지 모르는 것과 같고, 여러 진동수를 함께 써야 위치가 하나로 정해지는 까닭입니다. 위치를 정수⁠(integer)⁠ 칸에서만 읽는다는 점에서는 표본화 정리⁠(sampling theorem)⁠도 관련됩니다. 한 칸에 π rad보다 빨리 도는 짝은 반대 방향으로 더 느리게 도는 짝과 같은 각도들을 만들어 구별되지 않고(에일리어싱⁠, aliasing⁠), 가장 빠른 짝의 1 rad는 그 한계 안에 있습니다. ALiBi의 벌점이 가중치의 지수적 감소가 되는 것은 소프트맥스의 성질이고, 위치를 m/s로 바꾸는 보간은 내삽이 외삽보다 안전하다는 근사 이론⁠(approximation theory)⁠의 오래된 교훈을 따른 것입니다. 긴 문맥을 위치 인코딩이 아닌 다른 길로 다루는 방법으로는 상태를 고정된 크기로 접어 두는 상태 공간 모형⁠(state space model)⁠과, 필요한 부분만 찾아 넣는 검색 증강 생성⁠(retrieval-augmented generation)⁠이 있습니다. 이 기법들이 언제 어느 모델에 들어갔는지는 언어 모델의 발전사에서 이어집니다.

이 개념이 나오는 긴 글

언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다.

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념