Text Gen AI/자연어 처리 (NLP)

토큰화와 임베딩 - LLM이 언어를 이해하는 방식

Vento AI 연구소 2026. 5. 2.
반응형

대형 언어 모델(Large Language Model, LLM)이 문장을 이해하고 생성하는 과정에서 중요한 단계는 바로 토큰화(Tokenization)와 임베딩(Embedding)이다.

이 글에서는 이 두 과정을 실제 예시를 들어 설명하며, LLM이 어떻게 ‘문자’를 ‘의미 있는 벡터’로 바꾸는지 살펴보고자 한다.

1. 토큰화

문장을 기계가 읽을 수 있도록 나누다.

토큰화는 문장을 의미 있는 단위(토큰)로 분할하는 과정이다. 일반적으로 자연어처리에서는 단어 단위로 자르지만, GPT 모델은 더 세분화된 방식인 서브워드(subword) 토크나이징을 사용한다. 이는 Byte Pair Encoding(BPE)이나 SentencePiece와 같은 알고리즘을 통해 이루어지며, 자주 등장하는 단어 조각들을 기반으로 문장을 분해한다.

“나는 사과를 좋아해.”

 

이 문장은 다음과 같이 토큰화될 수 있다:
 
['▁나는', '▁사과', '를', '▁좋아', '해', '.']

 

‘▁’ 기호는 공백(띄어쓰기)을 나타낸다.

이러한 조각들은 각각 토큰 사전에 있는 고유 번호(ID)로 매핑된다.

['▁나는', '▁사과', '를', '▁좋아', '해', '.'] → [1201, 4302, 12, 6723, 102, 4] (가상의 토큰 ID)

 

이렇게 하면 자연어가 모델이 이해할 수 있는 숫자 형태로 변환된다.

2. 임베딩

숫자에 의미를 부여하다

토큰 ID는 단순한 정수에 불과하다. 모델은 이 숫자들을 입력값으로 받아들이기 위해 고차원 벡터로 변환하는 과정이 필요하다. 이때 수행되는 작업이 바로 임베딩(Embedding)이다.

벡터로의 변환

각 토큰 ID는 사전에 정의된 임베딩 행렬(Embedding Matrix)을 통해 고정된 크기의 실수 벡터로 변환된다. 예를 들어 GPT-2 기준으로는 768차원 벡터로 임베딩된다.

1201 → [0.18, -0.04, ..., 0.12]  
4302 → [0.25,  0.02, ..., -0.09]  
...
 
 
이러한 벡터는 단어 간의 의미, 문맥, 유사성 등을 내포하고 있으며, 모델 내부에서는 이 벡터들 간의 연산을 통해 문맥 이해, 예측, 생성 등의 작업이 수행된다.

임베딩의 의미

  • “사과”와 “배”처럼 유사한 단어는 벡터 간 거리도 가까움
  • “좋아해”와 “사랑해”처럼 같은 계열의 감정 표현도 유사한 방향의 벡터를 가짐
  • 이는 LLM이 언어의 의미 공간(Semantic Space)을 형성하고 활용하고 있다는 것을 의미한다

3. 전체 흐름 정리

아래는 전체 흐름을 시각화한 요약이다:

[입력 문장]
“나는 사과를 좋아해.”

↓

[토큰화]
['▁나는', '▁사과', '를', '▁좋아', '해', '.']

↓

[토큰 ID]
[1201, 4302, 12, 6723, 102, 4]

↓

[임베딩]
→ 각 토큰이 768차원의 벡터로 변환됨

↓

[모델 입력]
→ 문맥 파악, 예측, 생성 등 고차원 연산 수행

 

4. 마치며

토큰화와 임베딩은 LLM이 언어를 ‘그냥 텍스트’가 아닌 계산 가능한 정보로 바꾸는 핵심 단계이다. 단어를 숫자로, 숫자를 벡터로, 벡터를 다시 의미로 연결하는 이 정교한 구조 덕분에, 우리는 인공지능이 마치 사람처럼 글을 쓰고, 요약하며, 대화를 이어가는 모습을 볼 수 있게 된 것이다.

댓글