트랜스포머(Transformer)
어텐션(토큰(token) 사이를 섞기)과 MLP(토큰마다 변환하기)를 잔차 연결(residual connection)과 층 정규화(layer normalization)로 감싸 여러 층 쌓은 신경망(neural network). 오늘날 대부분의 큰 언어 모델(language model)이 이 구조다.
트랜스포머는 토큰 열을 받아 토큰마다 벡터(vector) 하나를 내놓는 신경망입니다. GPT 같은 언어 모델은 각 위치의 벡터로 그 바로 다음 토큰의 확률(probability)을 계산합니다. 학습할 때는 모든 위치에서 한꺼번에 맞히고, 글을 이어 쓸 때는 마지막 위치의 예측만 씁니다. 전체 흐름은 세 부분입니다.
- 임베딩(embedding). 토큰 번호 t에 대해 V×d 행렬(matrix)의 t번째 행을 꺼냅니다(V는 어휘 크기, d는 모델의 폭). 원래 설계와 GPT-2에서는 여기에 위치를 나타내는 벡터를 더합니다(아래 '위치' 참고).
- 블록 L개. 블록마다 두 단계가 있습니다. 어텐션(attention)은 토큰들 사이에 정보를 섞고, MLP(작은 2층 신경망)는 토큰마다 따로 벡터를 변환합니다. 두 단계 모두 입력을 층 정규화한 다음 계산하고, 그 결과를 원래 입력에 더합니다(잔차 연결).
- 출력. 마지막 벡터에 d×V 행렬을 곱해 어휘 크기만큼의 점수(로짓, logit)를 얻고, 소프트맥스(softmax)로 다음 토큰의 확률로 바꿉니다.
위 식은 GPT-2(2019) 이후 흔해진 배치로, 정규화를 각 단계의 앞에 둡니다. 2017년 원래 논문은 더한 뒤에 정규화했습니다. 부품을 하나씩 봅시다.
잔차 연결. 블록은 x를 새 값으로 갈아 끼우지 않고
층 정규화. 토큰 하나의 벡터에서 d개 성분의 평균(mean)을 빼고 표준편차(standard deviation)로 나눈 뒤, 성분마다 학습되는 배율 γ와 이동 β를 적용합니다.
통계(statistics)에서 자료를 표준화(standardization)하는 것(평균 0, 분산(variance) 1로 맞추기)을 층마다 토큰마다 하는 셈입니다. ε은 0으로 나누지 않으려고 더하는 아주 작은 수입니다. 어텐션과 MLP에 들어가는 벡터의 크기가 층마다 들쭉날쭉하지 않도록 맞춰 주어 학습을 안정시킵니다(2016년 지미 바, 제이미 키로스, 제프리 힌턴). 평균은 빼지 않고 제곱평균의 제곱근으로만 나누는 RMSNorm도 많이 씁니다.
MLP. 폭 d의 벡터를 4d로 넓혔다가(d×4d 행렬) 비선형 함수(ReLU나 그것을 매끄럽게 한 GELU)를 거쳐 다시 d로 줄입니다(4d×d 행렬). 모든 위치에 같은 가중치(weight)를 따로따로 적용하므로 토큰 사이를 섞지 않습니다. 토큰 사이를 섞는 일은 어텐션만 합니다. 요즘 모델은 게이트를 단 변형(SwiGLU)을 많이 쓰는데, 그때는 행렬이 셋이 되어 아래의 매개변수(parameter) 셈이 조금 달라집니다.
위치. 마스크가 없으면 어텐션은 토큰의 순서를 모릅니다. 2017년 원래 트랜스포머는 위치 p에 다음 벡터를 더했습니다. 성분을 둘씩 짝지어, 짝마다 진동수(frequency)
시계의 초침, 분침, 시침처럼 빠른 바늘과 느린 바늘을 함께 보면 시각을 읽을 수 있다는 생각입니다. 다만 시계 바늘은 60배, 12배씩 느려지지만, 여기서는 한 짝 건널 때마다 진동수가 같은 비율(d = 16이면 약 3.16배)로 줄어듭니다. 이 선택에는 정확한 이점이 있습니다. 덧셈정리(addition formula)에 따라
이므로, k칸 뒤의 위치 벡터는 p와 상관없는 회전 행렬(rotation matrix)을 곱해 얻어집니다. 그래서 두 위치 벡터의 내적(dot product)은
다만 모델이 보는 것은 위치 벡터끼리의 내적이 아닙니다. 토큰 벡터에 위치 벡터를 더한 뒤 쿼리(query)·키 행렬을 곱한 것의 내적입니다. 그래서 점수에서 위치가 하는 몫이 두 위치의 거리에만 달려 있다는 보장은 사라집니다. 2021년의 회전 위치 임베딩(RoPE)은 쿼리와 키의 성분 짝을 위치에 비례하는 각도만큼 직접 회전시켜 이 보장을 되찾았습니다. 그러면 점수는 두 토큰의 내용과 거리 p − q에만 달리고, 절대 위치 p에는 달리지 않습니다. 오늘날 공개된 큰 언어 모델 다수가 이 방식을 씁니다. 학습되는 위치 벡터, 상대 위치(relative position) 편향, RoPE와 ALiBi, 학습 때보다 긴 문맥으로 늘리는 보간(interpolation)까지의 흐름은 위치 인코딩(positional encoding)의 변천에서 다룹니다.
매개변수 세기. 이제 모델의 크기를 셀 수 있습니다. 블록 하나에서 어텐션은 d×d 행렬 넷(
모델:
GPT-2 작은 모델(d = 768, L = 12, V = 50,257, 문맥 1,024)을 넣으면 합계가 124,439,808개로, 공개된 가중치 파일의 매개변수 수와 정확히 같습니다. 이때는 토큰 임베딩과 위치 벡터가 전체의 약 32%입니다. GPT-3(d = 12,288, L = 96)에서는
트랜스포머가 순환 신경망(recurrent neural network)을 대신하게 된 까닭은 주로 계산 방식에 있습니다. 순환 신경망은 앞 토큰의 상태가 나와야 다음 토큰을 계산할 수 있어서 학습할 때도 길이 방향으로 차례차례 계산해야 합니다. 트랜스포머는 학습할 때 모든 위치를 한꺼번에 행렬 곱으로 계산하므로 GPU의 병렬 계산을 잘 씁니다. 또 어느 두 위치 사이든 어텐션 한 번이면 정보가 오갑니다. 대가는 어텐션의 비용이 길이의 제곱으로 는다는 것입니다. 쓰임에 따라 모양도 셋입니다. 원래의 인코더–디코더(번역), 인과 마스크(causal mask) 없이 문장 전체를 읽는 인코더만의 모델(BERT), 인과 마스크를 쓰고 다음 토큰만 예측하는 디코더만의 모델(GPT 계열)입니다.
이론으로 알려진 것도 있습니다. 2020년 윤철희 등은 위치 인코딩을 넣은 트랜스포머가, 길이가 정해진 입력에서 연속인 수열→수열 함수를 원하는 만큼 가깝게 근사할 수 있음을 증명했습니다. 입력은 유계 닫힌 영역 안에 있어야 하고, 가까움은 점마다의 최대 오차가 아니라 영역 전체에서 적분(integral)한 오차(
이어지는 곳. 블록의 핵심인 어텐션은 쿼리와 키의 내적과 소프트맥스로 이루어지고, 입력 토큰은 토큰화가 정합니다. 맨 끝의 소프트맥스 출력으로 학습하는 목표는 언어 모델의 교차 엔트로피(cross-entropy)이고, 기울기는 역전파와 자동 미분(automatic differentiation)으로 구해 확률적 경사 하강법(stochastic gradient descent)과 Adam으로 가중치를 고칩니다. 사인파 위치 인코딩은 여러 진동수의 사인(sine)·코사인(cosine)을 쓴다는 점에서 푸리에 급수(Fourier series)와 닮았습니다. 다만 푸리에 급수는 함수 하나를 사인파들의 합으로 나타내고, 위치 인코딩은 위치 하나를 여러 사인파의 값들로 적습니다. 그 핵심 성질은 회전 행렬 하나로 설명됩니다. 매개변수 수 N과 학습 토큰 수 D로 손실을 가늠하는 경험식은 규모의 법칙에서, 학습된 모델로 글을 쓰는 규칙은 디코딩에서 다룹니다. 블록 안의 MLP를 여러 개 두고 토큰마다 몇 개만 골라 쓰는 방법은 전문가 혼합(mixture of experts)에, 어텐션 대신 고정된 크기의 상태를 선형으로 갱신하는 대안은 상태 공간 모형(state space model)에 있습니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- n-그램 언어 모델
… 토큰(낱말이나 낱말 조각)의 확률을 매긴다'는 틀은 같습니다. 다만 확률을 횟수로 세지 않고 신경망(트랜스포머)으로 계산하며, 문맥을 수천 토큰 이상으로 늘렸습니다.
- 신경망
… 신경망⟧). 그래서 고양이 귀가 그림의 어디에 있든 같은 가중치로 알아봅니다. 2017년에 나온트랜스포머는 문장의 낱말 벡터들을 각각 변환한 벡터들 사이의 내적으로 각 낱말이 다른 낱말에 얼마나 주목할지를 …
- 기계 학습
… 탐색⟧을 엮은 딥마인드의 알파고가 이세돌 9단을 4 대 1로 이겼고, 2017년 구글 연구자들이 발표한트랜스포머구조(문장 속 낱말마다 다른 낱말을 얼마나 참고할지 계산하는 신경망)는 오늘날의 대형 언어 모형의 …
- 자동 미분
… 경사 하강법⟧이나, 기울기의 최근 평균으로 걸음 크기를 조절하는 그 변형 Adam이 가중치를 고칩니다.트랜스포머로 만든 언어 모델의 학습도 이 계산의 되풀이입니다. 뉴턴 방법: 방정식 여러 개를 함께 풀 때 …
- 인공지능
… 대형 언어 모델(2017년–). 2017년 구글 연구자들은 순환 구조 없이 어텐션만으로 문장을 처리하는트랜스포머를 발표했습니다. 병렬 계산이 쉬워 아주 큰 모델을 학습시킬 수 있었고, 글을 토큰으로 쪼개 다음 …
- 합성곱 신경망
… 층을 건너뛰는 지름길 연결로 152층짜리 망을 학습시켰습니다. 2020년 무렵부터는 그림을 조각으로 잘라트랜스포머에 넣는 방법(ViT)도 자료가 충분하면 CNN과 겨룰 만하다는 결과가 나왔습니다. 이동 대칭을 구조에 …
- 순환 신경망과 LSTM
… 어텐션을 덧붙였습니다. 2016년에는 구글 번역도 LSTM 기반 신경망으로 바뀌었습니다. 2017년의트랜스포머는 순환을 아예 없애고 어텐션만 남겼습니다. 걸음을 차례로 하나씩 계산해야 하는 RNN과 달리 모든 위치를 …
- 토큰화와 BPE
… 이어지는 곳. 토큰 번호 하나는 모델 안에서 임베딩 행렬의 한 행, 곧 단어 임베딩 같은 벡터로 바뀌어트랜스포머에 들어갑니다. 언어 모델이 배우는 것은 이 토큰 열의 확률이라서, 퍼플렉시티 같은 점수도 토크나이저에 …
- 어텐션
… bites dog'처럼 같은 토큰으로 된 다른 문장을 구별하려면 위치 정보를 따로 넣어야 하고, 그 방법은트랜스포머에서 다룹니다. 입력에 위치 벡터를 더하는 방법에서 쿼리와 키를 위치만큼 회전시키는 RoPE까지, 그 …
- 언어 모델과 다음 토큰 예측
… 연쇄⟧의 가정), 순환 신경망은 지금까지의 글을 고정된 크기의 벡터 하나에 요약하며,트랜스포머는 정해진 문맥 창 안의 모든 토큰을 어텐션으로 직접 봅니다. 무엇을 최소화하는가. 모델 q의 학습 …
- 규모의 법칙
… 몇 달과 막대한 돈이 드니, 미리 알 수 있다면 쓸모가 큽니다. 2020년 오픈AI의 재러드 캐플런 등은트랜스포머언어 모델을 크기를 바꿔 가며 여럿 학습시켜 이 물음에 답하려 했습니다. 모델의 크기는 매개변수 수 N으로 …
- 위치 인코딩의 변천
… , 곧 원래 출력의 행을 섞은 것만 남습니다. 그래서트랜스포머에는 위치를 따로 알려 주는 장치가 필요합니다. 2017년부터 지금까지 이 장치는 여러 번 바뀌었고, 바뀔 …
- 상태 공간 모형과 선형 순환
… 걸음마다 고정된 크기의 상태만 들고 갑니다. 그래서 지나온 모든 토큰의 키와 값을 쌓아 두어야 하는트랜스포머와 달리 메모리가 길이에 따라 늘지 않습니다. 아래 그림은 상태가 복소수 하나인 가장 작은 경우입니다( …
- 추론 모델과 테스트 시점 계산
… 모델). 왜 도움이 될까요? 완전한 설명은 없지만 구조적인 이유 하나는 분명합니다.트랜스포머는 토큰 하나를 만들 때마다 정해진 수의 층만 거치므로, 토큰 하나에 쓸 수 있는 계산에는 상한이 …
- 전문가 혼합
… 일부)을 하나씩 처리합니다. 매개변수는 학습으로 값이 정해지는 수들이고, 그 개수가 모델의 크기입니다.트랜스포머는 같은 모양의 블록을 여러 겹 쌓은 것인데, 블록마다 토큰끼리 정보를 주고받는 부분(어텐션)과, 토큰마다 …
- 검색 증강 생성
… 않는 변수로 두고 더하는 계산은 조건부 확률과 베이즈 정리의 일이고, 찾은 글이 들어가는 자리는트랜스포머의 문맥 창, 그 창을 길게 늘리는 방법은 위치 인코딩에 있습니다. 긴 문맥과 도구 사용이 발전해 온 …
- 언어 모델의 발전사: RLHF 이후
… 인코딩⟧에서, 어텐션을 대신하려는 선형 순환은 상태 공간 모형에서 이어집니다. 모든 모델의 뼈대인트랜스포머와 어텐션, 입력을 자르는 토큰화, 글을 뽑는 디코딩, 크기와 성능의 경험식인 규모의 법칙은 …