Skip to content

Elo 评分与 LLM Arena

光靠基准测试分数(MMLU、GSM8K 等)不足以衡量 LLM 的真实”好用程度”——很多任务没有标准答案,而静态题库(static benchmark,即固定不变的考题集)还存在数据污染风险(训练时”背过答案”)。Elo 评分系统结合人类盲测对战,提供了一种基于真实偏好的排名方法。LMSYS Chatbot Arena 用这一方法构建了目前公认最权威的 LLM 综合排行榜。本页讲解 Elo 与 Bradley-Terry 模型的数学原理,以及人类偏好评估的完整方法论。前置阅读:LLM 评测与基准。

Elo 评分 = 给 AI 办一场国际象棋锦标赛。

国际象棋选手的水平用等级分(rating)衡量:赢了涨分、输了扣分。击败高手涨得更多,击败菜鸟涨得很少——因为本来就该赢。LMSYS Chatbot Arena 把同一套规则搬到了 LLM 身上:

  • 盲测对战:用户提问,两个匿名模型各自回答,用户选出更好的一个(或平局)。
  • Elo 更新:赢了涨等级分,输了扣等级分,涨多少取决于双方分差。
  • 排行榜:所有对战结果汇总后,等级分高的模型排名靠前。

这套方法的好处是贴近真实体验:不考标准化选择题,而是让真人自由提问、自由评判,衡量的是”用户体感上到底哪个更好”。由于题目完全由用户随机提出,模型开发者无法提前准备,因此在本质上比静态基准更难”刷榜”。

一句话区分:基准测试(benchmark)= 开卷考试,模型可以提前刷题;Arena 对战 = 盲评擂台,考前看不到题,也无法预测对手。

Elo 系统的核心是一个将等级分差转化为预期胜率的公式。设模型 A 的等级分为 RAR_A,模型 B 为 RBR_B,则 A 的期望得分(胜率近似)为:

EA=11+10(RB−RA)/400E_A = \frac{1}{1 + 10^{(R_B - R_A) / 400}}

其中分母中的 400 是一个标度常数,表示约 400 分差距对应约 10 倍的胜率比。如果 RAR_A 比 RBR_B 高 400 分,则 EAE_A 约等于 0.91(A 预期赢约九成)。

这个公式本质是一个 logistic 函数——把任意大小的分差平滑压缩到 (0, 1) 区间,天然适合表示概率。它在统计学中的另一个名字是 Bradley-Terry 模型(见下文),二者的数学形式完全等价。

每场对战后,根据实际得分与期望得分的差值更新等级分:

RA′=RA+K×(SA−EA)R_A' = R_A + K \times (S_A - E_A) RB′=RB+K×((1−SA)−(1−EA))R_B' = R_B + K \times ((1 - S_A) - (1 - E_A))

其中 SAS_A 是 A 的实际得分(赢为 1,输为 0,平为 0.5),KK 是 K 因子(K-factor),控制每场对战影响的幅度。KK 越大,等级分波动越剧烈;KK 越小,越稳定。国际象棋常用 K=32K=32。

直观理解更新公式:(SA−EA)(S_A - E_A) 是”意料之外的成分”。A 本来就该赢(EAE_A 高),赢了 SA=1S_A=1,差值很小,涨分也少;A 本来该输(EAE_A 低),却赢了,差值很大,涨分也多。这是一种类似梯度下降的自我修正机制——等级分不断朝真实实力收敛。

Elo 系统背后的统计基础是 Bradley-Terry 模型:假设每个选手有一个实力参数 β\beta,A 击败 B 的概率是:

P(A 击败 B)=βAβA+βBP(A \text{ 击败 } B) = \frac{\beta_A}{\beta_A + \beta_B}

对实力取对数后(令 β=10R/400\beta = 10^{R/400})等价于 Elo 中的 logistic 公式。Chatbot Arena 不是逐场更新 Elo,而是用全部对战数据做 最大似然估计(MLE, Maximum Likelihood Estimation)——一种从观测数据反推最可能参数的统计方法——同时拟合所有模型的实力参数,并用 Bootstrapping(有放回重采样,即从原始数据里反复抽样、反复拟合)计算置信区间,因此排名更加稳健。

为什么 MLE 比逐场更新更好? 逐场更新(online Elo)依赖对战顺序,早期对战会”锁定”分数;MLE 一次性看完全部数据,不受顺序影响,且能自然处理平局和稀疏对战(两个模型很少直接交手的情况)。

