Day 2: 자연어 처리(NLP) 기초 용어
LLM을 이해하려면 NLP(자연어 처리) 용어를 먼저 알아야 합니다. 오늘은 LLM 논문과 문서에서 가장 자주 등장하는 NLP 용어를 정리합니다.
NLP 핵심 용어표
| 용어 | 설명 | 예시 |
|---|---|---|
| 토큰(Token) | 텍스트의 최소 처리 단위 | ”안녕하세요” → [“안녕”, “하세요”] |
| 코퍼스(Corpus) | 학습에 사용하는 텍스트 데이터 모음 | 위키백과 전체, 뉴스 기사 모음 |
| 어휘(Vocabulary) | 모델이 아는 모든 토큰의 집합 | GPT-4의 어휘 크기: ~100,000개 |
| 임베딩(Embedding) | 단어를 숫자 벡터로 변환한 것 | ”왕” → [0.2, -0.5, 0.8, …] |
| 시퀀스(Sequence) | 순서가 있는 토큰의 나열 | 하나의 문장 또는 문단 |
| 어텐션(Attention) | 입력 중 중요한 부분에 집중하는 메커니즘 | ”그는 사과를 먹었다”에서 “그”가 누구인지 |
| 인코딩(Encoding) | 입력을 내부 표현으로 변환 | 문장 → 벡터 |
| 디코딩(Decoding) | 내부 표현을 출력으로 변환 | 벡터 → 문장 |
| Perplexity | 모델의 예측 불확실성 지표 (낮을수록 좋음) | PPL=15: 다음 단어 후보가 약 15개 |
| 컨텍스트 윈도우 | 모델이 한 번에 처리할 수 있는 토큰 수 | 최신 모델은 수만~수십만 토큰 이상 지원 |
토큰화 기본 개념
# 가장 간단한 토큰화: 공백 기준 분리
sentence = "자연어 처리는 정말 재미있습니다"
tokens_simple = sentence.split()
print(tokens_simple)
# ['자연어', '처리는', '정말', '재미있습니다']
# 실제 LLM은 서브워드(subword) 토큰화를 사용
# "재미있습니다" → ["재미", "있", "습니다"] 처럼 더 잘게 쪼갬
임베딩 직관적 이해
import numpy as np
# 임베딩: 단어를 숫자 벡터로 표현
# 의미가 비슷한 단어는 벡터 공간에서 가까이 위치
embeddings = {
"왕": np.array([0.8, 0.2, -0.5, 0.9]),
"여왕": np.array([0.7, 0.3, -0.4, 0.85]),
"사과": np.array([-0.2, 0.9, 0.6, -0.1]),
}
# 코사인 유사도로 단어 간 유사성 측정
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
print(f"왕-여왕 유사도: {cosine_similarity(embeddings['왕'], embeddings['여왕']):.3f}")
print(f"왕-사과 유사도: {cosine_similarity(embeddings['왕'], embeddings['사과']):.3f}")
# 왕-여왕: 높은 유사도 / 왕-사과: 낮은 유사도
Perplexity 계산 예시
import numpy as np
# Perplexity: 모델이 다음 단어를 얼마나 잘 예측하는지
# PPL = exp(평균 크로스 엔트로피 손실)
def calculate_perplexity(loss):
return np.exp(loss)
good_model_loss = 2.7 # 잘 학습된 모델
bad_model_loss = 5.5 # 학습이 덜 된 모델
print(f"좋은 모델 PPL: {calculate_perplexity(good_model_loss):.1f}")
print(f"나쁜 모델 PPL: {calculate_perplexity(bad_model_loss):.1f}")
# PPL이 낮을수록 다음 단어 예측을 잘하는 모델
NLP 용어는 하루 만에 다 외울 수 없습니다. 이 표를 참고하면서 앞으로 나올 개념들을 하나씩 깊이 파고들겠습니다.
오늘의 연습문제
- “인공지능이 세상을 바꾸고 있습니다”라는 문장을 공백 기준, 음절 기준, 의미 기준으로 각각 토큰화해보고 차이점을 설명하세요.
- 임베딩 벡터의 차원(dimension)이 크면 어떤 장단점이 있는지 정리해보세요. Word2Vec(300차원)과 최신 대형 모델 임베딩(고차원)을 비교해보세요.
- Perplexity가 1이면 어떤 의미인지, 그리고 현실에서 PPL=1인 모델이 가능한지 생각해보세요.