근래 정부 과제 수행 계획서 및 제안서를 작성하고 있다. LLM 도메인의 문서를 쓰다보면 필수로 “성과지표”, “평가지표” 등의 파트가 나오는데, LLM의 답변 퀄리티를 어떻게 평가할 수 있을지 막막했다.
예를 들어, “긍정”, “부정”과 같이 명확한 분류 작업의 경우 라벨링된 데이터를 활용해 정확도를 측정하면 되기 때문에 비교적 단순하다. 하지만, 한국어 이해력이나 문맥 파악 능력, 추론 능력 같은 복잡한 언어 능력은 어떻게 평가 할 수 있을까?
그래서 조사해봤던 것들 몇 가지를 정리해보려고 한다. 예시는 GPT4o & Claude Sonnet 3.5의 도움을 받았다.
주로 기계 번역의 품질을 평가하는데 사용되는 지표로 모델이 생성한 문장이 정답 문장과 얼마나 유사한지를 정량적으로 평가하는 것이다.
N-gram 방식을 사용하여 문장의 유사도를 0~1 사이의 값으로 나타낸다.
💡 예제 문장
✔ Reference 문장 (정답 문장):
"The cat is on the mat."
✔ Model Output (모델이 생성한 문장):
"The cat is sitting on the mat."
📌 1-gram(단어 단위) 매칭율 계산
N-gram | Reference (정답) | Output (출력) | 매칭 여부 |
---|---|---|---|
The | ✅ 있음 | ✅ 있음 | ✅ |
cat | ✅ 있음 | ✅ 있음 | ✅ |
is | ✅ 있음 | ✅ 있음 | ✅ |
on | ✅ 있음 | ✅ 있음 | ✅ |
the | ✅ 있음 | ✅ 있음 | ✅ |
mat | ✅ 있음 | ✅ 있음 | ✅ |
sitting | ❌ 없음 | ✅ 있음 | ❌ |
✔ 1-gram 정확도 = 6/7 = 0.86 (86%)
📌 2-gram(두 단어 조합) 매칭율 계산
2-gram | Reference (정답) | Output (출력) | 매칭 여부 |
---|---|---|---|
The cat | ✅ 있음 | ✅ 있음 | ✅ |
cat is | ✅ 있음 | ✅ 있음 | ✅ |
is on | ✅ 있음 | ✅ 있음 | ✅ |
on the | ✅ 있음 | ✅ 있음 | ✅ |
the mat | ✅ 있음 | ✅ 있음 | ✅ |
is sitting | ❌ 없음 | ✅ 있음 | ❌ |
sitting on | ❌ 없음 | ✅ 있음 | ❌ |
✔ 2-gram 정확도 = 5/7 = 0.71 (71%)
주로 텍스트 요약의 품질을 평가하는데 사용되는 지표이고, 모델이 생성한 문장이 정답 문장과 얼마나 겹치는지 평가한다.
BLEU는 Precision을 중심으로 평가하는 반면 Rouge는 Recall을 중심으로 평가한다.
ROUGE 지표 | 설명 | 주요 활용 분야 |
---|---|---|
ROUGE-N | N-gram(단어 조합)의 일치율 비교 (ROUGE-1, ROUGE-2 등) | 기계 번역, 요약 평가 |
ROUGE-L | 문장에서 LCS(Longest Common Subsequence, 최장 공통 부분 문자열)를 찾고 비교 | 문장 구조 유지 평가 |
ROUGE-W | LCS 기반이지만 가중치를 부여하여 연속적인 단어 매칭을 더 중요하게 평가 | 긴 문장 요약 평가 |
ROUGE-S | 단순 N-gram이 아니라, Skip-Bigram(건너뛰며 겹치는 단어 조합) 매칭율을 계산 | 더 유연한 요약 평가 |
✔ROUGE-L은 LCS(최장 공통 부분 문자열)를 활용하여 평가
✔ 단순한 N-gram 매칭이 아니라, 문장 구조를 고려한 평가 가능
✔ LCS를 찾고, 이를 기반으로 Precision, Recall, F1-score 계산
📌 예제:
✔ Reference 문장 (정답 문장):
"The cat is on the mat."
✔ Model Output (출력 문장):
"The cat sat on the mat."
Step 1: LCS 찾기
✔ LCS = "The cat on the mat" (최장 공통 부분)
Step 2: ROUGE-L 계산
✔ ROUGE-L (Recall) = 4 / 6 = 66.7%
✔ ROUGE-L (Precision) = 4 / 6 = 66.7%
✔ ROUGE-L (F1-score) = 66.7%
✔ Skip-Bigram이란?
📌 예제:
✔ Reference 문장 (정답 문장):
"The cat is on the mat."
✔ Model Output (출력 문장):
"The cat sat on the mat."
✔ 일반적인 BLEU나 ROUGE-N으로는 "cat sat"이 다르다고 평가되지만, ROUGE-S는 "The cat"과 "on the mat"을 Skip-Bigram으로 인정하여 점수 부여
BLEU, ROUGE는 단순한 N-gram 기반 비교 방식을 이용하므로 동의어 처리에 취약하다. 그에 비해 BERT Score는 Transfomer 기반 언어모델의 임베딩을 활용해서 의미적 유사도를 평가하는 방식으로 단어의 의미(context) 까지 고려해서 평가할 수 있다.
Step 1: 문장을 벡터(임베딩)로 변환
임베딩?
단어, 문장을 컴퓨터가 이해할 수 있는 숫자 벡터로 변환한 것으로 단어의 의미와 문맥을 반영함
✔ 평가할 문장(출력)과 정답 문장(Reference)을 Transformer 모델(BERT, RoBERTa 등)을 사용하여 벡터화
✔ 단어마다 고유한 의미 벡터(임베딩)를 생성
📌 예제 문장:
✔ Reference 문장: "The cat is on the mat."
✔ Model Output: "The feline sits on the rug."
📌 BERT를 활용하여 각 단어를 임베딩 벡터로 변환
✔ "cat"
→ [0.21, 0.45, -0.12, ...]
✔ "feline"
→ [0.22, 0.46, -0.11, ...]
(거의 유사)
✔ "mat"
→ [0.33, -0.19, 0.27, ...]
✔ "rug"
→ [0.31, -0.18, 0.25, ...]
(유사한 개념)
Step 2: Cosine Similarity를 이용해 유사도 계산
✔ 각 단어의 의미적 유사도를 코사인 유사도(Cosine Similarity)로 측정
✔ "cat"
vs "feline"
→ 0.95 (매우 유사)
✔ "mat"
vs "rug"
→ 0.88 (유사)
✔ "on"
vs "on"
→ 1.00 (동일 단어)
Step 3: Precision / Recall / F1-score 계산
📌 BERTScore는 BLEU와 ROUGE처럼 Precision, Recall, F1-score를 계산하여 최종 점수 산출
✔ BERTScore Precision → 모델의 출력이 정답 문장에서 사용된 단어들과 얼마나 유사한지
✔ BERTScore Recall → 정답 문장이 모델의 출력과 얼마나 유사한지
✔ BERTScore F1-score → Precision과 Recall을 조합한 최종 평가 점수
MMLU(Massive Multitask Language Understanding)는 LLM(대형 언어 모델)의 지식 및 추론 능력을 평가하는 벤치마크로 57개 과목(문과, 이과 포함)에서 모델이 얼마나 정답을 맞히는지 테스트한다.
MMLU는 Zero-shot, Few-shot 평가가 가능하도록 설계되었다. 일반적으로 AI를 학습할 때는 라벨링된 데이터를 이용하여 학습하는데, 예를 들어 AI가 여러 동물 사진 중에서 강아지를 인식하게 하려면 강아지 사진 수천 장을 미리 학습시키는 방식이다.
하지만 Zero-shot 학습은 사전 학습 없이도 AI가 특정 작업을 수행할 수 있도록 하는 방식이다. 즉, 강아지 사진을 한 번도 본 적이 없어도, 지금까지 학습된 데이터를 바탕으로 강아지를 인식하는 것이다.
반면 Few-shot 학습은 적은 수의 예제를 참고하여 유사한 작업을 수행하는 능력을 평가하는 방식이다. 예를 들어, 몇 개의 강아지 사진 예시를 제시한 후, AI가 새로운 강아지 사진을 올바르게 인식할 수 있는지를 테스트하는 것이다.
MMLU는 이러한 학습 방식을 테스트하기 위해 설계되었으며, AI가 다양한 주제에 대한 지식과 문제 해결 능력을 갖추고 있는지 평가하는 데 사용된다.
또한, MMLU는 GitHub에서 공식적인 평가 코드를 제공하므로, 향후 LLM 개발 시 직접 테스트해 볼 수 있다.
추가로, 2024년 5월에는 MMLU-PRO 데이터셋이 공개되었다.
github : https://github.com/TIGER-AI-Lab/MMLU-Pro?utm_source=pytorchkr&ref=pytorchkr
huggingface : https://huggingface.co/datasets/TIGER-Lab/MMLU-Pro
LLM의 상식(Common Sense Reasoning) 능력을 평가하는 벤치마크로 일상적인 상식을 기반으로 문맥 이해 능력을 평가한다.
데이터셋은 2개의 질문으로 구성되고, 각 질문의 정답을 뒤집는 트리거 단어가 포함되어 있다. 주어진 문맥에서 트리거 단어가 지칭하는 대상을 정확이 이해하고 문맥에 맞게 해석하는 능력을 평가한다.
https://arxiv.org/pdf/1907.10641
github : https://github.com/allenai/winogrande
LLM(대형 언어 모델)의 상식(Common Sense) 및 논리적 추론(Logical Reasoning) 능력을 평가하는 벤치마크로, 주어진 문장의 맥락(Context)을 고려하여 가장 자연스러운 다음 문장을 선택하는 문제 방식으로 평가한다.
huggungface에 잇는 데이터셋을 확인해보니 스토리와 몇 가지 지시사항이 주어지고, 객관식 문제 중에서 가장 최적의 답을 찾는 형식의 데이터셋이었다. 그래서 추론 능력을 Accuracy 기반으로 측정을 할 수 있다는 것도 나름 유의미한 장점이 아닐까싶다.
리더보드를 확인해보니 GPT4가 10-shot 학습으로 측정했을 때 거의 사람만큼의 성능을 내고있음을 확인할 수 있다.
https://rowanzellers.com/hellaswag/
huggingface : https://huggingface.co/datasets/Rowan/hellaswag?row=1
말 그대로 LLM이 다른 모델의 출력을 평가한다는 것이다. 처음에는 이게 유효한 것인가? 라는 의심이 가장 먼저 떠올랐는데 관련 논문(https://arxiv.org/abs/2306.05685)을 확인해보면, GPT-4 judge와 사람의 선호 일치도가 80% 이상으로 사람의 평가와 유사한 성능을 보인다고 한다.
생각해보면, 전문가가 평가한다고 해도 사람이 학습한 지식을 바탕으로 주관적인 판단을 하는 것이니까 오히려 LLM을 이용한다면 더 효율적으로 할수도 있겠다싶다.
먼저 기존 GPT 같은 LLM들은 RLHF(Reinforcement Learning From Human Feedback) 기법이라는 인간의 피드백을 기반으로 학습이 되어 있다.
RLHF(Reinforcement Learning from Human Feedback)는 LLM이 인간 피드백을 통해 점진적으로 개선되는 과정이며, 보통 2~3단계를 반복하면서 성능을 최적화한다.
초기 응답: "에어컨을 26도로 설정하세요" (보상: 6/10)
개선된 응답: "에어컨을 26도로 설정하고, 2시간마다 환기하며, 차양막으로 직사광선을 차단하세요" (보상: 9/10)
최종 응답: "에어컨 필터 청소로 효율을 높이고, 26도 설정과 함께 선풍기를 병행 사용하며, 차양막으로 열기 차단, 2시간마다 환기하여 최적의 냉방 효과를 얻으세요" (보상: 10/10)
PPO(Proximal Policy Optimization)?
정책 기반의 강화학습 알고리즘, 여기서 정책은 상태(state)에서 action을 선택하는 확률 분포
1. 초기 정책 학습
2. Action 수행 및 보상 계산
3. 정책 업데이트 및 Clipping 기법으로 급격한 정책 변화 방지
4. 반복학습
이 과정을 통해 LLM은 단순히 텍스트를 생성하는 것이 아니라, 생성된 응답의 품질을 스스로 평가하거나 다른 모델을 판단할 수 있는 능력을 갖추게 된다.
이전에 작성되었고 선정된 기획서 & 제안서를 살펴보니, Human Evaluation 방식으로 성과지표를 설정한 문서가 굉장히 많았다. 이 것은 주로 특정 도메인 특화된 LLM, sLLM 관련 사업 문서에서 주로 사용되는 것 같다.
이 방법은 수치 달성이 필수일 경우 매우 유용하게 사용된다. 왜냐하면 어떻게든 목표를 달성할 수 있게 만들수 있으니..