真实投票中有大量”平局”(两个回答差不多好)。标准做法是把平局的实际得分设为 0.5,这样:

  • 强模型打平弱模型 → 实际 0.5<0.5 < 期望(比如 0.80.8)→ 强模型扣分(表现不如预期)。
  • 弱模型打平强模型 → 实际 0.5>0.5 > 期望(比如 0.20.2)→ 弱模型涨分(表现超预期)。

此外,Chatbot Arena 在 2024-2025 年还引入了 Rao-Kupper 扩展(Bradley-Terry 的带阈值变体),显式建模”两者差距在阈值 τ\tau 以内算平局”的决策过程,使平局信息被更充分地利用。

  1. 收集对战:用户在网站上输入任意问题,两个匿名模型(随机选取)同时回答。
  2. 人类投票:用户选出更好的回答,或判平局,之后才揭晓模型身份。
  3. 拟合排名:用全部对战数据拟合 Bradley-Terry 模型,得到每个模型的 Elo 分数。
  4. 置信区间:用 Bootstrapping(有放回重采样)重复拟合多次,得到分数的 95% 置信区间。
  5. 分领域排行:除总榜外还按编程、数学、创意写作、多语言、长上下文等领域分别排名。

Arena 的结果并非完美无偏,社区已识别并积极修正几类系统性偏差:

偏差类型表现修正方法
冗长偏差(verbosity bias)用户倾向投更长的回答长度控制(length-controlled Elo):按 token 数分桶后再拟合
位置偏差(position bias)用户倾向选左边或右边的回答随机化左右顺序 + 对称性检验
风格偏差(style bias)排版美观、用 Markdown 加粗胜过内容质量引入”风格控制”回归项
自增强偏差(self-enhancement)用户偏好与自己观点一致的回答难以完全消除,需结合客观基准交叉验证

2024 年 LMSYS 发布的 长度控制 Arena 是一项重要改进:通过在 Bradley-Terry 模型中加入回答长度作为协变量(covariate),剥离了”因为更长所以得分高”的成分,使排名更纯粹地反映内容质量。类似地,Artificial Analysis 等第三方平台也提供按价格、速度、长度归一化后的性价比视图,帮助开发者做出更理性的选型决策。

人类投票成本高、速度慢。2024-2025 年的一个重要趋势是用强模型当裁判(LLM-as-Judge),替代人类做盲测投票:

  • Arena-Hard:用 GPT-4 级模型对 500 道难题的回答做两两偏好判断,再用 Bradley-Terry 拟合排名,成本极低且可复现。
  • Chatbot Arena 自动分榜:部分领域已用 LLM 裁判补充人类投票,加速覆盖新模型。
  • MT-Bench / AlpacaEval 2.0:类似的自动化偏好评测,附带与人类一致性的校准。

但 LLM-as-Judge 本身也有偏差(如偏好自己生成的内容、偏好特定格式),因此目前最佳实践是人类投票为主、LLM 裁判为辅,并定期做两者一致性的交叉验证。

import numpy as np
def elo_update(ra, rb, score_a, k=32):
"""根据对战结果更新 Elo 等级分。
参数:
ra, rb: 两个模型当前等级分
score_a: 模型 A 的实际得分(1=赢, 0=输, 0.5=平)
k: K 因子,控制每场影响幅度
返回:
更新后的 (ra, rb)
"""
# 期望得分:基于等级分差的 logistic 函数
ea = 1 / (1 + 10 ** ((rb - ra) / 400))
# "意料之外的成分" × K = 本场涨跌
ra += k * (score_a - ea)
rb += k * ((1 - score_a) - (1 - ea))
return ra, rb
# 模拟 Arena 盲测:模型 A 略强,真实胜率约 0.6
ra, rb = 1000, 1000
np.random.seed(42)
for _ in range(200):
s = 1 if np.random.rand() < 0.6 else 0 # 1 为 A 赢
ra, rb = elo_update(ra, rb, s)
print(f"模型A: {ra:.0f}, 模型B: {rb:.0f}")
# 结果:A 分明显高于 B,符合 A 更强的设定

以下用 scipy 对全部对战数据做最大似然拟合——这正是 Chatbot Arena 的核心方法:

