ChatGPT도 이 페이지의 모델도 규칙은 하나입니다. 지금까지 나온 글을 보고 다음 조각을 맞힙니다. 파라미터 약 7만 개짜리 트랜스포머를 여러분 브라우저에서 직접 학습시키며, 아무 글자나 내던 모델이 헌법처럼 보이는 문장을 쓰게 되는 과정을 봅니다.
모델은 숫자만 봅니다. 그래서 먼저 글을 조각(토큰)으로 자르고 조각마다 번호를 붙입니다. 이 페이지는 한국어를 자모로 자릅니다. '한'은 ㅎ + ㅏ + ㄴ이 됩니다. 그러면 음절 380가지 대신 토큰 약 75가지만 남습니다.
| 헌법, 1,000단계, 시드 1 | 토큰 종류 | Next Token 검증 손실 | 바이그램 검증 손실 | 차이 |
|---|---|---|---|---|
| 음절로 자르기 | 380 | 3.285 | 3.157 | +0.128 |
| 자모로 자르기(이 페이지) | 75 | 1.583 | 2.087 | −0.504 |
손실 값은 같은 자르기 방식 안에서만 비교합니다. 자모가 음절보다 작은 단위이기 때문입니다. 음절로 자르면 이 작은 모델은 1,000단계 안에 바이그램을 넘지 못했고, 자모로 자르면 0.50 앞섰습니다.
BPE(byte-pair encoding)는 글자 하나씩에서 시작해, 가장 자주 붙어 나오는 두 토큰을 새 토큰 하나로 합치기를 되풀이합니다. 슬라이더로 말뭉치 앞 4,000자에서 배운 합치기를 늘려 가며, 내 문장이 어떻게 잘리는지 보세요.
다음 토큰을 맞히는 가장 단순한 방법은 세는 것입니다. 학습 글에서 각 토큰 뒤에 무엇이 왔는지 세어 확률로 바꿉니다. 이것이 바이그램 모델입니다. 학습이 필요 없지만 늘 한 토큰 뒤만 봅니다. 트랜스포머가 이걸 못 이기면 쓸모 있는 걸 배우지 못한 것입니다.
행은 지금 글자, 열은 다음 글자(가장 흔한 글자 24개, 진할수록 자주). 행을 누르세요.
글자마다 바로 앞 글자만 보므로, 짧게는 그럴듯해도 글이 표류합니다. 다음 탭의 트랜스포머가 메우는 것이 이 틈입니다.
한 단계마다 64토큰짜리 창 8개를 무작위로 뽑아 손실을 재고, 7만 개 숫자를 각각 어느 쪽으로 움직여야 손실이 줄지 계산(역전파)한 뒤 조금 움직입니다(AdamW). 학습 손실은 외우기만 해도 계속 내려갑니다. 정직한 점수는 처음 보는 글로 잰 검증 손실입니다. 학습 손실은 내려가는데 검증 손실이 멈추면 외우기 시작한 것입니다. 이것이 과적합입니다.
| 검증 손실, 1,000단계, Node 22 | 시드 1 | 바이그램 | 글자 빈도만 | 고르게 찍기 |
|---|
이 페이지의 학습기: 30단계 워밍업 뒤 1,000단계 동안 0.01에서 0.0005로 코사인 감소(AdamW). 워밍업은 아직 크기가 맞지 않은 첫 갱신을 작게 하고, 감소는 끝에 자리를 잡게 합니다.
각 층에서 모든 위치는 질문(query)을 만들고, 앞의 위치들은 열쇠(key)를 내놓습니다. 질문과 열쇠가 얼마나 맞는지로 앞 토큰의 값(value)을 얼마나 가져올지 정합니다. 이 모델은 2층 × 머리 4개입니다. 아래에서 밝은 토큰일수록, 마지막 위치가 다음을 맞힐 때 그 토큰을 많이 봅니다.
어텐션은 질의 벡터를 모든 열쇠와 비교하고(내적), 소프트맥스로 점수를 가중치로 바꾸고, 그 가중치로 값들을 평균합니다. 흰 질의 화살표를 끌어 보세요. 인과 마스크를 켜면 지금 토큰(4번째)은 뒤 토큰을 볼 수 없습니다.
분산 1인 무작위 벡터의 d항 내적은 표준편차가 √d입니다. 나누지 않으면 d가 클수록 점수 16개의 소프트맥스가 거의 한 칸에 몰려 기울기가 사라집니다. √d로 나누면 어느 d에서나 퍼짐이 같습니다. (무작위 2,000번, 시드 고정)
모델이 내놓는 건 확률뿐입니다. 글을 쓰려면 그 확률대로 토큰 하나를 뽑아 붙이고 다시 반복합니다. 온도는 확률로 바꾸기 전에 점수를 나누는 값입니다. 1보다 작으면 흔한 토큰이 더 흔해져 글이 되풀이되고, 1보다 크면 확률이 평평해져 글이 무너집니다.
"오늘 날씨는" 뒤에 올 후보 12개와, 보기로 손으로 정한 그럴듯한 점수(로짓).
구조는 같습니다. 토큰 임베딩, 위치 임베딩, 어텐션, 피드포워드 층, 층 정규화를 쌓습니다. 다른 것은 규모와, 사전 학습 뒤에 하는 일입니다.
| 이 페이지 | GPT-2 (2019) | GPT-3 (2020) | |
|---|---|---|---|
| 파라미터 | 약 6.7만 | 1.24억~15억 | 1,750억 |
| 층 × 머리 | 2 × 4 | 12×12 ~ 48×25 | 96 × 96 |
| 문맥 길이 | 자모 64개 | 1,024토큰 | 2,048토큰 |
| 학습 글 | 자모 약 3.4만 개 | WebText 40GB | 3,000억 토큰 |
대화형 AI는 한 단계를 더 거칩니다. 다음 토큰 맞히기로 사전 학습한 뒤, 예시 대화와 사람의 선호 평가로 다시 조정합니다(RLHF). 그 단계에서 지시를 따르는 법을 익히지만, 속에서 도는 엔진은 여전히 다음 토큰을 맞힙니다.
GPT식 디코더: 층마다 약 12·d²(어텐션 4d², 피드포워드 8d²)에 토큰·위치 임베딩. 편향과 층 정규화는 뺐으므로 실제 모델과 조금 다릅니다.
학습 비용은 대략 6 × 매개변수 × 토큰 수 번의 연산입니다. 예산이 정해지면 큰 모델을 적은 글로, 작은 모델을 많은 글로 학습할 수 있습니다. 아래는 Chinchilla 논문이 맞춘 식으로 나눔마다 손실을 예측한 것이고, 뚜렷한 가장 낮은 곳이 있습니다. 같은 논문의 실험 기반 방법은 그 비율을 매개변수당 토큰 약 20개로, 이 식은 그보다 크게 잡으므로 정확한 숫자는 대략으로 보세요.
교육용 장난감입니다. 생성된 글은 법 해석이나 누군가의 의견이 아니며, 손실 값은 맞을 확률이 아닙니다.