想象你参加了一场“神秘品鉴大赛”:组委会把各家餐厅的招牌菜端到你面前,只贴编号——你完全不知道这道菜出自米其林三星,还是街角小馆。你只能凭舌头投票。这便是盲测的核心思想:蒙上眼睛,让味道说话。 大语言模型的评测,遇到了同样的难题。当你向一个 AI 提问时,如果屏幕旁写着“这是某知名公司的最新模型”,你会不自觉地带上滤镜——品牌光环、官方宣传、社区口碑,都在悄悄改写你的判断。为了让模型排名真正反映“回答好不好”而非“牌子响不响”,LMSYS 团队推出了 Chatbot Arena 竞技场评测体系,并配合一套严谨的盲测流程:随机抽取两个模型、匿名展示两个回复、收集你的二选一偏好,最后用国际象棋的 Elo 算法把这些偏好变成分数和排名。 这本小册子将带你拆解这条从“匿名对决”到“排行榜”的完整流水线。你会发现,盲测不只是“不写名字”这么简单——每一个细节,从抽签、展示、投票到计分,都在守卫同一个目标:让内容本身成为唯一的主裁判。

岗位关联

掌握 Arena Elo 盲测流程,你就能设计和解读可信的模型评测实验,在模型选型、Prompt 优化与基准测试汇报中给出有说服力的结论。

目录
  1. 可视化演示
  2. 盲测公平理念
  3. 随机配对机制
  4. 匿名展示原则
  5. 偏好投票收集
  6. Elo评分更新
  7. 排名生成发布
  8. 体系价值局限
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示Arena盲测对战流程、Elo评分排名动态变动、以及品牌偏见消除效果的对比分析。

本节配有交互动效(进入视口后自动加载,约 3KB)。

'+_captions.battle+'

盲测公平理念

想象一座城市的“神秘品鉴大赛”:组委会把各大餐厅的招牌菜端上桌,只给编号,食客评委们不知道哪道菜出自哪家餐厅。为什么要这么麻烦?因为一旦报出“米其林三星主厨新店”或“网红连锁餐厅”,食客心里立刻有了预期——名气大的餐厅即使菜一般,也容易获得“果然好吃”的评价;反之,小馆子做得再好,也可能被贴上“一般般”的标签。这个先入为主的“品牌光环”,正是盲测要对付的第一个敌人。

大语言模型的评测遇到了同样的困境。GPT 徽标、公司名气、开源社区的声望——这些光环同样会左右用户的判断。你问一个模型问题,如果屏幕旁边写着“这是某知名公司的模型”,你的打分很难不带滤镜。Arena Elo 盲测流程借鉴了美食盲品的思想:用户与模型对话时,完全看不到模型的身份,只看到两个并排的匿名回复。

形式上,用户提出一个问题,系统在后台随机召两个模型各生成一个回答。两个回答在界面上以“回复 A”和“回复 B”的形式匿名呈现,且左右位置随机分配,用户无法得知哪个回答来自哪个模型。于是用户的偏好投票只可能由回复内容本身驱动——品牌偏差和先验预期被挡在评测流程之外。用概率语言来说,观测到的投票不受模型身份影响:

就像品鉴大赛中,评委的“好吃”只来自舌头,不来自招牌;竞技场里,用户的“更好”只来自内容,不来自品牌。盲测是整套评测体系的公平基石——没有了这层“蒙眼布”,后面的一切排名都无从谈起。

Robserved=Rcontent+Rbrand⏟=0+εR_{\text{observed}} = R_{\text{content}} + \underbrace{R_{\text{brand}}}_{=0} + \varepsilon
公式通俗说明:用户给出的评价由“内容本身的质量”“品牌光环的影响”和“随机噪声”三部分组成。盲测让品牌项变成零,剩下内容质量和随机噪声。
  1. 观测评分$R_{\text{observed}}$ 表示用户最终给出的偏好反馈,它是我们唯一能直接拿到手的数据。
    RobservedR_{\text{observed}}
  2. 内容质量$R_{\text{content}}$ 代表回复本身好不好,这是盲测真正想测出来的东西。
    RcontentR_{\text{content}}
  3. 品牌偏差归零$R_{\text{brand}}=0$ 因为用户不知道模型身份,品牌光环不起作用,这一项被强制清零。
    Rbrand=0R_{\text{brand}} = 0
  4. 噪声项$\varepsilon$ 是用户情绪的随机波动,无法完全消除,但不会系统性偏向某个模型。
    ε\varepsilon

