Large Language Models (LLMs)가 실제로 텍스트를 생성하는 방법
Source: Dev.to

고수준 개요
대형 언어 모델(LLM)은 근본적으로 다음 토큰 예측 시스템입니다.
입력으로 토큰 시퀀스를 받으면 모델은:
- 가장 가능성이 높은 다음 토큰을 예측하고
- 시퀀스에 추가하고
- 응답이 완성될 때까지 과정을 반복합니다
그게 전부입니다.
LLM이 하지 않는 일
LLM은 하지 않습니다:
- 실행 시 사전을 조회한다
- 기본적으로 인터넷을 검색한다
- 인간처럼 추론한다
대신 학습 중에 습득한 통계적 패턴에 전적으로 의존합니다.
LLM의 두 핵심 구성 요소
1️⃣ 학습 데이터
LLM은 방대한 텍스트 데이터셋으로 학습되며, 여기에는 다음이 포함됩니다:
- 책
- 기사
- 웹사이트
- 코드 저장소
- 문서
학습 과정에서 모델은 토큰 간 통계적 관계를 학습합니다. 정확한 문장을 외우는 것이 아니라 일반화 가능한 언어 패턴을 학습합니다.
예시: “the sun is” 다음에 shining, bright, 혹은 hot 같은 토큰이 통계적으로 나타날 가능성이 높습니다. 이러한 패턴은 모델의 **파라미터(가중치)**에 인코딩됩니다.
2️⃣ 토크나이저와 어휘집
학습이 시작되기 전에 모든 LLM에는 토크나이저가 할당됩니다. 토크나이저는:
- 텍스트를 토큰(서브워드 단위)으로 분할하고
- 토큰을 숫자 ID로 변환하며
- 고정된 어휘집(예: 20 k–100 k 토큰)을 정의합니다
중요한 특성:
- 어휘집은 학습 시점에 고정됩니다.
- 모델은 이 어휘집에 있는 토큰만 생성할 수 있습니다.
- 모델마다 사용하는 토크나이저가 다릅니다.
토큰은 단어가 아니다
토큰은 다음과 같은 형태일 수 있습니다:
- 전체 단어
- 단어의 일부
- 공백이나 구두점을 포함
예시:
"unbelievable"
다음과 같이 분할될 수 있습니다:
["un", "believ", "able"]
결과:
- 토큰 수 ≠ 단어 수
- 프롬프트 길이가 중요
- 컨텍스트 제한이 존재
단일 토큰이 생성되는 과정
각 단계에서:
- 모델은 현재 토큰 시퀀스를 받습니다.
- 모든 토큰에 대한 확률 분포를 생성합니다.
- 하나의 토큰을 선택합니다(디코딩 전략에 따라).
- 시퀀스에 추가합니다
이 과정을 토큰 단위로 반복합니다.
출력이 “추론”처럼 느껴지는 이유
LLM이 추론하는 것처럼 보이는 이유는:
- 언어 자체에 추론 패턴이 내재되어 있기 때문입니다.
- 모델이 수백만 개의 설명 예시를 본 적이 있기 때문입니다.
- 토큰을 추론처럼 보이는 방식으로 예측합니다.
내부적으로는 여전히 다음 토큰을 예측하고 있을 뿐입니다.
정신 모델 (이것을 기억하라)
LLM은 이해가 아니라 확률에 기반해 한 번에 하나의 토큰씩 텍스트를 생성합니다.
이 점을 명심하면 LLM 동작에 대한 대부분의 혼란이 사라집니다.
왜 중요한가 (특히 RAG에서)
Retrieval‑Augmented Generation(RAG) 시스템에서는:
- LLM은 사실을 알지 못하고 패턴만을 알고 있습니다.
- 검색된 컨텍스트가 토큰 예측을 유도합니다.
좋은 검색 → 더 나은 다음‑토큰 확률.
TL;DR
- LLM은 다음 토큰을 예측합니다.
- 기본적으로 생각하거나 검색하지 않습니다.
- 토크나이저가 모델이 생성할 수 있는 것을 정의합니다.
- 모든 과정은 한 토큰씩 진행됩니다.
이 정신 모델을 이해하면 프롬프트 엔지니어링, RAG 설계, 디버깅이 훨씬 쉬워집니다.