import numpy as np
from scipy.optimize import minimize
# 假设有 4 个模型,收集到如下对战记录: (winner_idx, loser_idx)
battles = [
(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3),
(0, 1), (0, 2), (1, 2), (3, 2), (3, 1), (2, 0),
(0, 1), (2, 1), (0, 3), (1, 2), (0, 2), (3, 0),
]
n_models = 4
def neg_log_likelihood(log_beta):
"""Bradley-Terry 负对数似然(越小越好)。
P(i 击败 j) = beta_i / (beta_i + beta_j)
取 log 后对参数做优化,数值更稳定。
"""
ll = 0.0
for w, l in battles:
# log P(winner wins) = log_beta[w] - log(exp(log_beta[w]) + exp(log_beta[l]))
ll += log_beta[w] - np.logaddexp(log_beta[w], log_beta[l])
return -ll # 返回负值,因为 scipy 做最小化
# 初始化所有 log(β) = 0(即 β = 1)
result = minimize(neg_log_likelihood, x0=np.zeros(n_models), method="L-BFGS-B")
log_beta = result.x
beta = np.exp(log_beta - log_beta.max()) # 归一化,最大者 = 1
# 转换为 Elo 分(基准 1000,标度 400)
elo = 400 * (log_beta - log_beta.mean()) / np.log(10) + 1000
for i in range(n_models):
print(f"模型 {i}: β={beta[i]:.3f}, Elo≈{elo[i]:.0f}")
def bootstrap_ci(battles, n_bootstrap=1000, ci=0.95):
"""有放回重采样估计每个模型 Elo 的置信区间。"""
rng = np.random.default_rng(42)
battles = np.array(battles)
elo_samples = []
for _ in range(n_bootstrap):
idx = rng.integers(0, len(battles), size=len(battles))
sample = battles[idx]
res = minimize(
lambda lb: -sum(
lb[w] - np.logaddexp(lb[w], lb[l]) for w, l in sample
),
x0=np.zeros(n_models), method="L-BFGS-B"
)
lb = res.x
e = 400 * (lb - lb.mean()) / np.log(10) + 1000
elo_samples.append(e)
elo_samples = np.array(elo_samples)
lower = np.percentile(elo_samples, (1 - ci) / 2 * 100, axis=0)
upper = np.percentile(elo_samples, (1 + ci) / 2 * 100, axis=0)
return lower, upper
lo, hi = bootstrap_ci(battles)
for i in range(n_models):
print(f"模型 {i}: Elo ∈ [{lo[i]:.0f}, {hi[i]:.0f}]")

这三段代码完整地复现了 Chatbot Arena 排行榜背后的核心算法:逐场更新 → 全局拟合 → 置信区间。理解了它们,你就能自己搭一个迷你 Arena。

  • Arena 是目前最被信任的排行榜:因为它基于大规模真实人类偏好,难以刷榜(题目随机、模型匿名),比静态基准更能反映真实使用体验。详见LLM 评测与基准。
  • 关注置信区间而非绝对分数:相邻模型分差很小时(比如差 3 分),排名可能因采样波动而反转。看 Bootstrapping 置信区间是否重叠,比看名义排名更有意义。
  • K 因子的选择:K 大则更新灵敏但波动大,K 小则稳定但收敛慢。Chatbot Arena 使用统计拟合而非逐场更新,避免了 K 因子调参问题。
  • 投票者偏差:Arena 结果受投票者群体影响——用户可能偏好更长、更礼貌的回答(verbosity bias)。成熟的 Arena 会对这类偏差做统计分析并发布长度控制版本。
  • 分领域差异大:总榜强的模型未必在编程或数学领域最强。选模型时看对应领域的 Arena 分榜更有参考价值。2025 年 Arena 已细分出编程、数学、创意写作、多语言、长上下文、视觉理解、Web Agent 等十余个分榜。
  • 警惕数据污染对基准的侵蚀:随着模型训练数据越来越庞杂,静态基准(如 MMLU、GSM8K)被”无意背过”的风险持续上升。Arena 的随机出题机制天然免疫于此,这也是它地位上升的根本原因。
  • LLM-as-Judge 需校准:用 GPT-4 当裁判时,要注意裁判模型自身的偏好(如偏爱自己风格、偏爱冗长输出)。建议定期用人类投票子集校准裁判的一致性(agreement rate),一般 >80% 才算可靠。
  • 关注投票量而非只看排名:一个模型只打了 500 场就排第一,和打了 50000 场排第二,后者的可信度远高于前者。看排行榜时务必注意每个模型的投票样本量。
  • LMSYS Chatbot Arena:目前最权威的 LLM 人类偏好排行榜,累计数百万次投票,覆盖几乎所有主流模型。2025 年起其域名也简称为 LMArena,并新增了视觉、编程、Agent 等专项竞技场。
  • 模型选型决策:开发者在模型选型时参考 Arena 排名,选择性价比最高的模型。结合长度控制和价格归一化视图,可以做出更理性的判断。
  • 竞技场分榜:编程(Hard Prompts)、数学、创意写作、多语言、长上下文、视觉理解、Web Agent 等分领域排行,满足不同场景需求。
  • 内部模型评估:企业用同样的盲测对战方法对自研模型与开源/闭源模型做对比评估,不依赖公开题库。Meta、Google、Anthropic 等均在内部维护私有 Arena。
  • 自动化评测流水线:CI/CD 中集成 Arena-Hard 或 AlpacaEval 2.0,每次模型迭代后自动跑偏好评测,用 LLM-as-Judge 快速得到相对排名变化。
  • 游戏与体育排名:Elo 系统起源于国际象棋,广泛用于围棋(AlphaGo 评分)、电子竞技(如《英雄联盟》的匹配系统)、体育赛事排名。TrueSkill(微软为 Xbox 开发的多人扩展)和 Elo-MMR(开源改进版)是常见的替代算法。