随机配对机制

品鉴大赛怎么安排比赛?如果总是让米其林餐厅互相厮杀、让路边小店互相比拼,排行榜就会被割裂成两个世界——高手之间输一场掉分惨重,小馆子赢十场也涨不了多少。组委会必须让每家餐厅都有机会遇到各种水平的对手。于是他们采用“随机抽签”:每轮随机抽出两家餐厅的菜对决,不搞安排、不搞分组。

Arena Elo 的对战系统也采用同样的思路。后台维护一个活跃模型池,每当一个用户带着问题来到竞技场,系统就从这个池子里随机抽取两个模型配对。注意,这是“随机”,而不是“让排行榜相邻的两名对决”。随机配对的好处是:随着对战轮次积累,任何两个模型之间都有机会交手,对战网络均匀覆盖,不会出现某个模型只和强手打、另一个只和弱手打的系统性偏差。

设模型池中共有 $N$ 个模型,每个模型被抽中的概率均等,则所有可能的两两对战组合数为:

抽签看似“随便”,其实最公平。随机配对让每家的对手分布趋于一致,Elo 分数才能在不同对手之间横向可比——就像品鉴大赛中每人都有机会碰上“硬骨头”,也有机会碰上“软柿子”,最后算总账时才让人心服口服。

P(模型i被选中)=1N,(N2)=N(N−1)2P(\text{模型}_i\text{被选中}) = \dfrac{1}{N}, \qquad \binom{N}{2} = \dfrac{N(N-1)}{2}
公式通俗说明:每个模型在每轮被抽中的概率完全相同,保证机会均等;组合数告诉我们整个池子能产生多少种对战组合。
  1. 等概率抽取$P(\text{模型}_i\text{被选中})=1/N$ 表示第 $i$ 个模型成为某一轮对战一方的概率,池子越大单轮被抽中概率越低,但对所有人公平。
    P(模型i被选中)=1NP(\text{模型}_i\text{被选中}) = \frac{1}{N}
  2. 总配对数$\binom{N}{2}$ 表示从 $N$ 个模型中任选 2 个的组合数,展开后得到 $N(N-1)/2$,代表整个竞技场可能发生的对战类型总数。
    (N2)=N(N−1)2\binom{N}{2} = \frac{N(N-1)}{2}

匿名展示原则

品鉴大赛端上来的菜,盘子是特制的、编号是机器打的,没有任何餐厅 logo,连服务员都不许多嘴。有些餐厅的摆盘风格太独特,一眼就能认出——组委会连摆盘都做了统一处理。匿名不是“不写名字”那么简单,而是要堵住所有可能泄露身份的渠道。

LLM 竞技场的匿名展示同理。两个回复在界面上并排展示,不标注模型名、公司名或版本号。更进一步,展示位置也随机化:模型 A 可能在左边也可能在右边,防止“用户总是倾向选右边”这类位置偏好污染结果。整个匿名原则的核心,是让用户的判断只依赖回复内容。

匿名性在数学上可以表达为:在用户看到回复内容的前提下,模型身份不携带任何额外的决策信息。也就是说,知道或不知道两个回复分别出自哪个模型,用户选择“回复 A 更好”的概率完全不变:

就像菜品端上来只有“1 号”“2 号”的铭牌,任何可能暗示出处的细节都被抹平。匿名的到位程度,直接决定了盲测的成色——身份信息每泄露一分,公平就退一分。

P(选A∣内容A,内容B)=P(选A∣内容A,内容B,身份A,身份B)P(\text{选A} \mid \text{内容A},\text{内容B}) = P(\text{选A} \mid \text{内容A},\text{内容B}, \text{身份A},\text{身份B})
公式通俗说明:左边是“只看到内容”时的选择概率,右边是“连身份也看到”时的选择概率。两者相等,说明身份信息不改变任何判断结果——这就是匿名性的数学含义。
  1. 左侧条件概率$P(\text{选A} \mid \text{内容A},\text{内容B})$ 表示用户只知道两份回复内容时选择 A 的概率,这是盲测想保留的“内容驱动”信号。
    P(选A∣内容A,内容B)P(\text{选A} \mid \text{内容A},\text{内容B})
  2. 右侧条件概率$P(\text{选A} \mid \text{内容A},\text{内容B}, \text{身份A},\text{身份B})$ 在条件中加入模型身份信息,概率与左侧相等,说明身份不改变用户判断。
    P(选A∣内容A,内容B,身份A,身份B)P(\text{选A} \mid \text{内容A},\text{内容B}, \text{身份A},\text{身份B})

