Perplexity
Perplexity
언어 모델의 예측 불확실성 지표. 낮을수록 좋은 모델.
Perplexity
언어 모델의 예측 불확실성 지표. 낮을수록 좋은 모델.
Perplexity는 두 가지 의미로 사용됩니다. 첫째, 언어 모델의 예측 능력을 측정하는 평가 지표입니다. 모델이 다음 토큰을 얼마나 "당혹스러워"하는지를 나타내며, 낮을수록 더 좋은 모델입니다. 둘째, AI 검색 엔진 회사인 Perplexity AI를 지칭합니다.
평가 지표로서 Perplexity는 정보이론에서 유래했습니다. 수학적으로 교차 엔트로피(Cross-Entropy)의 지수값으로 정의됩니다. GPT-2는 WikiText-103에서 PPL 17.48을 달성했고, GPT-3는 이를 크게 개선했습니다. Perplexity AI는 2022년 설립되어 LLM 기반 검색 서비스를 제공합니다.
Perplexity 지표의 핵심 원리는 모델이 예측하는 확률 분포와 실제 분포 간의 차이를 측정하는 것입니다. PPL = 2^(H(p,q))로 계산되며, H(p,q)는 교차 엔트로피입니다. 완벽한 예측은 PPL=1이고, 어휘 크기가 V인 균등 분포 예측은 PPL=V입니다.
실무에서 Perplexity는 언어 모델 비교, 파인튜닝 평가, 도메인 적응 성공 여부 판단에 사용됩니다. Perplexity AI 서비스는 GPT-4, Claude 등을 활용한 AI 검색으로 기존 검색 엔진의 대안으로 주목받고 있습니다.
# Perplexity 계산 예제
import torch
import math
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# 1. 모델 및 토크나이저 로드
model = GPT2LMHeadModel.from_pretrained("gpt2")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
model.eval()
def calculate_perplexity(text, model, tokenizer):
"""텍스트의 Perplexity 계산"""
encodings = tokenizer(text, return_tensors="pt")
input_ids = encodings.input_ids
with torch.no_grad():
outputs = model(input_ids, labels=input_ids)
# Cross-Entropy Loss
loss = outputs.loss
# Perplexity = e^(loss)
perplexity = math.exp(loss.item())
return perplexity
# 2. 예제 텍스트로 PPL 계산
text1 = "The quick brown fox jumps over the lazy dog."
text2 = "Purple elephants dance quantum mechanics pizza."
ppl1 = calculate_perplexity(text1, model, tokenizer)
ppl2 = calculate_perplexity(text2, model, tokenizer)
print(f"자연스러운 문장 PPL: {ppl1:.2f}") # 낮음
print(f"비자연스러운 문장 PPL: {ppl2:.2f}") # 높음
# 3. Hugging Face evaluate 라이브러리 사용
from evaluate import load
perplexity_metric = load("perplexity", module_type="metric")
# 데이터셋 전체 PPL 계산
texts = ["Hello world.", "AI is transforming the world."]
results = perplexity_metric.compute(
predictions=texts,
model_id="gpt2"
)
print(f"평균 PPL: {results['mean_perplexity']:.2f}")
2025년 1월 기준 - Perplexity AI 서비스 요금제
| 플랜 | 가격 | 주요 기능 |
|---|---|---|
| Free | $0 | 기본 검색, 일일 제한 있음 |
| Pro | $20/월 ($200/년) | 300+ Pro 검색/일, GPT-4/Claude 접근, $5 API 크레딧 |
| Max | $200/월 ($2,000/년) | 무제한 Pro 검색, 고급 모델 접근 |
| Enterprise Pro | $40/사용자/월 | 팀 기능, SSO, 관리 도구 |
| Enterprise Max | $325/사용자/월 | 엔터프라이즈 보안, 컴플라이언스 |
API 가격: Sonar 모델 $1/1M 토큰(입출력), Search API $5/1,000 요청
"도메인 데이터로 파인튜닝 후 Perplexity가 45에서 23으로 낮아졌습니다. 해당 도메인에 대한 모델의 이해도가 크게 향상된 것으로 볼 수 있습니다."
"Perplexity는 Cross-Entropy Loss의 지수값으로, 모델이 평균적으로 몇 개의 선택지 중에서 고민하는지를 나타냅니다. PPL=10이면 매 토큰 예측 시 약 10개 후보 중 고민한다는 의미입니다."
"Perplexity만으로 모델 품질을 평가하긴 어렵습니다. 낮은 PPL이 반드시 좋은 생성 품질을 의미하지 않아서, BLEU, ROUGE, 인간 평가도 함께 사용해야 합니다."
어휘 크기와 토큰화 방식이 다르면 PPL을 직접 비교할 수 없습니다. 동일 데이터셋, 동일 토크나이저 조건에서만 비교하세요.
학습 데이터에서 측정한 PPL은 과적합으로 인해 낮게 나옵니다. 반드시 별도의 테스트 세트로 측정하세요.
표준 벤치마크(WikiText, PTB 등)에서 측정하고, 동일 조건의 모델들과 비교하세요. 다운스트림 태스크 성능도 함께 평가합니다.