类库 / 平台语言说明
Chatbot Arena (LMArena)WebLMSYS 运营的在线盲测平台,提供公开排行榜与开源对战数据集
arena-hard-autoPythonLMSYS 出品的自动化 LLM 评测工具,500 道难题 + GPT-4 裁判 + Bradley-Terry 拟合
AlpacaEval 2.0PythonStanford 的自动化偏好评测,附带长度归一化与人类一致性校准
MT-BenchPython多轮对话评测,用强模型当裁判做两两偏好判断
FastChat / Chatbot Arena 后端PythonLMSYS 开源的 Arena 服务端代码,可自部署私有竞技场
eloPython轻量级 Elo 计算库,几行代码即可实现等级分更新
trueskillPython微软 TrueSkill 排名系统,支持多人对战的不确定性建模
Elo-MMRRust / Python改进的多人排名系统,兼顾准确性和计算效率,被多平台采用
ax (Meta)PythonMeta 的自适应实验平台,支持贝叶斯优化与偏好建模
Artificial AnalysisWeb第三方平台,提供按价格/速度/长度归一化后的模型性价比对比
术语英文解释
等级分Elo Rating衡量选手实力的分数,赢了涨、输了扣,幅度取决于分差
K 因子K-factor控制每场对战对等级分影响幅度的参数
期望胜率Expected Score基于等级分差计算的预期胜出概率,用 logistic 函数计算
Bradley-Terry 模型Bradley-Terry Model用实力参数比表示胜率的统计模型,P(i 胜 j)=βi/(βi+βj)P(i \text{ 胜 } j) = \beta_i / (\beta_i + \beta_j),Elo 的理论基础
最大似然估计MLE, Maximum Likelihood Estimation给定观测数据,反推最可能产生这些数据的参数值的统计方法
BootstrappingBootstrapping有放回重采样估计分数置信区间的方法,Arena 用它算 95% 置信区间
盲测Blind Test投票者不知道模型身份的对战方式,避免品牌偏见
数据污染Data Contamination训练集里混入了测试集内容,导致基准分数虚高
冗长偏差Verbosity Bias评估者(人类或 LLM)系统性偏好更长回答的倾向
位置偏差Position Bias评估者偏好左/右特定位置的回答,Arena 通过随机化左右顺序来抵消
长度控制Length-Controlled Elo在 Bradley-Terry 模型中加入回答长度作为协变量,剥离冗长偏差后的排名
LLM-as-JudgeLLM-as-Judge用强模型(如 GPT-4)充当裁判,替代人类做偏好判断,成本低但需校准
静态基准Static Benchmark固定题库的评测集(如 MMLU),容易被数据污染,与 Arena 的动态出题形成对比
协变量Covariate回归模型中需要控制的额外变量,如回答长度、格式风格等
  • Elo,「The Rating of Chessplayers, Past and Present」(1978):Elo 系统创始人 Arpad Elo 的原著,详细阐述等级分系统的设计思想。
  • Chiang et al.,「Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference」(2024):LMSYS Chatbot Arena 论文,详述盲测方法与 Bradley-Terry 拟合。
  • Bradley & Terry,「Rank Analysis of Incomplete Block Designs」(1952):Bradley-Terry 模型的原始论文,Elo 系统的数学基础。
  • Elo-MMR 论文 (Smith et al., 2023):改进的多人排名系统,兼顾准确性和计算效率,被多平台采用。
  • LMSYS Arena-Hard Auto & AlpacaEval 2.0 技术报告 (2024):自动化偏好评测的标杆方案,详述 LLM-as-Judge 的设计与偏差控制。
  • Dubois et al.,「Length-Controlled AlpacaEval」(2024):系统性研究冗长偏差并提出长度控制方法的论文。
  • LLM 评测与基准:本站配套页面,覆盖客观题基准与人类偏好评估的完整方法论。
  • 模型选型:本站配套页面,讲解决策时如何综合 Arena 排名、价格、速度等因素。