偏好投票收集

食客吃完两道菜,不需要写长篇食评,只需要回答一个简单的问题:“更喜欢哪一道?”哪怕说不出哪里好,凭直觉也要给出一个答案。让投票足够简单,才能吸引足够多的普通食客参与。

竞技场同样把用户交互降到最低:看完两个匿名回复后,用户只需点击“回复 A 更好”“回复 B 更好”或“平局”。二选一(外加平局)的设计看似粗糙,却正是 Elo 体系需要的——它只需要“谁赢了”这个相对比较信号,不需要绝对打分。绝对打分(比如“给 8 分”)受用户尺度习惯影响大,有的用户永远打高分、有的永远打低分;二选一则稳定得多。

对任意一场对战,选票会转换成一个得分 $S$:A 胜 $S_A=1$;平局 $S_A=0.5$;A 负 $S_A=0$。将所有投票汇总,可以得到一个模型在某段时间内的折合胜率:

一道菜是咸了淡了、火候过了还是刚好——食客说不清楚,但“哪道更好吃”这个直觉判断,汇聚成海量数据后就揭示了真实的口味格局。单票很弱,但几十万张票加起来,就是市场的喉咙。

Wi=#胜+0.5×#平,WinRatei=WiTi×100%W_i = \#\text{胜} + 0.5 \times \#\text{平}, \qquad \text{WinRate}_i = \dfrac{W_i}{T_i} \times 100\%
公式通俗说明:把平局算作半胜,用“折合胜场数 ÷ 总场数”得到模型在某一时间窗口里的胜率基线。
  1. 折合胜场$W_i = \#\text{胜} + 0.5\times\#\text{平}$ 把平局折算成半场胜利,从而把三种投票结果压缩成一个数值。
    Wi=#胜+0.5×#平W_i = \#\text{胜} + 0.5 \times \#\text{平}
  2. 总场数$T_i$ 是模型参与的所有有效对决的总数,包括胜、平、负三种结果。
    Ti=#胜+#平+#负T_i = \#\text{胜} + \#\text{平} + \#\text{负}
  3. 胜率换算折合胜场除以总场数再乘 100%,得到直观的百分比胜率,作为后续 Elo 评分的统计基线。
    WinRatei=WiTi×100%\text{WinRate}_i = \frac{W_i}{T_i} \times 100\%

Elo评分更新

品鉴大赛每场对决产生一个胜者,但组委会并不简单地把“总胜场”当排名——因为赢下冠军餐厅,和赢下街边小店,含金量完全不同。他们采用国际象棋的 Elo 算法:每位选手有一个分数,赛前根据双方分数差预测胜率,赛后用实际结果修正预测误差。

Elo 算法天然适合“两两对决产生偏好”的竞技场场景。每收集到一条用户投票,系统就把它当作一场“比赛结果”,更新两个模型的评分。评分高低反映的是:在真实用户偏好中,这个模型的回答“更容易被选中”。分差越大,意味着强者面对弱者时被选中的概率越高。

设 A、B 当前评分分别为 $R_A$、$R_B$,则 A 对 B 的预期胜率为 $E_A$。对局结束后,用实际得分 $S_A$(胜 1 / 平 0.5 / 负 0)修正评分:

爆冷赢下冠军餐厅的街边小店,会获得远超常规的涨分——因为 $S-E$ 的差值大;而冠军餐厅输给意料之中的弱者,也会被狠狠扣分。Elo 让“输赢的含金量”也进入计算,品鉴榜因此比简单胜场榜更有说服力。

