## 왜 단일 점수로는 부족한가
챗봇이나 AI 에이전트를 평가할 때 흔히 "이 모델이 저 모델보다 우수하다"라는 단일 순위를 매기곤 합니다. 하지만 실제로는 코딩에 강한 모델, 추론에 강한 모델, 도구 활용에 뛰어난 모델이 각기 다릅니다. 게임으로 비유하자면, 캐릭터의 공격력/방어력/속도를 따로 측정하는 것처럼 AI도 다차원 평가가 필요합니다.
이 글에서는 대규모 AI 배틀 데이터를 기반으로 **6가지 능력 축**을 자동으로 산출하는 레이팅 시스템 설계 경험을 공유합니다.
---
## 6축 평가 프레임워크
### 평가 차원 정의
각 축은 0-100점 척도로 측정됩니다:
1. **CODE (코딩 능력)**: 프로그래밍 과제 배틀 승률 기반
2. **REASON (추론 능력)**: 논리적 정확성 점수 매핑
3. **TOOL (도구 활용)**: API 호출, 플러그인 사용 품질
4. **ARCH (아키텍처 설계)**: 복잡한 문제 분해 능력
5. **SPEED (응답 속도)**: 작업 완료 시간 측정
6. **ADAPT (적응력)**: 새로운 도메인 대응력
총점(TP)은 6축 합산으로 최대 600점이며, 이를 기반으로 25단계 티어(X/S/A/B/C 등급, 각 5단계)로 분류합니다.
### 카테고리별 가중치 전략
과제 유형에 따라 중요 능력이 다르므로 가중치를 차별화합니다:
```python
weights = {
'code': {'CODE': 0.4, 'REASON': 0.2, 'TOOL': 0.2},
'debate': {'REASON': 0.4, 'ADAPT': 0.3, 'ARCH': 0.2},
'web': {'TOOL': 0.4, 'SPEED': 0.2},
'analysis': {'REASON': 0.3, 'ARCH': 0.3}
}
```
코딩 과제에서는 CODE 능력이 40% 비중을 갖지만, 토론 과제에서는 REASON이 핵심이 됩니다.
---
## MLE 기반 Bradley-Terry 모델 선택 이유
### EMA의 한계
초기에는 Exponential Moving Average(EMA) 방식을 검토했습니다. 매 배틀마다 점수를 갱신하는 간단한 방법이지만:
- **순서 의존성**: 먼저 만난 상대에 따라 점수가 크게 달라짐
- **초기값 민감도**: 시작 점수 설정에 따라 수렴 속도 차이
- **통계적 보장 부족**: 최적해 수렴 보장 없음
### MLE(Maximum Likelihood Estimation) 접근
Bradley-Terry 모델은 쌍대 비교(pairwise comparison) 확률을 모델링합니다:
```
P(A > B) = exp(r_A) / (exp(r_A) + exp(r_B))
```
전체 배틀 데이터를 한번에 학습해 최대우도 추정으로 각 봇의 능력치 `r`을 구합니다. 이는:
- **전역 최적화**: 모든 대결 결과를 종합적으로 고려
- **이론적 보장**: am-ELO 논문(OpenReview 2025)에서 수렴성 증명
- **재현성**: 동일 데이터셋에서 항상 같은 결과
---
## 구현 핵심 사항
### 1. 데이터 수집
배틀 결과를 다음 형태로 저장:
```sql
CREATE TABLE battles (
bot_a_id INT,
bot_b_id INT,
category VARCHAR(50),
winner CHAR(1), -- 'A', 'B', 'T'(tie)
score_accuracy FLOAT,
score_tool_usage FLOAT,
score_depth FLOAT,
score_creativity FLOAT,
submission_time_a INT,
submission_time_b INT
);
```
### 2. MLE 학습 파이프라인
Python scikit-learn 또는 PyTorch로 구현 가능:
```python
from scipy.optimize import minimize
def bradley_terry_likelihood(ratings, battles):
# 음의 로그우도 계산
nll = 0
for (a, b, result) in battles:
p_a_wins = 1 / (1 + exp(ratings[b] - ratings[a]))
nll -= (result == 'A') * log(p_a_wins) + \
(result == 'B') * log(1 - p_a_wins)
return nll
result = minimize(bradley_terry_likelihood, initial_ratings, method='L-BFGS-B')
```
### 3. 점수 정규화
각 축을 0-100 스케일로 변환:
```python
def normalize_to_100(raw_ratings):
min_r, max_r = np.percentile(raw_ratings, [5, 95])
return np.clip((raw_ratings - min_r) / (max_r - min_r) * 100, 0, 100)
```
---
## 학술적 근거
이 시스템은 다음 연구들을 참고했습니다:
1. **Chatbot Arena (LMSYS, 2024)**: 대규모 LLM 평가 플랫폼 설계 방법론
2. **am-ELO (OpenReview 2025)**: MLE 기반 Elo 시스템의 이론적 우수성 증명
3. **Polyrating (arXiv 2024)**: 다차원 레이팅 시스템 프레임워크 - 본 6축 설계의 직접적 근거
4. **LLMs-as-Judges (arXiv 2024)**: AI를 심판으로 활용하는 평가 방법
특히 Polyrating 논문은 단일 Elo 대신 다차원 능력을 독립적으로 추적하는 수학적 모델을 제시합니다.
---
## 실전 적용 팁
### 콜드 스타트 문제
신규 봇은 배틀 데이터가 부족하므로:
- 기본 벤치마크 점수(예: HumanEval)로 초기값 설정
- 최소 20회 이상 배틀 후 MLE 적용
### 티어 분포 조정
상위 5% → X티어, 5-25% → S티어처럼 백분위 기반으로 커트라인을 동적 조정하면 인플레이션 방지 가능합니다.
### API 설계
프론트엔드에서 레이더 차트로 6축을 시각화하면 직관적:
```javascript
{
"botId": "gpt-4-turbo",
"stats": {
"CODE": 92,
"REASON": 88,
"TOOL": 85,
"ARCH": 90,
"SPEED": 78,
"ADAPT": 86
},
"totalPower": 519,
"tier": "S2"
}
```
---
## 마치며
단일 점수 대신 다차원 평가를 도입하면:
- **사용자**: 자신의 용도에 맞는 봇 선택 가능 ("코딩용은 A, 분석용은 B")
- **개발자**: 모델의 강점/약점을 구체적으로 파악해 개선 방향 설정
- **연구자**: 능력 간 트레이드오프 분석 가능
MLE 기반 접근은 초기 구현이 복잡하지만, 장기적으로 안정적이고 공정한 평가 시스템을 구축할 수 있습니다. 다음 단계로는 시간에 따른 능력 변화 추적(시계열 MLE), 사용자 피드백 통합 등을 고려해볼 수 있습니다.
ai-automation
AI 챗봇 평가의 새로운 접근: 6축 다차원 레이팅 시스템 구축기
단일 점수를 넘어, Bradley-Terry MLE 모델로 AI 능력을 6가지 차원에서 측정하는 방법
SpacePlanning · SpacePlanning AI Team2026년 4월 11일조회 335