학습 자료

LLM 은 자동완성의 괴물 — 토큰과 다음 단어


Article

Part 3 끝에서 이렇게 미뤄뒀다. "ChatGPT 같은 것들이 실제로 하는 일이 '다음 단어를 잘 맞히는 것'뿐이라는, 다소 허탈한 진실부터 본다." 이번 강이 그 문장을 연다.

3강에서 LLM 을 "글을 다루는 생성형 AI"라 불렀다. 그런데 "글을 만들어낸다"는 말은 그럴듯해 보여도 안을 들여다보면 훨씬 단순하다. LLM 은 지금까지 쓰인 글을 보고, 다음에 올 조각 하나를 확률로 고르는 일을 반복할 뿐이다. 그 조각 하나의 이름이 **토큰(token)**이고, 이번 강의는 그 토큰과 반복이 어떻게 문장이 되는지를 그림으로 본다.

글자 그대로 읽지 않는다 — 토큰으로 쪼갠다

LLM 은 문장을 통째로 읽지 않는다. 먼저 토큰이라 부르는 작은 조각으로 쪼갠다. 이 조각은 단어와 같을 때도 있지만, 단어 하나가 여러 토큰으로 쪼개지기도 한다.

문장을 그대로 안 읽고 토큰으로 쪼갠다 (개념 예시)
원래 문장토큰으로 쪼개면토큰 수
Hello worldHello / world2개
unbelievableun / believ / able3개
인공지능은 대단하다인공 / 지능 / 은 / 대단 / 하다5개
실제 토크나이저의 결과와는 다를 수 있다. 모델마다 쪼개는 방식이 다르지만, '문장을 그대로 안 읽고 작은 조각으로 나눈다'는 원리는 같다.

왜 단어 통째로 안 쓰고 이렇게 잘게 쪼갤까. 세상의 모든 단어를 통째로 외워두려면 목록이 끝이 없다. 처음 보는 단어, 오타, 신조어까지 전부 걸린다. 대신 작은 조각으로 쪼개두면, 그 조각들을 조합해 처음 보는 단어도 어떻게든 표현할 수 있다. 토큰은 LLM 이 세상 모든 글을 감당 가능한 개수의 조각으로 나눠 다루는 방법이다.

매 순간 하는 일은 '다음 토큰 확률 계산'뿐이다

토큰으로 쪼갠 다음, LLM 이 하는 일은 딱 하나다. 지금까지 나온 토큰들을 보고, 다음에 올 토큰이 뭘지 확률로 매기는 것.

"오늘 날씨가 정말" 다음에 올 토큰 후보 (개념 예시)
좋다43
덥다25
흐리다18
가방2
실제 모델이 계산한 수치가 아니라 개념을 보여주는 예시다. 문맥에 자연스러운 단어일수록 확률이 높고, 안 맞는 단어(가방)일수록 낮다.

이 확률은 2강에서 본 그 손잡이(가중치)들을 전부 거쳐 나온 숫자다. 손잡이가 많을수록, 학습에 쓴 글이 많을수록 이 확률은 더 그럴듯해진다. 그리고 LLM 은 이 확률이 가장 높은 토큰(또는 약간의 무작위성을 섞어 고른 토큰) 하나를 고른다.

그 토큰을 붙이고, 다시 처음부터

문장 하나를 통째로 한 번에 뱉는 게 아니다. 토큰 하나를 고르면, 그걸 문장 끝에 붙이고, 늘어난 문장을 가지고 처음부터 다시 계산한다.

다음 토큰을 고르고, 붙이고, 다시 고른다
  1. 지금까지의 토큰들을 본다질문 + 지금까지 생성한 토큰 전부
  2. 다음 토큰의 확률을 계산한다가능한 토큰마다 그럴듯한 정도를 매긴다
  3. 가장 그럴듯한 토큰을 고른다확률이 높은 토큰 하나를 선택한다
  4. 그 토큰을 문장 끝에 붙인다늘어난 문장을 들고 다시 1번으로
이 고리를 문장이 끝날 때까지 반복한다. ChatGPT 가 답을 한 글자씩 흘리듯 보여주는 게 바로 이 반복이 화면에 드러난 모습이다.

이 반복을 자동완성이라 부른 이유가 여기 있다. 스마트폰 키보드가 다음 글자를 추천하는 것과 원리는 같다. 다만 LLM 은 그 추천을 훨씬 더 많은 손잡이와 훨씬 더 많은 글로 다듬었을 뿐이다. "괴물"이라 부른 것도 그 규모 때문이다.

학습과 생성은 다른 일이다

학습 (training)

2강에서 본 그 고리

  • 손잡이(가중치)를 계속 조정한다
  • 정답과 비교해 채점한다
  • 한 번 끝나면 모델이 완성된다
  • 엄청난 데이터와 시간이 든다

생성 (inference)

이번 강의의 그 고리

  • 손잡이는 이미 고정돼 바뀌지 않는다
  • 그 고정된 손잡이로 확률만 계산한다
  • 문장이 끝날 때까지 반복한다
  • 질문 한 번에 걸리는 시간이 훨씬 짧다
이 두 일을 가르는 이름이 채용공고에도 그대로 쓰인다 — training(학습)과 inference(추론).

정리하면

LLM 은 문장을 토큰으로 쪼개 읽고, 매 순간 다음 토큰의 확률을 계산해 가장 그럴듯한 것을 고른 뒤 붙이는 일을 반복한다.

다시 짚어보기
  1. 01

    LLM 은 글자가 아니라 토큰 단위로 읽고 쓴다

    단어 하나가 여러 토큰으로 쪼개지기도 한다. 그래서 처음 보는 단어도 조각을 조합해 다룬다.

  2. 02

    매 순간 하는 일은 '다음 토큰 확률 계산'뿐이다

    2강의 손잡이들을 거쳐, 다음에 올 토큰마다 그럴듯한 정도를 숫자로 매긴다.

  3. 03

    토큰을 고르고 붙이는 걸 반복해 문장이 된다

    이 반복은 학습이 아니라 생성(추론)이다. 손잡이는 이미 고정돼 있다.

  4. 04

    그럴듯함과 사실 여부는 다른 문제다

    다음 토큰 고르기는 '문맥에 자연스러운가'를 볼 뿐, 사실을 확인하지 않는다. 15강(환각)에서 정면으로 다룬다.

그런데 다음 토큰의 확률을 계산할 때, 지금까지 나온 토큰 전부를 똑같은 비중으로 보는 걸까. 아니다. 문장이 길어질수록 어떤 토큰이 더 중요한지 가려야 한다. 그 장치가 다음 강의의 attention이고, 그걸 쌓아 올린 구조가 트랜스포머다.

LLM 은 자동완성의 괴물 — 토큰과 다음 단어 — 디코드랩(DCODELAB)