EA=11+10(RB−RA)/400,RA′=RA+K(SA−EA)E_A = \dfrac{1}{1 + 10^{(R_B - R_A)/400}}, \qquad R_A' = R_A + K(S_A - E_A)
公式通俗说明:先算出“按当前分数我预期赢多少”,再看“实际有没有赢够”,差额乘上步长 K,就是本次评分的调整量。
  1. 预测胜率$E_A = 1/(1+10^{(R_B-R_A)/400})$ 将双方分差映射成一个 0 到 1 之间的预期胜率。
    EA=11+10(RB−RA)/400E_A = \frac{1}{1 + 10^{(R_B - R_A)/400}}
  2. 实际得分$S_A$ 只取 1(胜)、0.5(平)、0(负),表示本场真实结果。
    SA∈{0, 0.5, 1}S_A \in \{0,\ 0.5,\ 1\}
  3. 更新量$\Delta R_A = K(S_A - E_A)$ 中,结果好于预期则加分为正,差于预期则加分为负。
    ΔRA=K(SA−EA)\Delta R_A = K(S_A - E_A)
  4. 新评分原评分加上更新量得到新评分 $R_A'$,这就是每轮投票后的动态迭代过程。
    RA′=RA+K(SA−EA)R_A' = R_A + K(S_A - E_A)

排名生成发布

几千场对决打完后,组委会把所有餐厅按 Elo 分从高到低排成一张“年度口味榜”。但细心的食客发现,榜单并非铁板一块——分数后面还跟着一个灰色的误差条,有的餐厅分高但区间很宽,说明它打得多而有输有赢,排名还没“坐稳”。

Arena 排行榜同样每周动态更新。系统把当前所有模型的 Elo 评分汇总排序,生成榜单。但用户投票数量有限、各模型对战次数也不均等,评分数值存在统计不确定性。官方会在分数旁同时呈现置信区间,提示读者“这个分数可信到什么程度”——分越高越靠前,但如果区间很宽,榜首的位置随时可能易主。

若某模型参与 $n$ 场对战,评分波动用样本标准差 $\sigma$ 衡量,则 95% 置信区间的宽度为:

榜单上的误差条,就像品鉴报告上“本次评分波动较大,仅供参考”的注脚。一张负责任的榜单不仅要告诉你是谁第一,还要告诉你这个第一有多稳固——置信区间,就是排行榜的诚实。

CI95=Rˉ±1.96×σn\text{CI}_{95} = \bar{R} \pm 1.96 \times \dfrac{\sigma}{\sqrt{n}}
公式通俗说明:区间宽度与标准差成正比、与对决场次的平方根成反比——打得多、战绩稳定,区间就窄,排名才有说服力。
  1. 平均评分$\bar{R}$ 是该模型在时间窗口内评分的平均值,作为区间中心。
    Rˉ\bar{R}
  2. 波动幅度$\sigma$ 是评分的标准差,衡量每次更新带来的波动有多大。
    σ\sigma
  3. 标准误$\sigma/\sqrt{n}$ 是标准误,随对战场次 $n$ 增加而变小,体现“数据越多越确定”。
    σn\frac{\sigma}{\sqrt{n}}
  4. 区间半宽$1.96\times\sigma/\sqrt{n}$ 是 95% 置信水平的区间半宽,与标准误相乘后得到可信分值的上下边界。
    1.96×σn1.96 \times \frac{\sigma}{\sqrt{n}}

体系价值局限

神秘品鉴大赛办了很多届,吸引了全城的餐厅按它调整菜品。但也有食评家指出:评委都是本地居民,口味偏甜;参赛中餐居多,西餐样本太少;旺季游客多了,榜单又飘忽不定。榜单有用,但别把它当成“绝对真理”。

Arena Elo 在 LLM 评测领域的地位同样重要且微妙。它是目前最具参考价值的“群众偏好基准”之一——新模型发布后,团队会第一时间把它放进竞技场,用盲测 Elo 相对排名证明实力;论文中它也常被引作模型进步的核心证据。但它衡量的本质是“在特定用户群体、特定提示分布下的相对偏好”,不是可复现的绝对质量。

样本偏差可以量化地表达为:观测评分期望与真实总体评分之间的差距:

当用户群构成变化(比如从英文开发者变成中文普通用户)或提示分布偏移时,$\hat{R}$ 就会偏离 $R_{\text{true}}$。此外,偏好投票还受界面布局、轮次上下文等环境因素影响,这些都是 Arena Elo 认知边界的一部分。

就像品鉴榜改变了一座城市的餐饮风向,Arena 榜单也牵引着大模型的军备竞赛。它是明亮的灯塔,但也有照不到的暗角——理解它的价值与局限,才算真正读懂了这张榜单。

