[Daily morning study] LLM ํ๊ฐ ์งํ (BLEU, ROUGE, BERTScore, Perplexity)
#daily morning study
LLM์ ์ด๋ป๊ฒ ํ๊ฐํ ๊น?
LLM์ด ์์ฑํ ํ ์คํธ๊ฐ โ์ข์์งโ ํ๋จํ๋ ๊ฑด ์๊ฐ๋ณด๋ค ์ด๋ ต๋ค. ์ฌ๋์ด ์ผ์ผ์ด ์ฝ์ผ๋ฉด ์ ํํ์ง๋ง ๋น์ฉ์ด ๋๋ฌด ํฌ๋ค. ๊ทธ๋์ ์๋ ํ๊ฐ ์งํ๋ค์ด ๋ฑ์ฅํ๋ค. ๊ฐ ์งํ๋ ์๋ก ๋ค๋ฅธ ์ธก๋ฉด์ ์ธก์ ํ๊ธฐ ๋๋ฌธ์ ํ๋๋ง ์ฐ๊ธฐ๋ณด๋ค ์ํฉ์ ๋ง๊ฒ ์กฐํฉํด์ ์ฐ๋ ๊ฒ ์ผ๋ฐ์ ์ด๋ค.
BLEU (Bilingual Evaluation Understudy)
์๋ ๊ธฐ๊ณ ๋ฒ์ญ ํ์ง ํ๊ฐ๋ฅผ ์ํด 2002๋ ์ ์ ์๋ ์งํ๋ค. ์์ฑ๋ ํ ์คํธ(hypothesis)๊ฐ ์ฐธ์กฐ ํ ์คํธ(reference)์ ์ผ๋ง๋ ๊ฒน์น๋์ง๋ฅผ n-gram ์ ๋ฐ๋(precision)๋ก ์ธก์ ํ๋ค.
๊ณ์ฐ ๋ฐฉ์
n-gram precision์ ์ฌ๋ฌ n์ ๋ํด ๊ณ์ฐํ ๋ค ๊ธฐํ ํ๊ท ์ ๋ธ๋ค.
BLEU = BP ร exp(ฮฃ wโ ร log pโ)
pโ: n-gram precision (์์ฑ๋ฌธ์ n-gram ์ค ์ฐธ์กฐ๋ฌธ์ ์กด์ฌํ๋ ๋น์จ)wโ: ๊ฐ n์ ๊ฐ์ค์น (๋ณดํต ๊ท ๋ฑํ๊ฒ 1/N)BP: Brevity Penalty โ ์์ฑ ํ ์คํธ๊ฐ ์ฐธ์กฐ๋ณด๋ค ๋๋ฌด ์งง์ ๋ ํจ๋ํฐ๋ฅผ ์ค
| n | ์๋ฏธ |
|---|---|
| 1-gram | ๋จ์ด ๋จ์ ์ผ์น |
| 2-gram | ๋ ๋จ์ด ์ฐ์ ์ผ์น |
| 3-gram | ์ธ ๋จ์ด ์ฐ์ ์ผ์น |
| 4-gram | ๋ค ๋จ์ด ์ฐ์ ์ผ์น |
BLEU-4๋ 1~4-gram์ ๋ชจ๋ ์ฌ์ฉํ๋ค.
์์
Reference: "The cat sat on the mat"
Hypothesis: "The cat on the mat"
1-gram precision: 5/6 โ 0.83 (5๊ฐ ๋จ์ด ์ผ์น)
2-gram precision: 3/5 = 0.60 ("the cat", "on the", "the mat" ์ผ์น)
BLEU์ ํ๊ณ
- ์๋ฏธ๊ฐ ๊ฐ์๋ ๋ค๋ฅธ ๋จ์ด๋ฅผ ์ฐ๋ฉด ๋ฎ๊ฒ ์ธก์ ๋จ (โbigโ vs โlargeโ)
- ์ด์์ ๊ณ ๋ คํ์ง ์์
- recall์ ์ธก์ ํ์ง ์์ (์ค์ํ ๋ด์ฉ์ ๋น ๋จ๋ ค๋ ํจ๋ํฐ ์์)
ROUGE (Recall-Oriented Understudy for Gisting Evaluation)
๋ฌธ์ ์์ฝ ํ๊ฐ์์ ์ฃผ๋ก ์ฐ๋ ์งํ๋ค. BLEU๊ฐ precision ์ค์ฌ์ธ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ROUGE๋ recall ์ค์ฌ์ด๋ค.
ROUGE-N
n-gram recall์ ์ธก์ ํ๋ค.
ROUGE-N = (์ฐธ์กฐ๋ฌธ์ n-gram ์ค ์์ฑ๋ฌธ์ ๋ํ๋ ์) / (์ฐธ์กฐ๋ฌธ์ ์ ์ฒด n-gram ์)
ROUGE-L
์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS, Longest Common Subsequence)์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐํ๋ค. ์ฐ์๋์ง ์์๋ ์์๋ง ๋ง์ผ๋ฉด ์ผ์น๋ก ๋ณธ๋ค.
Reference: "The cat sat on the mat"
Hypothesis: "The cat was on a mat"
LCS: "The cat on mat" (๊ธธ์ด 4)
ROUGE-L recall = 4/6 โ 0.67
ROUGE-L precision = 4/7 โ 0.57
F1 = 2 ร (0.67 ร 0.57) / (0.67 + 0.57) โ 0.62
ROUGE ์ข ๋ฅ ์์ฝ
| ์งํ | ๊ธฐ๋ฐ | ์ฃผ์ ์ฌ์ฉ์ฒ |
|---|---|---|
| ROUGE-1 | ๋จ์ด(1-gram) | ๋จ์ด ์์ค ๊ฒน์นจ |
| ROUGE-2 | 2-gram | ๊ตฌ๋ฌธ ์์ค ๊ฒน์นจ |
| ROUGE-L | LCS | ๋ฌธ์ฅ ๊ตฌ์กฐ ๋ฐ์ |
์์ฝ ํ์ง ํ๊ฐ์์๋ ๋ณดํต ROUGE-1, ROUGE-2, ROUGE-L์ ํจ๊ป ๋ณด๊ณ ํ๋ค.
BERTScore
2019๋ ์ ์ ์๋ ์งํ๋ก, BLEU/ROUGE์ ๋ฌ๋ฆฌ ์๋ฏธ์ ์ ์ฌ๋๋ฅผ ์ธก์ ํ๋ค. BERT ๊ฐ์ ์ฌ์ ํ์ต ์ธ์ด ๋ชจ๋ธ์ ๋ฌธ๋งฅ ์๋ฒ ๋ฉ์ ํ์ฉํด์ ๋จ์ด ๊ฐ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ๋ค.
๊ณ์ฐ ๋ฐฉ์
Precision: ๊ฐ ์์ฑ ํ ํฐ์ ๋ํด ์ฐธ์กฐ ํ ํฐ ์ค ๊ฐ์ฅ ์ ์ฌํ ๊ฒ์ ์ฝ์ฌ์ธ ์ ์ฌ๋ ํ๊ท
Recall: ๊ฐ ์ฐธ์กฐ ํ ํฐ์ ๋ํด ์์ฑ ํ ํฐ ์ค ๊ฐ์ฅ ์ ์ฌํ ๊ฒ์ ์ฝ์ฌ์ธ ์ ์ฌ๋ ํ๊ท
F1: Precision๊ณผ Recall์ ์กฐํ ํ๊ท
์์์ผ๋ก ํํํ๋ฉด:
P_BERT = (1/|ลท|) ฮฃ_{ลทแตข โ ลท} max_{yโฑผ โ y} cos(ลทแตข, yโฑผ)
R_BERT = (1/|y|) ฮฃ_{yโฑผ โ y} max_{ลทแตข โ ลท} cos(ลทแตข, yโฑผ)
F_BERT = 2 ร P_BERT ร R_BERT / (P_BERT + R_BERT)
BLEU/ROUGE์์ ์ฐจ์ด
Reference: "The vehicle moved rapidly"
Hypothesis: "The car drove fast"
BLEU: ๊ฑฐ์ 0 (๊ฒน์น๋ n-gram ์์)
BERTScore: ๋์ ("vehicle"โ"car", "moved rapidly"โ"drove fast" ์๋ฏธ ์ ์ฌ)
์ฅ๋จ์
์ฅ์
- ๋์์ด, ํจ๋ฌํ๋ ์ด์ง์ ๊ฐํจ
- ์ฌ๋์ ํ๊ฐ์ ์๊ด๊ด๊ณ๊ฐ BLEU๋ณด๋ค ๋์
๋จ์
- BERT ์ถ๋ก ๋น์ฉ์ด ๋ฐ์
- ์ ์ ํด์์ด ์ง๊ด์ ์ด์ง ์์ (0~1 ๋ฒ์์ง๋ง ์ค์ ๋ก๋ 0.8 ์ด์์ ๋ชฐ๋ฆผ)
- ์ฌ์ฉ ๋ชจ๋ธ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง
Perplexity (PPL)
์ธ์ด ๋ชจ๋ธ ์์ฒด์ ๋ถํ์ค์ฑ์ ์ธก์ ํ๋ ์งํ๋ค. ๋ชจ๋ธ์ด ์ฃผ์ด์ง ํ ์คํธ๋ฅผ ์ผ๋ง๋ โ์์ธกํ๊ธฐ ์ด๋ ค์ํ๋์งโ๋ฅผ ๋ํ๋ธ๋ค.
์์
PPL(W) = exp( -(1/N) ฮฃ log P(wแตข | wโ, ..., wแตขโโ) )
- N : ํ ํฐ ์
- log P : ๊ฐ ํ ํฐ์ ๋ก๊ทธ ํ๋ฅ
์ง๊ด์ ์ผ๋ก PPL์ ํ๊ท ์ ์ผ๋ก ๋ค์ ํ ํฐ์ ๋ช ๊ฐ ์ค์์ ๊ณ ๋ฅด๋ ๊ฒ๊ณผ ๊ฐ์ ๋ถํ์ค์ฑ์ ๋ํ๋ธ๋ค.
| PPL | ํด์ |
|---|---|
| ๋ฎ์ | ๋ชจ๋ธ์ด ํ ์คํธ๋ฅผ ์ ์์ธกํจ (ํ๋ จ ๋๋ฉ์ธ๊ณผ ์ ์ฌ) |
| ๋์ | ๋ชจ๋ธ์ด ํ ์คํธ๋ฅผ ์์ธกํ๊ธฐ ์ด๋ ค์ํจ (๋ฏ์ ๋๋ฉ์ธ) |
์ฌ์ฉ ์์
from transformers import GPT2LMHeadModel, GPT2Tokenizer
import torch
model = GPT2LMHeadModel.from_pretrained("gpt2")
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
text = "The quick brown fox jumps over the lazy dog"
inputs = tokenizer(text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs, labels=inputs["input_ids"])
loss = outputs.loss
ppl = torch.exp(loss)
print(f"Perplexity: {ppl.item():.2f}")
ํ๊ณ
- ์์ฑ ํ์ง์ด ์๋ ์ธ์ด ๋ชจ๋ธ์ ํ๋ฅ ์ถ์ ๋ฅ๋ ฅ์ ์ธก์
- ๋ฎ์ PPL์ด ํญ์ ์ข์ ์์ฑ ํ์ง์ ์๋ฏธํ์ง๋ ์์ (๋ฐ๋ณต๋ ํ ์คํธ๋ PPL์ด ๋ฎ์ ์ ์์)
- ๋ชจ๋ธ ๋น๊ต ์ ๊ฐ์ ํ ํฌ๋์ด์ ๋ฅผ ์จ์ผ ์๋ฏธ ์์
์ต์ LLM ํ๊ฐ ๋ฐฉ๋ฒ
์๋ ์งํ์ ํ๊ณ๋ก ์ธํด ์ต๊ทผ์๋ ๋ค์ํ ํ๊ฐ ๋ฐฉ์์ด ํจ๊ป ์ฐ์ธ๋ค.
LLM-as-Judge
GPT-4 ๊ฐ์ ๊ฐ๋ ฅํ LLM์ ์ฌ์ฌ์์์ผ๋ก ํ์ฉํด์ ์์ฑ ๊ฒฐ๊ณผ๋ฅผ ์ ์ํํ๋ค.
ํ๋กฌํํธ: "๋ค์ ๋ต๋ณ์ ์ ํ์ฑ, ์ ์ฐฝ์ฑ, ์ ์ฉ์ฑ ๊ธฐ์ค์ผ๋ก 1~10์ ์ผ๋ก ํ๊ฐํด:"
"[์์ฑ๋ ํ
์คํธ]"
MT-Bench, AlpacaEval ๋ฑ์ ๋ฒค์น๋งํฌ๊ฐ ์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
Benchmark Suite
ํน์ ํ์คํฌ์์์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ๋ฒค์น๋งํฌ ๋ชจ์:
| ๋ฒค์น๋งํฌ | ์ธก์ ํญ๋ชฉ |
|---|---|
| MMLU | 57๊ฐ ๋ถ์ผ ์ง์ (๋ค์ง์ ๋ค) |
| HellaSwag | ์์ ์ถ๋ก |
| HumanEval | ์ฝ๋ ์์ฑ |
| TruthfulQA | ์ฌ์ค ์ ํ์ฑ |
| GSM8K | ์ํ ๋ฌธ์ ํด๊ฒฐ |
์งํ ์ ํ ๊ฐ์ด๋
๋ฒ์ญ ํ์ง ํ๊ฐ โ BLEU
๋ฌธ์ ์์ฝ ํ๊ฐ โ ROUGE-1, ROUGE-2, ROUGE-L
์๋ฏธ ๋ณด์กด ํ๊ฐ โ BERTScore
์ธ์ด ๋ชจ๋ธ ์์ฒด ํ๊ฐ โ Perplexity
์คํ์๋๋ ์์ฑ ํ๊ฐ โ LLM-as-Judge, ์ธ๊ฐ ํ๊ฐ
์ ๋ฆฌ
| ์งํ | ์ธก์ ๋์ | ๊ธฐ๋ฐ | ์ฃผ์ ์ฌ์ฉ์ฒ |
|---|---|---|---|
| BLEU | n-gram ์ ๋ฐ๋ | ํ๋ฉด ํํ | ๊ธฐ๊ณ ๋ฒ์ญ |
| ROUGE | n-gram/LCS ์ฌํ์จ | ํ๋ฉด ํํ | ์์ฝ |
| BERTScore | ์๋ฏธ์ ์ ์ฌ๋ | ์ธ์ด ๋ชจ๋ธ ์๋ฒ ๋ฉ | ๋ฒ์ญ, ์์ฑ |
| Perplexity | ๋ค์ ํ ํฐ ์์ธก ๋ถํ์ค์ฑ | ์ธ์ด ๋ชจ๋ธ ํ๋ฅ | ์ธ์ด ๋ชจ๋ธ ๋น๊ต |
๊ฐ ์งํ๋ ํธ๋ ์ด๋์คํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค์ ํ๊ฐ์์๋ ์ฌ๋ฌ ์งํ๋ฅผ ํจ๊ป ์ฐ๊ณ , ๊ฐ๋ฅํ๋ฉด ์ธ๊ฐ ํ๊ฐ๋ ๋ณํํ๋ ๊ฒ ์ข๋ค.