LLM-as-Judge: LLM을 이용해 LLM을 평가해보자

Gyuri Lee·2025년 2월 24일
0
post-thumbnail

📚 개요

우리는 ChatGPT, Claude 등과 같은 대형 LLM을 통해 여러 답변을 만들어냅니다.

여러 데이터들을 분류하기도 하고,
질문에 대한 대답을 생성하거나 텍스트를 번역하기도 하지요.

하지만 LLM의 답변이 항상 옳은 것이 아니기 때문에 이를 평가하는 과정은 필수적입니다. 😎

1. 기존 평가의 한계

LLM의 응답 퀄리티를 평가하는 기존 방법에는 여러 가지가 있습니다.

1-1. 전통적인 평가 방식

  • BLEU 🤖
  • ROUGE 📊
  • Perplexity 📈

이 방법은 n-그램, 의미적 유사성, 또는 정답 참조에 의존하고 있기 때문에 복잡한 질문에 대한 응답을 평가하는 데 한계가 있습니다.

1-2. Human Evaluation

또한, LLM을 평가하는 대표적인 방법으로 Human Evaluation이 있습니다.
이는 사람이 직접 응답을 보고 판단하는 방식입니다.

인간의 평가가 더 정확할 수 있지만, 시간과 비용이 많이 드는 단점이 있습니다.
특히 데이터가 클수록, Human Evaluation은 피해야 하는 평가 방식입니다. ⚠️

이러한 이유로 LLM을 통해 LLM을 평가하는 LLM-evaluator의 필요성이 증가하고 있습니다.

🔍 LLM-Evaluator

1.정의

그렇다면 LLM-evaluator의 정확한 정의에 대해 알아볼까요?

LLM-evaluator는 다른 LLM의 응답을 평가하는 대형 언어 모델입니다.

이 모델은 기존 평가 방식으로는 판단하기 어려운 긴 요약, 번역, 다중 턴 대화와 같은 복잡한 작업을 효과적으로 평가할 수 있습니다.
또한 LLM-evaluator는 자동화된 평가를 통해 인적 자원을 크게 절감할 수 있습니다.

이러한 이유로 LLM-evaluator는 기존 평가 방식을 넘어서는 유망한 대안으로 자리 잡고 있습니다.

2.평가 방법론

LLM-evaluator가 다른 LLM의 응답을 평가하는 방법에는 다음과 같은 세 가지가 있습니다.

(1) 직접 점수 부여
(2) 쌍 비교
(3) 참조 기반 평가

각 방법에는 장단점이 있으며, 평가는 목적에 따라 알맞은 방법을 선택해야 합니다.

2-1. 직접 점수 부여 (Direct Scoring)

정의:
직접 점수 부여는 LLM-evaluator가 단일 응답을 평가하여 특정 기준에 따라 점수를 매기는 방식입니다. 이 방법은 비교 대안 없이 독립적으로 이루어집니다.

장점:

  • 다양성: 정량적 평가가 필요한 다양한 작업, 예를 들어 원본 텍스트에 대한 충실도 평가, 혹은 정책 위반 감지(예: 유해성 감지)와 같은 객관적인 평가에 적합합니다.
  • 신속성: 단일 응답을 평가하므로 빠르게 처리가 가능합니다.

단점:

  • 주관성의 위험: 평가 기준과 평가자의 해석에 따라 결과가 달라질 수 있습니다.

2-2. 쌍 비교 (Pairwise Comparison)

정의:
쌍 비교는 두 개의 응답을 비교하여 더 나은 응답을 선택하거나 동점을 선언하는 방식입니다. 이 방법은 보통 주관적인 평가에 사용됩니다.

장점:

  • 신뢰성: 주관적 특성을 가진 평가(예: 설득력, 톤, 일관성 등)에서 더 안정적인 결과를 제공합니다. 🤝
  • 일관성: 연구 결과에 따르면 쌍 비교는 LLM의 판단 및 인간의 주석 간 차이를 줄이는 데 도움이 됩니다. 📏

단점:

  • 비교 제약: 두 개의 응답으로만 평가가 이루어지므로 다수의 응답을 평가하는 데 시간과 자원이 더 많이 소모될 수 있습니다. ⏱️

2-3. 참조 기반 평가 (Reference-Based Evaluation)