Bias=E[R^]−Rtrue\text{Bias} = \mathbb{E}[\hat{R}] - R_{\text{true}}
公式通俗说明:如果“看得见的评分”和“真实的总体评分”之间出现系统性差距,那就是样本偏差在作怪——盲测消除了品牌偏差,但消不掉用户构成带来的偏差。
  1. 观测估计$\hat{R}$ 是竞技场投票数据算出的评分估计值。
    R^\hat{R}
  2. 期望值$\mathbb{E}[\hat{R}]$ 表示在大量重复采样下,这个估计的平均水平。
    E[R^]\mathbb{E}[\hat{R}]
  3. 真实值$R_{\text{true}}$ 是全体目标用户偏好的真实评分,实际无法直接观测,只能不断逼近。
    RtrueR_{\text{true}}
  4. 偏差计算$\text{Bias}=\mathbb{E}[\hat{R}]-R_{\text{true}}$ 两者相减得到系统性偏差,正数表示高估、负数表示低估。
    Bias=E[R^]−Rtrue\text{Bias} = \mathbb{E}[\hat{R}] - R_{\text{true}}

AI 应用场景

模型选型评测

阶段:模型评估与选择

解决的问题:产品上线前要决定用哪个基础模型。传统做法是让内部专家对着 benchmark 分数打分,容易受厂商宣传和社区口碑影响,且与真实用户体验脱节。用盲测 Elo 流程把候选模型的回复匿名混在一起,让目标用户投票,就能得到更贴近真实偏好的相对排名。

具体案例:某 AI 客服 SaaS 公司在 GPT-4o、Claude 和自家微调模型之间做选型。内部搭建一个小型竞技场,收集 5000 条用户盲测偏好投票,按 Elo 排名后发现自家微调模型在垂直业务问答上票数领先,最终选定精调模型上线。

提示词方案优化

阶段:提示工程与迭代

解决的问题:两版系统提示词生成的回复质量谁更好?直接问“哪个好”容易让评审带着“官方模板更正规”的预期。将两版提示词对应的匿名回复进行双盲对比,让一线运营人员投票,消除先验预期干扰。

具体案例:客服 Prompt 团队把“详细版”和“简洁版”两套系统提示词分别生成回复,匿名成对展示给 200 名真实客服投票,结果“简洁版”胜率显著更高,团队随即替换默认提示词。

开源社区众包基准

阶段:基准测试与榜单运营

解决的问题:单靠 MMLU、GSM8K 等静态 benchmark 分数无法代表真实用户偏好,且容易过拟合。社区需要一个开放、持续更新的“用户口味”基准,用众包盲测对抗榜单饱和。

具体案例:LMSYS Chatbot Arena 本身即此类实践:全球用户随时发起匿名对战投票,官方每周发布 Elo 排行榜,成为开源社区引用率最高的模型对比参考之一。

Python 演示

python59 行
# -*- coding: utf-8 -*-"""Arena Elo 盲测流程模拟:随机配对 -> 匿名投票 -> Elo更新"""import randomimport math  class Model:    def __init__(self, name, true_score):        self.name = name        self.true_score = true_score        self.rating = 1000.0        self.win_count = 0        self.loss_count = 0     def expected(self, opponent):        return 1.0 / (1.0 + 10 ** ((opponent.rating - self.rating) / 400.0))     def update(self, opponent, score, k=32.0):        exp_score = self.expected(opponent)        self.rating += k * (score - exp_score)        if score > 0.5:            self.win_count += 1        else:            self.loss_count += 1  def simulate_battle(a, b):    """模拟盲测投票:两个回复均匿名,仅凭真实质量决定胜率"""    prob_a = 1.0 / (1.0 + math.exp((b.true_score - a.true_score) / 1.2))    return a if random.random() < prob_a else b  def main():    random.seed(42)    models = [        Model("Alpha", 2.0),        Model("Beta", 1.2),        Model("Gamma", 0.5),        Model("Delta", -0.3),        Model("Epsilon", -1.0),    ]    rounds = 200    for _ in range(rounds):        x, y = random.sample(models, 2)      # 随机配对机制        winner = simulate_battle(x, y)       # 匿名回复 + 二选一投票        loser = x if winner is y else y        winner.update(loser, 1.0)            # Elo评分更新:胜者得1分        loser.update(winner, 0.0)            # 败者得0分    ranking = sorted(models, key=lambda m: m.rating, reverse=True)    print("盲测后 Elo 排名:")    for i, m in enumerate(ranking, 1):        print(f"{i}. {m.name:<8} Elo={m.rating:6.1f}  胜{m.win_count} 负{m.loss_count}")    true_ranking = sorted(models, key=lambda m: m.true_score, reverse=True)    print("真实能力排名:", [m.name for m in true_ranking])    print("盲测评分排名:", [m.name for m in ranking])  if __name__ == "__main__":    main()
目的:模拟 5 个能力不同的模型在 Arena 盲测流程下的对战、投票和 Elo 更新,最终输出排名并与真实能力排名对比。
  1. random.sample(models, 2)从模型池中无放回随机抽取两个模型,实现随机配对机制。
  2. simulate_battle(x, y)模拟用户盲测投票:两个回复匿名展示,用户仅凭真实质量选出更好的那个。
  3. winner.update(loser, 1.0)胜者按 Elo 公式更新评分,实际得分记为 1。
  4. loser.update(winner, 0.0)败者按同一公式更新评分,实际得分记为 0。
  5. rating += k * (score - exp_score)Elo 核心更新式:用实际得分与预期得分之差乘以步长 K 调整评分。
  6. expected(opponent)根据双方分差计算预期胜率,分差越大强方预期胜率越高。
  7. sorted(models, key=lambda m: m.rating, reverse=True)把评分从高到低排序,生成最终排行榜。
  8. random.seed(42)固定随机种子,让实验可复现,便于对比不同设置。

常见误区

误区盲测之后就没有任何偏见了。只要用户不知道模型名,投票结果就是完全客观的,可以放心当作“标准答案”来用。

正解盲测只消除了品牌光环、展示位置等“身份相关偏差”。用户群体构成、提示词分布、界面布局等结构性偏差依然存在。它让评测“更公平”,但离“绝对客观”还有距离,就像盲品大赛的评委如果全是嗜甜人群,榜单自然会偏甜。

为何常见:人们常把“匿名”等同于“客观”,忽略了评测体系中还有其他系统性偏差来源。

误区1200 分就是比 1100 分“厉害 100 个单位”,Elo 分数可以直接拿来当模型能力的绝对刻度。

正解Elo 是一种序数尺度上的相对偏好度量,分数差只对应预期的获胜概率,不是线性绝对值。分差 400 约等于强方预期胜率 91%,但“100 分差距”本身没有绝对含义。它更像围棋棋手的段位分,依赖对战池和用户群体而变化。

为何常见:把排行榜分数类比成身高、体重的绝对测量,忽略了 Elo 是“相对比较”衍生出的排序工具。

误区让每个模型都和同一个强基准模型对战,再用胜率排名,不是更公平吗?随机配对显得太随意。

正解固定对手会造成“过拟合单一基准”,且不同模型面对的对手情境各异时,胜负信息不可比。随机配对让所有模型的对手分布趋于一致,评分落在一个可比的尺度上。盲目固定对照组,反而会引入系统性偏差。

为何常见:直觉上“控制变量”是科学方法,但开放竞技场里对手多样性本身就是需要保留的变量。

误区只要界面不显示模型名,就算回答里写着“我是 GPT-4”,投票也依然是盲测有效的。

正解模型可能在回答中自曝身份或展现独特风格,让用户重新获得身份信息,等于“盲测破功”。这类对话要么被标记剔除,要么需要平台侧加装身份泄露检测,否则会悄悄污染数据。

为何常见:用户视角只关注“回答质量”,容易忽略模型自身存在的身份泄露风险和风格指纹。

误区平局说明用户没认真比较,应该强制用户二选一,避免浪费投票数据。

正解平局记录的是“两者难分伯仲”的接近信号,在 Elo 中按 0.5 计分,是稳定的中间结果。强行二选一会迫使用户在无法区分时随意站队,反而增加噪声。平局不是“没结果”,而是一种有价值的结果。

为何常见:直觉上“分出胜负才有信息量”忽略了接近强度本身就是重要的评测信号。

面试题

Q1. 在 Arena Elo 盲测流程中,“盲”的核心含义是什么?

单选题 · easy

  • A.用户看不到模型的名称← 正确答案
  • B.模型看不到用户的身份
  • C.开发者看不到投票结果
  • D.评测方不知道模型是谁