정의:
참조 기반 평가는 생성된 응답을 정답 참조(gold reference)와 비교하여 얼마나 잘 일치하는지를 평가하는 방법입니다. 정답 참조는 포함되어야 할 정보가 담긴 기준 응답입니다.

장점:

  • 정확성: 정답 참조와의 비교를 통해 더 정교한 형태의 유사성을 평가하므로, 응답의 품질을 정량적으로 분석할 수 있습니다.

단점:

  • 의존성: 평가를 위해 사전에 주석이 달린 데이터셋이 필요하므로, 채점 기준이 없는 경우에는 사용할 수 없습니다. 🚫
  • 제한적인 적용: 모든 평가 작업에 적합하지 않습니다. 예를 들어, 충실도나 지침 준수 같은 경우에는 쌍 비교 방식이 더 알맞습니다. 🧩

3. 평가 방법론의 선택 고려사항

  • 작업의 성격: 평가해야 할 작업이 객관적이면 직접 점수 부여를, 주관적이면 쌍 비교를, 그리고 정답 참조가 필요한 경우에는 참조 기반 평가를 선택해야 합니다. 🧐
  • 데이터 가용성: 평가 방법을 선택할 때 주석 데이터가 얼마나 준비되어 있는지도 고려해야 합니다. 📅
  • 리소스: 소요되는 시간과 자원도 중요합니다. 쌍 비교 방식은 비용과 시간이 더 듭니다. 💰

🖥️ 실제 적용 사례

1. 적용 프로젝트 설명

저는 실제로 LLM을 통해 의류 제품 이름과 상세 설명을 번역하고,
이를 3가지 항목(제품 특징, 사이즈, 소재 및 세탁방법)으로 분류하는 프로젝트를 맡았었습니다.

평균적으로 월 15,000개의 제품이 번역되기 때문에
제가 직접 LLM 결과를 리뷰하기에는 무리가 있었습니다.

그래서 LLM-evaluator를 만들어

  • 제품 제목이 제품 카테고리에 맞게 잘 번역되었는지
  • 요구사항에 맞춰 제품 제목을 정제하는 과정에서 hallucination된 부분은 없는지

확인하기로 하였습니다.

2. 사용한 평가 방식

제가 사용한 평가 방식은 참조 기반 평가입니다.

실제 제품 카테고리를 사용하여 LLM을 통해 번역&정제된 제품 이름이 옳은지 평가했습니다.

  • 참조 데이터: 제품 분류 카테고리 ( Top, Skirt, Dress, etc )
  • 평가 데이터: 번역&정제된 제품 이름

다음은 제가 사용한 프롬프트입니다.

category_check_prompt = """You are a fashion expert. 
Please verify if the product name matches its assigned category.

Return "True" if the product type mentioned in the product name matches the category, and "False" if they don't match.

Examples:
1. Product Name: "Floral Mini Dress", Category: "DRESS" -> True
2. Product Name: "Cashmere Knit Sweater", Category: "PANTS" -> False

Response Format:
Return only True or False.

Product Information:
Product Name: {product_name}
Category: {category}

Note:
- Only evaluate if the product type in the name matches the category
- Do not include any additional explanations or comments"""

해당 과정을 통해
1월에 번역한 27,227 제품 중
331개 에러 케이스를 발견할 수 있었고,

Human Evaluation을 통해 2차 확인을 거쳐
331개 중 45개 에러 케이스만 디버깅이 필요한 응답 결과로 분류했습니다.

3. 프로젝트 요약

항목내용
인원1인 프로젝트
개발 기간24.09 - 24.10 (2개월)
배포 및 유지보수24.11 - 현재
개발 스펙LLM, AWS
언어Python

‼️ 결론

  • LLM을 통한 작업은 hallucination이 많기 때문에 LLM 응답 평가가 반드시 필요하다

  • 전통적인 평가 방식으로는 평가하기 어려운 작업이 점차 많아지고 있고, 이에 대한 방안으로 LLM-evaluator (LLM-as-Judge)가 등장했다

  • 직접 개발해본 결과 LLM-evaluator를 통해 에러 케이스를 뽑아내고, Human Evaluation을 통해 더블 체킹하는 것이 효율적이고 평가 정확도도 높일 수 있는 Best⭐️ 방법인 것 같다.

0개의 댓글