答案:A。盲测之“盲”在于对战的用户不知道回复来自哪个模型,从而避免品牌光环影响投票。模型不主动看用户、开发者能看到投票结果,都不是盲测的定义核心。

Q2. 两个模型的回复在界面展示时,哪个做法是正确的?

单选题 · easy

  • A.始终把强模型放左边
  • B.两个回复位置固定摆
  • C.回复左右位置随机分配← 正确答案
  • D.让用户自由拖拽排位置

答案:C。展示位置需要随机化,防止“用户偏好选右边”这类位置偏差污染投票结果。固定摆放或人为安排都会让位置成为隐性信号。

Q3. 用户在盲测环节中投票时,应当主要依据什么做判断?

单选题 · easy

  • A.模型品牌口碑与知名度
  • B.模型参数量与训练规模
  • C.两个匿名回复内容质量← 正确答案
  • D.模型生成回复的速度

答案:C。盲测的设计目标就是让用户只看匿名回复本身的内容质量。品牌、参数量、速度等信息都被刻意隐藏,不参与投票判断。

Q4. Chatbot Arena 的 Elo 评分更新主要依赖什么数据?

单选题 · mid

  • A.模型生成的 token 数量
  • B.用户二选一的胜负结果← 正确答案
  • C.模型回答的文本长度
  • D.模型推理的时间开销

答案:B。Elo 更新依赖“谁赢了”这一二选一胜负结果,辅以平局信息。回复长度、token 数、推理速度都不是竞技场打分依据。

Q5. Elo 预期胜率公式中的常数 400 起什么作用?

单选题 · mid

  • A.将分差换算成预期胜率← 正确答案
  • B.控制每次评分变化的 K 值大小
  • C.决定用户投票总次数下限
  • D.规定匿名文本最大字符数

答案:A。400 是缩放常数,决定分差与胜率之间的映射尺度,比如分差 400 对应约 91% 的预期胜率。它不控制 K 值,更与投票次数、文本长度无关。

Q6. 在 Arena Elo 更新规则中,K 值(如 32)主要控制什么?

单选题 · mid

  • A.单场对局评分变化幅度← 正确答案
  • B.用户投票人数的最小值
  • C.模型名称展示的随机程度
  • D.匿名回复字符数的上限

答案:A。K 是更新步长,K 越大单场投票引起的评分变动越明显,K 越小评分越稳定。它不涉及投票人数、匿名方式和文本限制。

Q7. 以下哪些做法属于 Arena Elo 盲测流程的关键环节?

多选题 · mid

  • A.随机抽取两个模型进行对战← 正确答案
  • B.匿名展示两个模型的回复← 正确答案
  • C.向用户显示模型具体名称
  • D.收集用户二选一的投票← 正确答案

答案:ABD。随机配对、匿名展示、偏好投票收集是盲测三大环节。显示模型名称会破坏盲测,属于流程禁忌。

Q8. 当 R_A=1200、R_B=1100 时,模型 A 对模型 B 的预期胜率约为多少?

单选题 · hard

  • A.分差对应约六十四个百分点← 正确答案
  • B.分差对应约七十六个百分点
  • C.分差对应约五十九个百分点
  • D.分差对应约八十八个百分点

答案:A。代入公式 E=1/(1+10^((1100-1200)/400))=1/(1+10^(-0.25))≈1/(1+0.5623)≈0.64,即约 64%。其余选项分母计算有误。

Q9. 盲测流程能够有效消除以下哪些类型的偏差?

多选题 · hard

  • A.品牌光环带来的先验预期← 正确答案
  • B.回复展示位置的左右偏好← 正确答案
  • C.模型真实能力的评价高低
  • D.用户群体的特定口味倾向

答案:AB。匿名隐藏身份消除了品牌先验,位置随机化消除了左右位置偏好。“真实能力”是盲测要测量的对象而非偏差;用户群体口味属于样本偏差,盲测无法消除。

Q10. 关于 Arena Elo 排行榜的置信区间,下列说法正确的是?

多选题 · extreme

  • A.对决场次越多评分区间越窄← 正确答案
  • B.评分区间越宽表示越不确定← 正确答案
  • C.区间越宽表示评分分数越可信
  • D.样本偏差来自用户群构成差异← 正确答案

答案:ABD。置信区间随场次增加而变窄,区间越宽越不确定;用户群构成差异会造成样本偏差。C 把区间宽与可信度正相关,恰好说反了。