竞技评分和匹配
背景介绍
竞技游戏中的 Rating System 表面上是在维护一个代表玩家水平的数字,实际上解决的是一个典型的动态统计推断问题:玩家的真实竞技能力无法被直接观测,系统只能观察一系列带有随机性的比赛结果,并据此持续估计潜在能力。
一个合理的评分系统不仅需要回答“能力如何”,还必须回答“这个判断有多可靠”“新证据应当让评分移动多少”“长时间没有比赛后旧评分还能相信多少”,以及在多人和组队游戏中“如何从团队胜负反推出每个成员的个人能力”。
Elo、Glicko 和 TrueSkill 可以看作这一问题的三个典型建模层次。
- Elo 将每名玩家能力压缩为一个标量 Rating,并通过实际赛果与期望赛果之间的预测误差进行在线修正;
- Glicko 在 Rating 之外显式引入 Rating Deviation,使模型能够区分“1500 分且已经稳定比赛数百场”和“1500 分但刚刚完成几场比赛”这两种完全不同的统计状态;
- TrueSkill 则进一步把能力本身建模为概率分布,并引入比赛表现这一随机变量,使不确定性、团队组合、多人排序和平局都可以放入同一个概率图模型中处理。
统计形式化
隐变量能力与可观测比赛结果
设玩家 $i$ 存在一个无法直接观测的真实能力 $s_i$。系统真正能够观察的是比赛结果,例如玩家 $i$ 与玩家 $j$ 比赛后得到结果 $y_{ij}$。在最简单的无平局二元模型中,可以定义 $y_{ij}=1$ 表示玩家 $i$ 获胜,$y_{ij}=0$ 表示玩家 $j$ 获胜,因此评分问题可以写成从观测集合 $\mathcal D$ 中估计潜变量集合 $\mathbf s$:
\[\mathcal D = \{(i,j,y_{ij})\}, \qquad \mathbf s = (s_1,s_2,\ldots,s_n)\]关键困难在于,即使两名玩家的真实能力保持不变,比赛结果仍然不必是确定性的。一个更强的玩家可能因为操作失误、临场状态、地图、角色克制或其他随机因素输掉比赛,因此合理的模型不能写成 $s_i>s_j$ 就必然导致 $i$ 获胜,而需要定义一个条件概率:
\[P(y_{ij}=1\mid s_i,s_j)\]评分算法的核心差异来自两个问题:第一,如何定义这个胜负概率;第二,在观察到新的 $y_{ij}$ 后,如何更新关于 $s_i$ 和 $s_j$ 的估计。Elo 使用确定的点估计和固定步长完成在线更新,Glicko 为点估计附加不确定度,TrueSkill 则直接维护整个近似后验分布。
评分系统的三个基本目标
从统计意义看,一个 Rating System 至少需要满足预测、估计和动态跟踪三个目标。预测要求当前评分能够给出合理的比赛结果概率;估计要求长期比赛数据能够把玩家的评分推向与其真实能力一致的位置;动态跟踪则要求当玩家能力随时间发生变化时,系统不能因为历史数据过多而永久冻结在旧状态。
因此,评分更新可以抽象成状态空间形式。设玩家在时间 $t$ 的潜在能力为 $s_{i,t}$,比赛结果为 $y_t$,则一个一般的动态评分模型可以表示为:
\[s_{i,t} \sim p(s_{i,t}\mid s_{i,t-1})\]以及:
\[y_t \sim p(y_t\mid \mathbf s_t)\]前一个分布描述玩家能力随时间如何漂移,后一个分布描述给定当前能力时比赛结果如何产生。Elo 主要聚焦第二部分并用启发式学习率更新状态;Glicko 和 TrueSkill 则逐渐把这两个过程都纳入概率模型。
Elo
Elo 的期望得分函数
设玩家 $A$ 和玩家 $B$ 的当前评分分别为 $R_A$ 与 $R_B$。经典 Elo 系统使用评分差而不是绝对评分预测比赛结果,因此玩家 $A$ 的期望得分写为:
\[E_A = \frac{1} {1+10^{(R_B-R_A)/400}}\]由于两人的期望得分互补,所以有:
\[E_B=1-E_A\]这里的 $400$ 是评分尺度参数。更一般地,可以将公式写为:
\[E_A = \frac{1} {1+10^{-(R_A-R_B)/D}}\]其中 $D$ 控制 Rating 差值转换为胜率差异的速度。定义 $\Delta R=R_A-R_B$,再利用 $10^x=e^{x\ln 10}$,可以将期望得分改写为:
\[E_A = \frac{1} {1+\exp\left( -\frac{\ln 10}{D}\Delta R \right)}\]如果令 $\lambda=\frac{\ln 10}{D}$,则:
\[E_A = \frac{1} {1+e^{-\lambda\Delta R}}\]因此 Elo 的胜率函数本质上是一条 Logistic 曲线。Rating 相同时 $\Delta R=0$,于是 $E_A=0.5$;当 $\Delta R$ 越来越大时 $E_A$ 单调趋近于 $1$;当 $\Delta R$ 趋向负无穷时,$E_A$ 趋近于 $0$。这一结构保证了“评分只通过相对差值决定比赛概率”。
随机梯度上升:Elo 的误差信号
从单场比赛的对数似然出发。设玩家 $A$ 的实际得分为 $S_A$,在没有平局的情况下 $S_A\in{0,1}$。给定模型预测概率 $E_A$ 后,观测结果的 Bernoulli 似然为:
\[P(S_A\mid R_A,R_B) = E_A^{S_A} (1-E_A)^{1-S_A}\]取对数得到:
\[\ell = S_A\ln E_A + (1-S_A)\ln(1-E_A)\]由于 $E_A$ 是 Rating 差 $\Delta R$ 的函数,对 $\Delta R$ 求导。由 Logistic 函数导数可得:
\[\frac{\partial E_A}{\partial \Delta R} = \lambda E_A(1-E_A)\]于是对数似然的梯度为:
\[\frac{\partial\ell}{\partial\Delta R} = \frac{S_A}{E_A} \frac{\partial E_A}{\partial\Delta R} - \frac{1-S_A}{1-E_A} \frac{\partial E_A}{\partial\Delta R}\]代入导数并整理:
\[\frac{\partial\ell}{\partial\Delta R} = \lambda \left[ S_A(1-E_A) - (1-S_A)E_A \right]\]进一步化简得到:
\[\frac{\partial\ell}{\partial\Delta R} = \lambda(S_A-E_A)\]这说明 $S_A-E_A$ 并不是任意设计出来的经验项,而正是单场比赛对数似然关于实力差的梯度方向。实际结果高于模型预期时 $S_A-E_A>0$,应当提高玩家 $A$ 的相对评分;实际结果低于模型预期时 $S_A-E_A<0$,评分应当下降。
如果直接沿对数似然的梯度方向更新 Rating,可以写成:
\[R_A' = R_A + \eta \frac{\partial\ell}{\partial R_A}\]由于 $\frac{\partial\Delta R}{\partial R_A}=1$,所以:
\[R_A' = R_A + \eta\lambda(S_A-E_A)\]将常数 $\eta\lambda$ 合并为 $K$,得到经典 Elo 更新形式:
\[R_A' = R_A + K(S_A-E_A)\]对玩家 $B$,由于 $\frac{\partial\Delta R}{\partial R_B}=-1$,因此:
\[R_B' = R_B - K(S_A-E_A)\]在零和更新条件下,两人的总分保持不变:
\[R_A'+R_B' = R_A+R_B\]因此可以把 Elo 理解成一种极其轻量的 Online Learning:每场比赛提供一个训练样本,系统计算当前模型的预测误差 $S-E$,然后沿着提高该比赛观测概率的方向移动 Rating。$K$ 的本质则类似于优化算法中的学习率,它决定新证据相对于历史估计的权重。
Elo 核心算法伪代码
1
2
3
4
5
6
7
8
9
10
11
12
初始化每个玩家的 Rating
对于每一场比赛:
根据双方 Rating 差计算期望得分 E
读取实际比赛得分 S
计算预测误差 error = S - E
获胜方或玩家 A:
Rating ← Rating + K × error
对手:
Rating ← Rating - K × error
这个算法的关键不在于具体 Rating 初值或 $K$ 的经验选择,而在于每场比赛都执行“预测—观察—误差修正”的闭环。它具有极低的计算复杂度和良好的可解释性,但只维护一个点估计,因此无法直接量化当前评分的不确定程度。
Glicko:把评分的不确定性纳入状态变量
从点估计扩展为概率分布
Glicko 的基本出发点是:玩家真实能力不是一个已经被系统精确知道的常数。对于当前 Rating $r$,系统实际上应当保存一个围绕它的概率分布。最基本的表示是:
\[s \sim \mathcal N(r,RD^2)\]其中 $r$ 是能力估计的中心位置,$RD$ 是 Rating Deviation。$RD$ 越小,分布越集中,说明系统对于玩家实力越确定;$RD$ 越大,概率质量分散在更宽的区间中,说明当前 Rating 的统计可信度较低。
在近似正态的解释下,能力的大约 $95%$ 区间可以写为:
\[r\pm1.96RD\]工程上常近似写作 $r\pm2RD$。因此,$r=1800$ 且 $RD=40$ 与 $r=1800$ 且 $RD=250$ 虽然具有同一个中心 Rating,但所表达的信息完全不同:前者意味着系统已经较准确地定位到玩家能力附近,后者则表示 $1800$ 只是一个高度不确定的暂时估计。
不活跃会使不确定性增加
如果玩家长期没有比赛,即使 Rating 的中心位置暂时没有理由变化,系统对于这个历史 Rating 的置信度也应当降低,因为玩家能力可能随时间漂移。可以将真实能力写成一个随机游走:
\[s_{t+1} = s_t+\varepsilon_t\]其中:
\[\varepsilon_t \sim \mathcal N(0,c^2)\]如果当前能力后验近似为:
\[s_t \sim \mathcal N(r_t,RD_t^2)\]由于两个独立高斯随机变量之和仍为高斯分布,因此:
\[s_{t+1} \sim \mathcal N \left( r_t, RD_t^2+c^2 \right)\]于是经过一个没有比赛的 Rating Period 后:
\[RD_{t+1} = \sqrt{RD_t^2+c^2}\]如果连续经过 $T$ 个相同长度的空闲周期,则方差逐次相加:
\[RD_{t+T} = \sqrt{RD_t^2+Tc^2}\]这一定律直接来自高斯随机游走的方差可加性,而不是简单地人为规定“长期不玩就增加 RD”。它表达的是一个动态系统中的自然现象:没有新观测时,状态预测的不确定性会随着时间扩散。
对手的不确定性如何进入胜率模型
在 Elo 中,对手 Rating 被当作精确值处理。但如果对手自身的评分具有较高 $RD_j$,那么直接把 $r_j$ 当成真实实力显然过于自信。Glicko 通过一个衰减函数降低高不确定性对手对比赛模型的影响。首先定义:
\[q = \frac{\ln 10}{400}\]然后定义:
\[g(RD_j) = \frac{1} { \sqrt{ 1+\frac{3q^2RD_j^2}{\pi^2} } }\]当 $RD_j\rightarrow0$ 时,有 $g(RD_j)\rightarrow1$,说明对手能力几乎已知,可以完整使用双方 Rating 差。当 $RD_j$ 增大时,$g(RD_j)$ 减小,双方 Rating 差被向零压缩,因此系统不会因为一个自身 Rating 都极不稳定的对手而给出过度极端的赛前预测。
因此玩家面对对手 $j$ 的期望得分变为:
\[E_j = \frac{1} { 1+ 10^{ -g(RD_j)(r-r_j)/400 } }\]写成指数形式则为:
\[E_j = \frac{1} { 1+ \exp\left[ -qg(RD_j)(r-r_j) \right] }\]这仍然是 Logistic 胜率模型,但斜率被对手的不确定性 $RD_j$ 调制。对手越不可靠,模型越倾向于给出接近 $0.5$ 的保守预测。
从贝叶斯后验推导 Rating 更新
设一个 Rating Period 开始时,玩家能力的先验分布为:
\[s \sim \mathcal N(r,RD^2)\]为了简化记号,以下把潜在能力变量仍记为 $s$。其先验密度满足:
\[p(s) \propto \exp \left[ -\frac{(s-r)^2}{2RD^2} \right]\]假设该周期中玩家进行了 $m$ 场比赛,第 $j$ 场的实际结果为 $S_j$,预测胜率为 $E_j(s)$。条件独立假设下,总似然为:
\[L(s) = \prod_{j=1}^{m} E_j(s)^{S_j} \left[ 1-E_j(s) \right]^{1-S_j}\]根据贝叶斯公式,后验分布满足:
\[p(s\mid\mathcal D) \propto p(s)L(s)\]取对数后:
\[\log p(s\mid\mathcal D) = -\frac{(s-r)^2}{2RD^2} + \sum_{j=1}^{m} \left[ S_j\log E_j + (1-S_j)\log(1-E_j) \right] + C\]其中 $C$ 与 $s$ 无关。对 $s$ 求一阶导数。因为:
\[\frac{\partial E_j}{\partial s} = qg(RD_j)E_j(1-E_j)\]所以似然部分的梯度为:
\[\frac{\partial\log L}{\partial s} = q \sum_{j=1}^{m} g(RD_j) (S_j-E_j)\]先验部分的导数为:
\[\frac{\partial\log p(s)}{\partial s} = -\frac{s-r}{RD^2}\]因此完整后验的梯度为:
\[\frac{\partial\log p(s\mid\mathcal D)} {\partial s} = -\frac{s-r}{RD^2} + q \sum_{j=1}^{m} g(RD_j)(S_j-E_j)\]这已经揭示了 Glicko 与简单积分更新之间的差异:第一项把能力估计拉回先验中心,第二项是所有比赛提供的新证据。玩家历史评分越确定,即 $RD$ 越小,先验项的约束越强;玩家 Rating 越不确定,历史先验约束越弱,新结果就能推动更大的 Rating 变化。
从后验曲率推导新的 $RD$
为了得到封闭形式的近似更新,可以在当前能力附近对对数后验进行二阶展开。比赛似然的二阶导数为:
\[\frac{\partial^2\log L} {\partial s^2} = -q^2 \sum_{j=1}^{m} g(RD_j)^2 E_j(1-E_j)\]定义比赛数据贡献的方差尺度 $d^2$:
\[\frac{1}{d^2} = q^2 \sum_{j=1}^{m} g(RD_j)^2 E_j(1-E_j)\]因此:
\[d^2 = \left[ q^2 \sum_{j=1}^{m} g(RD_j)^2 E_j(1-E_j) \right]^{-1}\]先验高斯分布的负二阶导数,也就是先验精度,为 $\frac{1}{RD^2}$。新数据贡献的精度为 $\frac{1}{d^2}$。高斯近似下,后验精度等于两者之和:
\[\frac{1}{RD'^2} = \frac{1}{RD^2} + \frac{1}{d^2}\]因此新的 Rating Deviation 为:
\[RD' = \left( \frac{1}{RD^2} + \frac{1}{d^2} \right)^{-1/2}\]这一结果具有清晰的贝叶斯意义。每得到新的有效比赛数据,$\frac{1}{d^2}>0$,所以后验精度增加,从而 $RD’<RD$。换句话说,比赛不仅可能改变玩家 Rating,更重要的是增加了系统关于玩家能力的信息量,使概率分布逐渐收窄。
如果在比赛开始前先考虑了一段不活跃时间,则应该先计算扩散后的 $RD_*$:
\[RD_* = \sqrt{ RD^2+Tc^2 }\]随后在所有更新公式中使用 $RD_*$ 替换原来的 $RD$,最终得到:
\[RD' = \left( \frac{1}{RD_*^2} + \frac{1}{d^2} \right)^{-1/2}\]这就形成了“没有比赛时不确定性扩大,有比赛时不确定性收缩”的动态闭环。
从后验均值推导新的 Rating
在二阶高斯近似下,后验均值的移动可以看作梯度乘以新的后验方差。令新的后验方差为 $RD’^2$,则 Rating 更新写为:
\[r' = r + qRD'^2 \sum_{j=1}^{m} g(RD_j)(S_j-E_j)\]代入 $RD’^2$ 的表达式:
\[r' = r + \frac{ q }{ \frac{1}{RD^2} + \frac{1}{d^2} } \sum_{j=1}^{m} g(RD_j)(S_j-E_j)\]这一形式非常重要,因为 Elo 中经验指定的 $K$ 在 Glicko 中被一个随不确定性自动变化的量替代。若当前 $RD$ 很大,则 $\frac{1}{RD^2}$ 很小,新的比赛能够造成较大的能力移动;若 $RD$ 已经很小,则先验精度很高,相同比赛结果带来的 Rating 变化会自然缩小。因此,Glicko 不需要仅靠比赛场次手工猜测“新玩家应该用大 $K$,老玩家应该用小 $K$”,学习速度会从概率不确定性中自然产生。
为什么对手的 $RD$ 也影响你的更新
观察 Rating 更新式:
\[r' = r + qRD'^2 \sum_j g(RD_j)(S_j-E_j)\]如果某个对手的 $RD_j$ 很大,则 $g(RD_j)$ 变小,因此该场比赛的误差信号会被衰减。同时在:
\[\frac{1}{d^2} = q^2 \sum_j g(RD_j)^2 E_j(1-E_j)\]中,该比赛贡献的后验精度也会减小。这意味着一个评分本身都非常不确定的对手,即使比赛结果出人意料,也不会让系统对你的能力产生过强判断。
这个设计体现了不确定性传播的基本原则:观测数据的解释依赖其参照物是否可靠。如果我们不知道对手到底有多强,那么“击败这个对手”本身就无法提供与击败一个能力已被准确测量的对手同等强度的证据。
Glicko 核心算法伪代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
对于每个 Rating Period:
根据距离上次比赛的时间增加 RD
对每个对手:
根据对手 RD 计算不确定性折扣 g
根据双方 Rating 与 g 计算期望得分 E
累积预测误差
累积比赛提供的信息量
根据:
先验精度 + 新数据精度
更新新的 RD
根据:
新 RD × 累积预测误差
更新新的 Rating
Glicko 的真正提升不是公式更加复杂,而是把“评分值”和“评分可信度”拆成两个不同的状态量。Rating 描述系统当前认为玩家位于能力轴的什么位置,$RD$ 描述系统对这个位置估计有多确定。
从 Glicko 到概率能力模型
点估计与分布估计的差异
Glicko 已经使用正态分布近似玩家能力,但其最终呈现仍然围绕 Rating 和 $RD$ 展开。更彻底的概率建模思路是把“玩家能力是一个概率分布”作为系统的第一性定义,而不是把分布仅作为修正 Rating 的辅助变量。
设玩家 $i$ 的能力为:
\[s_i \sim \mathcal N(\mu_i,\sigma_i^2)\]其中 $\mu_i$ 是系统对玩家长期实力的当前估计,而 $\sigma_i$ 表示能力估计的不确定性。这里存在一个关键区分:$\sigma_i$ 不是玩家在单局比赛中的发挥波动,而是系统对“真实实力在哪里”的认识误差。即使某名玩家实力完全稳定,只要系统只有两三场比赛数据,$\sigma_i$ 仍然会很大。
另一方面,竞技比赛本身具有随机发挥,因此还需要另一个随机变量表示本场表现。这个区分构成 TrueSkill 模型的基础。
TrueSkill:从能力分布到比赛表现分布
Skill 与 Performance 的层次模型
对玩家 $i$,首先假设其长期能力满足:
\[s_i \sim \mathcal N(\mu_i,\sigma_i^2)\]在某一场具体比赛中,玩家根据其长期能力随机产生本场表现 $p_i$:
\[p_i\mid s_i \sim \mathcal N(s_i,\beta^2)\]等价地可以写成:
\[p_i = s_i+\varepsilon_i\]其中:
\[\varepsilon_i \sim \mathcal N(0,\beta^2)\]$\sigma_i$ 与 $\beta$ 的统计含义完全不同。$\sigma_i$ 表示系统不知道玩家真实实力的程度,随着观测比赛增加通常会逐渐下降;$\beta$ 描述即使真实实力固定,单场竞技表现仍然会发生多少随机波动,它属于游戏环境本身的噪声尺度。
由于两个独立高斯变量之和仍然服从高斯分布,把未知能力 $s_i$ 积分掉后,玩家本场表现的边缘分布为:
\[p_i \sim \mathcal N \left( \mu_i, \sigma_i^2+\beta^2 \right)\]因此即使两个玩家具有完全相同的 $\mu$,他们的比赛结果仍然具有随机性;即使某个玩家的 $\sigma$ 已经趋近于零,即系统非常确定其真实实力,他的单局 Performance 仍然保留方差 $\beta^2$。
双人比赛的表现差分布
考虑玩家 $A$ 与玩家 $B$。定义两人的表现差:
\[d = p_A-p_B\]因为 $p_A$ 与 $p_B$ 均为高斯变量,所以差仍然是高斯变量。其均值为:
\[\mu_d = \mu_A-\mu_B\]方差为:
\[c^2 = \sigma_A^2 + \sigma_B^2 + 2\beta^2\]因此:
\[d \sim \mathcal N(\mu_d,c^2)\]如果暂时忽略平局,当 $d>0$ 时玩家 $A$ 获胜。因此:
\[P(A>B) = P(d>0)\]标准化变量:
\[z = \frac{d-\mu_d}{c}\]服从标准正态分布。于是:
\[P(d>0) = P \left( z> -\frac{\mu_d}{c} \right)\]利用标准正态分布的对称性:
\[1-\Phi(-x)=\Phi(x)\]得到:
\[P(A>B) = \Phi \left( \frac{\mu_A-\mu_B}{c} \right)\]这说明 TrueSkill 的胜率不是只由均值差决定,而是由标准化能力差决定。相同的 $\mu_A-\mu_B$,如果双方 $\sigma$ 很大,分母 $c$ 增大,胜率会更接近 $0.5$;如果两人的能力都已经估计得非常精确,则相同的均值差会产生更明确的胜负概率。
引入平局边界
如果游戏允许平局,可以引入一个平局边界 $\epsilon>0$。当:
\[d>\epsilon\]时玩家 $A$ 获胜;当:
\[|d|\le\epsilon\]时比赛判定为平局;当:
\[d<-\epsilon\]时玩家 $B$ 获胜。
因此 $A$ 获胜的概率为:
\[P(A>B) = \Phi \left( \frac{\mu_d-\epsilon}{c} \right)\]平局概率则是一个区间概率:
\[P(\text{draw}) = P(-\epsilon\le d\le\epsilon)\]标准化之后:
\[P(\text{draw}) = \Phi \left( \frac{\epsilon-\mu_d}{c} \right) - \Phi \left( \frac{-\epsilon-\mu_d}{c} \right)\]因此 $\epsilon$ 可以根据目标游戏的历史平局频率进行标定。平局不是需要额外打补丁的特殊结果,而只是对连续 Performance Difference 设置了一个有限宽度的观测区间。
TrueSkill 的后验更新:截断高斯推导
胜利观测等价于截断高斯
比赛之前,表现差满足:
\[d \sim \mathcal N(\mu_d,c^2)\]如果观察到玩家 $A$ 获胜,则得到新信息:
\[d>\epsilon\]因此比赛后的 $d$ 不再服从完整高斯分布,而服从在 $\epsilon$ 右侧截断的高斯分布。定义标准化距离:
\[z = \frac{\mu_d-\epsilon}{c}\]标准正态密度函数记为:
\[\phi(z) = \frac{1}{\sqrt{2\pi}} e^{-z^2/2}\]标准正态累积分布函数记为:
\[\Phi(z) = \int_{-\infty}^{z} \phi(x)\,dx\]定义截断校正函数:
\[v(z) = \frac{\phi(z)} {\Phi(z)}\]则右截断观测后的表现差均值为:
\[\mathbb E[d\mid d>\epsilon] = \mu_d + cv(z)\]直觉上,如果赛前模型已经认为 $A$ 明显更强,则 $z$ 很大,$\Phi(z)$ 接近 $1$,$\phi(z)$ 很小,因此 $v(z)$ 接近零,胜利不会带来很大更新;如果 $A$ 原本明显更弱却最终获胜,则 $z$ 为较大的负值,条件事件非常罕见,截断后的均值必须发生较大移动才能解释结果。
截断后的方差推导
进一步定义:
\[w(z) = v(z) \left[ v(z)+z \right]\]单侧截断高斯的条件方差为:
\[\operatorname{Var} (d\mid d>\epsilon) = c^2 \left[ 1-w(z) \right]\]由于 $w(z)>0$,得到:
\[\operatorname{Var} (d\mid d>\epsilon) < c^2\]因此只要观察到比赛结果,无论该结果是否符合预期,系统对于双方表现差的认知都会比比赛前更加确定。这就是概率评分系统中“不确定性通常随着有效比赛下降”的数学来源:观测结果相当于对原始概率分布施加一个约束,使允许的状态空间变窄。
从表现差反推单个玩家能力
真正需要更新的不是 $d$,而是玩家的长期能力 $s_A$ 和 $s_B$。由于 $s_A$ 与 $d$ 联合服从高斯分布,可以利用高斯条件分布公式。首先计算协方差:
\[\operatorname{Cov}(s_A,d) = \operatorname{Cov} (s_A,p_A-p_B)\]由于 $s_A$ 与 $p_B$ 独立,而 $p_A=s_A+\varepsilon_A$,所以:
\[\operatorname{Cov}(s_A,p_A) = \sigma_A^2\]因此:
\[\operatorname{Cov}(s_A,d) = \sigma_A^2\]类似地:
\[\operatorname{Cov}(s_B,d) = -\sigma_B^2\]对于给定 $d$ 的情况,高斯条件均值为:
\[\mathbb E[s_A\mid d] = \mu_A + \frac{\sigma_A^2}{c^2} (d-\mu_d)\]将 $d$ 对比赛结果后的截断分布再取期望:
\[\mu_A' = \mu_A + \frac{\sigma_A^2}{c^2} \left( \mathbb E[d\mid d>\epsilon] -\mu_d \right)\]代入:
\[\mathbb E[d\mid d>\epsilon] -\mu_d = cv(z)\]最终得到:
\[\mu_A' = \mu_A + \frac{\sigma_A^2}{c} v(z)\]对失败者 $B$:
\[\mu_B' = \mu_B - \frac{\sigma_B^2}{c} v(z)\]这两个式子揭示了 TrueSkill 的自动学习率机制。玩家自身的 $\sigma_i^2$ 越大,均值移动越明显;已经非常确定的玩家具有较小 $\sigma_i$,即使遭遇一场异常比赛,更新幅度也更加保守。因此 TrueSkill 不需要显式指定 Elo 式的固定 $K$,更新速度来自后验不确定性本身。
单个玩家后验方差的推导
同样利用联合高斯条件分布,给定确定 $d$ 时:
\[\operatorname{Var}(s_A\mid d) = \sigma_A^2 - \frac{\sigma_A^4}{c^2}\]但比赛结果并没有告诉我们精确的 $d$,只告诉我们 $d>\epsilon$,因此还需要使用全方差公式:
\[\operatorname{Var}(s_A\mid d>\epsilon) = \mathbb E \left[ \operatorname{Var}(s_A\mid d) \mid d>\epsilon \right] + \operatorname{Var} \left[ \mathbb E(s_A\mid d) \mid d>\epsilon \right]\]第一项为:
\[\sigma_A^2 - \frac{\sigma_A^4}{c^2}\]第二项为:
\[\frac{\sigma_A^4}{c^4} \operatorname{Var} (d\mid d>\epsilon)\]代入截断方差:
\[\frac{\sigma_A^4}{c^4} c^2 [1-w(z)] = \frac{\sigma_A^4}{c^2} [1-w(z)]\]两项相加:
\[\sigma_A'^2 = \sigma_A^2 - \frac{\sigma_A^4}{c^2} + \frac{\sigma_A^4}{c^2} [1-w(z)]\]整理得到:
\[\sigma_A'^2 = \sigma_A^2 \left[ 1- \frac{\sigma_A^2}{c^2} w(z) \right]\]同理:
\[\sigma_B'^2 = \sigma_B^2 \left[ 1- \frac{\sigma_B^2}{c^2} w(z) \right]\]因此一场比赛产生两个同时发生的效果:均值 $\mu$ 根据结果向上或向下移动,而标准差 $\sigma$ 由于新证据的加入通常下降。Rating 的“方向变化”与“不确定性收缩”因此成为两个独立维度,而不再被挤压到一个积分变化量中。
平局情况下的截断更新
若观测到平局,则已知:
\[-\epsilon \le d \le \epsilon\]定义标准化上下界:
\[a = \frac{-\epsilon-\mu_d}{c}, \qquad b = \frac{\epsilon-\mu_d}{c}\]区间概率归一化常数为:
\[Z = \Phi(b)-\Phi(a)\]双侧截断高斯的标准化均值校正项为:
\[v_{\text{draw}} = \frac{ \phi(a)-\phi(b) }{ Z }\]因此:
\[\mathbb E[d\mid |d|\le\epsilon] = \mu_d + cv_{\text{draw}}\]其方差为:
\[\operatorname{Var} (d\mid |d|\le\epsilon) = c^2 \left[ 1 + \frac{ a\phi(a)-b\phi(b) }{ Z } - v_{\text{draw}}^2 \right]\]可以定义:
\[w_{\text{draw}} = - \frac{ a\phi(a)-b\phi(b) }{ Z } + v_{\text{draw}}^2\]于是:
\[\operatorname{Var} (d\mid |d|\le\epsilon) = c^2 (1-w_{\text{draw}})\]后续对 $\mu_i$ 和 $\sigma_i$ 的传播形式与胜负情况完全一致,只需将 $v(z)$ 与 $w(z)$ 分别替换为 $v_{\text{draw}}$ 和 $w_{\text{draw}}$。这表明胜、负、平在统一概率框架中只是不同的截断区域,并不需要设计三套独立评分规则。
TrueSkill 的组队建模
从个人 Performance 到团队 Performance
考虑队伍 $A$ 包含玩家集合 $\mathcal A$。如果假设每个成员对团队结果的贡献是可加的,则团队本场表现定义为:
\[t_A = \sum_{i\in\mathcal A} w_i p_i\]其中 $w_i$ 是玩家贡献权重。最简单情况下所有玩家权重均为 $1$,则团队表现就是成员 Performance 之和。
由于每个 $p_i$ 都服从高斯分布,而且独立高斯变量的线性组合仍然服从高斯分布,因此:
\[t_A \sim \mathcal N (\mu_A,V_A)\]其中团队均值为:
\[\mu_A = \sum_{i\in\mathcal A} w_i\mu_i\]团队表现方差为:
\[V_A = \sum_{i\in\mathcal A} w_i^2 (\sigma_i^2+\beta^2)\]对另一支队伍 $B$:
\[\mu_B = \sum_{j\in\mathcal B} w_j\mu_j\]以及:
\[V_B = \sum_{j\in\mathcal B} w_j^2 (\sigma_j^2+\beta^2)\]于是两队表现差:
\[d = t_A-t_B\]仍为高斯分布:
\[d \sim \mathcal N (\mu_A-\mu_B,V_A+V_B)\]令:
\[c^2 = V_A+V_B\]则队伍 $A$ 获胜的概率直接得到:
\[P(A>B) = \Phi \left( \frac{ \mu_A-\mu_B-\epsilon }{ c } \right)\]因此团队游戏不需要人为先算“队伍平均 Rating”,再套一套单人算法。只要个人能力和 Performance 均使用高斯变量建模,团队聚合能够直接利用高斯分布在线性变换下封闭的性质得到。
团队结果如何分配回每个成员
最关键的问题是:系统观察到的是“队伍 $A$ 击败队伍 $B$”,但最终需要更新每个玩家自己的能力分布。考虑队伍 $A$ 中的玩家 $i$。表现差 $d$ 中包含 $w_i p_i$,因此:
\[\operatorname{Cov}(s_i,d) = w_i\sigma_i^2\]对于队伍 $B$ 中的玩家 $j$:
\[\operatorname{Cov}(s_j,d) = -w_j\sigma_j^2\]统一定义符号系数 $\delta_i$:若玩家属于胜者队伍则 $\delta_i=1$,若属于失败者队伍则 $\delta_i=-1$。于是:
\[C_i = \operatorname{Cov}(s_i,d) = \delta_i w_i\sigma_i^2\]由上一节的高斯条件期望推导,可得:
\[\mu_i' = \mu_i + \frac{C_i}{c} v(z)\]即:
\[\mu_i' = \mu_i + \delta_i \frac{ w_i\sigma_i^2 }{ c } v(z)\]后验方差则为:
\[\sigma_i'^2 = \sigma_i^2 - \frac{C_i^2}{c^2} w(z)\]由于 $C_i^2=w_i^2\sigma_i^4$,所以:
\[\sigma_i'^2 = \sigma_i^2 \left[ 1- \frac{ w_i^2\sigma_i^2 }{ c^2 } w(z) \right]\]这个结果给出了非常清晰的个人信用分配原则。比赛结果对一个玩家产生多大更新,不只是由队伍输赢决定,还取决于其自身不确定性 $\sigma_i^2$ 和贡献权重 $w_i$。新玩家的 $\sigma_i$ 较大,因此同一场团队胜利可以让他的能力均值移动更多;老玩家的能力已经非常稳定,相同结果产生的调整较小。
为什么简单平均队伍 Rating 不够充分
假设两个双人队伍的均值总和相同,但第一队两名成员的 $\sigma$ 都很小,第二队两名成员的 $\sigma$ 都非常大。若只比较:
\[\mu_A = \mu_B\]两队看起来完全等价。但从预测角度看,第二队的团队 Performance 方差明显更高,因为:
\[V = \sum_i (\sigma_i^2+\beta^2)\]这意味着系统对第二队的真实竞争力更加不确定,其比赛结果分布更宽。因此,一个只计算平均 Rating 的组队系统会丢弃大量统计信息,而概率建模能够让均值与不确定性同时参与比赛预测和 Matchmaking。
非等权成员与部分参赛
如果游戏中不同玩家的有效参与程度不同,可以用 $w_i$ 表示贡献权重。例如中途加入、提前退出或比赛时间不同的玩家,可以使用不同 $w_i$。团队均值与方差仍满足:
\[\mu_A = \sum_i w_i\mu_i\]以及:
\[V_A = \sum_i w_i^2 (\sigma_i^2+\beta^2)\]需要特别注意,方差中的权重是 $w_i^2$ 而不是 $w_i$。这是线性组合方差公式的直接结果:
\[\operatorname{Var} \left( \sum_i w_iX_i \right) = \sum_i w_i^2 \operatorname{Var}(X_i)\]前提是这些变量条件独立。若成员之间存在明显协同效应,这个独立加法模型就会被破坏,需要进一步引入协方差或 Team Synergy 潜变量。
多队伍比赛与因子图推断
从两队胜负扩展到完整排名
考虑一场比赛中存在 $K$ 支队伍,并按最终名次重新排列为:
\[t_1>t_2>\cdots>t_K\]对于没有平局的情况,可以定义相邻团队表现差:
\[d_k = t_k-t_{k+1}\]并要求:
\[d_k>\epsilon, \qquad k=1,\ldots,K-1\]于是完整比赛结果的似然可以写为:
\[P(\mathbf r\mid\mathbf t) = \prod_{k=1}^{K-1} \mathbf 1(d_k>\epsilon)\]其中 $\mathbf 1(\cdot)$ 为指示函数。如果第 $k$ 与第 $k+1$ 支队伍平局,则对应比较因子改为:
\[\mathbf 1(|d_k|\le\epsilon)\]这样一个多人排名问题被转换成若干相邻团队 Performance Difference 的约束,但这些 $d_k$ 并不独立,因为相邻比较共享同一个团队变量。例如 $d_1=t_1-t_2$ 和 $d_2=t_2-t_3$ 都包含 $t_2$。因此不能简单地把每一对比赛独立更新后相加,否则会重复计算信息。
TrueSkill 的联合概率分解
整个模型可以写成联合分布:
\[p( \mathbf s, \mathbf p, \mathbf t, \mathbf d \mid \mathbf r ) \propto p(\mathbf s) p(\mathbf p\mid\mathbf s) p(\mathbf t\mid\mathbf p) p(\mathbf d\mid\mathbf t) p(\mathbf r\mid\mathbf d)\]能力先验部分为:
\[p(\mathbf s) = \prod_i \mathcal N (s_i;\mu_i,\sigma_i^2)\]个人表现模型为:
\[p(\mathbf p\mid\mathbf s) = \prod_i \mathcal N (p_i;s_i,\beta^2)\]团队聚合可以使用确定性约束表示:
\[p(\mathbf t\mid\mathbf p) = \prod_k \delta \left( t_k- \sum_{i\in\mathcal A_k} w_ip_i \right)\]团队差同样通过确定性关系表示:
\[p(\mathbf d\mid\mathbf t) = \prod_{k=1}^{K-1} \delta (d_k-t_k+t_{k+1})\]比赛排名则通过截断因子编码。若相邻排名存在严格胜负:
\[p(\mathbf r\mid\mathbf d) = \prod_k \mathbf 1(d_k>\epsilon)\]如果存在平局,则把对应项替换为:
\[\mathbf 1(|d_k|\le\epsilon)\]这一分解直接产生了 TrueSkill 的因子图:Skill 节点产生 Performance,Performance 线性组合成 Team Performance,相邻 Team Performance 形成 Difference,Difference 再由比赛结果施加截断约束。系统最终需要计算的是每个能力变量的边缘后验:
\[p(s_i\mid\mathbf r)\]这要求把所有 Performance、Team Performance 和 Difference 潜变量积分掉。
近似消息传递
如果所有因子都是高斯分布和线性高斯约束,那么整个模型的后验仍然是高斯分布,可以精确计算。然而比赛结果因子:
\[\mathbf 1(d>\epsilon)\]以及:
\[\mathbf 1(|d|\le\epsilon)\]会把高斯分布截断,使精确后验不再属于高斯族。为了让模型能够持续在线更新,TrueSkill 使用近似消息传递,把这些非高斯信息重新近似为高斯消息。
高斯分布可以使用自然参数表示。对:
\[x \sim \mathcal N(\mu,\sigma^2)\]定义精度:
\[\tau = \frac{1}{\sigma^2}\]以及精度加权均值:
\[\eta = \frac{\mu}{\sigma^2}\]两个高斯密度相乘时,自然参数直接相加:
\[\tau' = \tau_1+\tau_2\]以及:
\[\eta' = \eta_1+\eta_2\]因此高斯消息在因子图中传播非常高效。真正困难的只有 Comparison Factor,它会产生截断高斯,需要通过矩匹配重新投影回高斯分布。
Expectation Propagation 的矩匹配
假设某个 Difference 节点在接收比赛结果之前的 cavity distribution 为:
\[q^{-}(d) = \mathcal N(d;\mu,c^2)\]胜利结果对应因子:
\[f(d) = \mathbf 1(d>\epsilon)\]将二者相乘并归一化得到 tilted distribution:
\[\hat p(d) = \frac{ q^{-}(d)f(d) }{ Z }\]其中:
\[Z = \int q^{-}(d)f(d)\,dd = \Phi \left( \frac{\mu-\epsilon}{c} \right)\]$\hat p(d)$ 是截断高斯,它的均值和方差已经在前文推导为:
\[\hat\mu = \mu + cv(z)\]以及:
\[\hat\sigma^2 = c^2[1-w(z)]\]Expectation Propagation 不要求完整保存这个截断分布,而是寻找一个高斯分布:
\[q_{\text{new}}(d) = \mathcal N (d;\hat\mu,\hat\sigma^2)\]使其前两阶矩与 tilted distribution 相同。新的自然参数为:
\[\tau_{\text{new}} = \frac{1}{\hat\sigma^2}\]以及:
\[\eta_{\text{new}} = \frac{\hat\mu}{\hat\sigma^2}\]如果 cavity distribution 的自然参数为 $\tau_{\text{cav}}$ 和 $\eta_{\text{cav}}$,则 Comparison Factor 应当向 Difference 节点发送的近似高斯消息具有自然参数增量:
\[\Delta\tau = \tau_{\text{new}} - \tau_{\text{cav}}\]以及:
\[\Delta\eta = \eta_{\text{new}} - \eta_{\text{cav}}\]这些消息再沿着 Difference、Team Performance、Performance 和 Skill 节点反向传播,最终修改每个玩家的 $\mu_i$ 和 $\sigma_i$。当比赛包含多个队伍时,相邻 Difference 节点之间共享 Team Performance,因此消息需要反复迭代,直到近似边缘分布基本收敛。
多队伍 TrueSkill 伪代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
为每个玩家维护高斯能力分布
比赛开始:
Skill → Performance
将个人 Performance 聚合为 Team Performance
按比赛排名建立相邻 Team Difference
对每个排名约束:
根据胜负或平局形成截断高斯
计算截断后的均值与方差
用矩匹配得到新的高斯近似消息
反复传播消息:
Difference ↔ Team Performance
Team Performance ↔ Player Performance
Player Performance ↔ Skill
直到消息变化足够小:
输出每个玩家新的能力均值与不确定性
真正的 TrueSkill 实现复杂度主要来自这个近似推断过程,而不是高斯分布本身。它用更复杂的推断计算换来了统一处理多人、团队和平局结果的能力。
不确定性、置信区间与排行榜分数
为什么不能只按照均值排序
假设玩家 $A$ 的能力分布为:
\[s_A \sim \mathcal N(32,2^2)\]玩家 $B$ 的能力分布为:
\[s_B \sim \mathcal N(36,9^2)\]如果仅按 $\mu$ 排序,玩家 $B$ 应当位于玩家 $A$ 之前。但玩家 $B$ 的不确定性非常高,系统实际上并没有足够证据确认其真实实力确实接近 $36$。因此概率评分系统经常使用保守评分:
\[R_{\text{conservative}} = \mu-k\sigma\]其中 $k>0$ 决定保守程度。这个分数可以从单侧高斯置信下界理解。若希望找到一个能力下界 $L$,使:
\[P(s\ge L) = 1-\alpha\]则:
\[L = \mu - z_{1-\alpha}\sigma\]因此 $k$ 实际上就是标准正态分布中的分位点。较大的 $k$ 会对高不确定性玩家施加更强惩罚,使排行榜顶部更偏向“能力高且系统高度确信”的玩家,而不是仅仅拥有较高点估计的玩家。
比赛为什么会提高保守评分
一次比赛后,玩家即使均值变化不大,只要 $\sigma$ 下降,保守评分:
\[R = \mu-k\sigma\]也可能上升。其变化量为:
\[\Delta R = \Delta\mu - k\Delta\sigma\]由于通常 $\Delta\sigma<0$,第二项 $-k\Delta\sigma$ 为正。因此玩家通过持续参与有效比赛,可以把原本宽泛的能力分布逐渐压窄,让系统更愿意相信当前能力水平。这种机制特别适合新玩家定级:系统不必人为规定“完成十场比赛才获得正式段位”,而可以直接根据后验不确定性判断 Rating 是否已经足够稳定。
Matchmaking 的概率解释
公平比赛不是 Rating 差最小这么简单
在 Elo 中,最直接的 Matchmaking 指标是:
\[|R_A-R_B|\]越小越好。但在带不确定性的模型中,仅比较均值差不够。例如两名玩家 $\mu$ 完全相同,但其中一名玩家 $\sigma$ 极高,那么真实能力可能相差很大,比赛未必真正平衡。
对于两名玩家,可以直接使用表现差分布:
\[d \sim \mathcal N (\mu_A-\mu_B,c^2)\]如果把“势均力敌”定义为两人的 Performance Difference 落在一个小区间 $[-\epsilon,\epsilon]$ 内,那么 Match Quality 可以定义为:
\[Q = P(|d|\le\epsilon)\]因此:
\[Q = \Phi \left( \frac{ \epsilon-(\mu_A-\mu_B) }{ c } \right) - \Phi \left( \frac{ -\epsilon-(\mu_A-\mu_B) }{ c } \right)\]这个指标同时考虑均值差和不确定性。当 $\mu_A$ 与 $\mu_B$ 接近时,比赛更加均衡;当能力估计的不确定性发生变化时,预测分布也会相应变化,而不是把两个暂时相同的 Rating 当成同样可信的匹配。
TrueSkill 的极限平局概率 Match Quality
当平局窗口 $\epsilon$ 很小时,可以用平局密度在零点附近的大小衡量比赛均衡程度。对于两名玩家,令:
\[c^2 = 2\beta^2+\sigma_A^2+\sigma_B^2\]TrueSkill 使用的一个标准化 Match Quality 可以写成:
\[Q = \sqrt{ \frac{ 2\beta^2 }{ 2\beta^2+\sigma_A^2+\sigma_B^2 } } \exp \left[ -\frac{ (\mu_A-\mu_B)^2 }{ 2( 2\beta^2+\sigma_A^2+\sigma_B^2 ) } \right]\]指数项惩罚能力均值差,而根号项反映能力估计不确定度相对于正常比赛表现噪声的大小。当两名玩家均值非常接近且能力估计足够可靠时,$Q$ 较高;均值差越来越大时,指数项快速衰减。
Matchmaking 因而可以被视为一种实验设计问题:系统选择下一场比赛时,不仅希望玩家体验公平,也希望结果具有较高的信息价值。过度悬殊的比赛几乎可以提前预测胜负,因此既缺少竞技悬念,也很难进一步精确区分双方能力。
Elo、Glicko 与 TrueSkill 的数学关系
从固定学习率到自适应后验精度
Elo 更新可以写成:
\[R' = R + K(S-E)\]其中学习速度完全由人工选择的 $K$ 决定。Glicko 将它推广为:
\[r' = r + qRD'^2 \sum_j g(RD_j)(S_j-E_j)\]这里的有效学习率由玩家自身后验方差 $RD’^2$ 和对手的不确定性共同决定,因此“应该移动多少”不再只是经验超参数,而部分来自概率模型。TrueSkill 更进一步直接维护:
\[s_i \sim \mathcal N(\mu_i,\sigma_i^2)\]并通过贝叶斯条件化和截断高斯矩匹配同时更新 $\mu_i$ 与 $\sigma_i$。因此三者的主要区别不是简单、复杂的代码差异,而是系统状态所包含的信息量逐渐增加。
从单值 Rating 到后验分布
Elo 的状态可以表示为:
\[\text{state}_i=R_i\]Glicko 的状态扩展为:
\[\text{state}_i = (r_i,RD_i)\]而 TrueSkill 的状态本质上是一个分布:
\[\text{state}_i = p(s_i) \approx \mathcal N(\mu_i,\sigma_i^2)\]当模型只保存 $R_i$ 时,它能够描述位置,却无法描述当前估计有多可靠;加入 $RD_i$ 或 $\sigma_i$ 后,系统开始同时保存位置和置信度;再进一步加入 Performance、Team Performance 与 Factor Graph 后,模型能够把多人比赛结果作为联合证据反向传播到每一个个体。
从一对一比较到图模型
Elo 天然针对单场两方比较,其基本输入结构是:
\[A\quad\text{vs.}\quad B\]Glicko 仍然主要建立在 paired comparison 上,只是允许一次 Rating Period 中批量整合多个对手的不确定性。TrueSkill 将结构改写为:
\[\text{Skill} \rightarrow \text{Performance} \rightarrow \text{Team Performance} \rightarrow \text{Performance Difference} \rightarrow \text{Observed Rank}\]一旦使用这种概率图结构,团队数量和玩家数量不再从根本上改变模型定义,它们主要只会改变图的规模与消息传播结构。这正是 TrueSkill 对复杂多人竞技场景更自然的原因。
模型假设与工程局限
能力是一维标量的假设
三类系统通常最终都把玩家能力压缩到一条一维轴上。但真实游戏能力往往是多维的,例如瞄准能力、地图理解、团队协作、资源管理和英雄池深度可能互相独立。如果不同比赛模式依赖不同技能组合,一个全局单维 Rating 必然损失信息。
更一般的扩展可以令能力成为向量:
\[\mathbf s_i = (s_{i1},s_{i2},\ldots,s_{id})\]比赛模式 $m$ 使用权重向量 $\mathbf w_m$,有效能力为:
\[s_i^{(m)} = \mathbf w_m^\top \mathbf s_i\]这样不同模式可以共享部分潜在技能,同时保留模式特异性。但代价是参数数量、数据需求和推断复杂度显著增加。
团队表现可加性的假设
TrueSkill 的基础团队模型假设:
\[t_A = \sum_{i\in A}p_i\]这意味着团队整体表现可以由个人表现简单线性相加。然而真实团队游戏中往往存在明显协同作用。例如长期固定队伍可能因为沟通效率产生额外优势,而某些角色组合可能存在非线性互补。
可以进一步加入团队协同潜变量 $h_A$:
\[t_A = \sum_{i\in A}p_i + h_A\]并令:
\[h_A \sim \mathcal N(\mu_h,\sigma_h^2)\]此时系统需要有足够多的固定组合比赛才能区分“个人实力强”和“组合协同强”,否则模型会产生不可辨识问题。因此实际系统是否值得引入 Synergy,需要取决于比赛数据规模和固定组队行为的频率。
玩家能力随时间变化
如果能力完全静态,则随着比赛数量不断增加,$\sigma$ 或 $RD$ 会持续下降,最终系统几乎不再允许 Rating 明显变化。然而真实玩家会学习、退步或受到版本变化影响,因此动态模型通常需要在人为时间尺度上重新增加方差。
TrueSkill 可以写成:
\[s_{i,t+1} = s_{i,t} + \omega_{i,t}\]其中:
\[\omega_{i,t} \sim \mathcal N(0,\gamma^2)\]如果当前后验为:
\[s_{i,t} \sim \mathcal N (\mu_{i,t},\sigma_{i,t}^2)\]那么下一时刻比赛之前的预测分布为:
\[s_{i,t+1} \sim \mathcal N \left( \mu_{i,t}, \sigma_{i,t}^2+\gamma^2 \right)\]因此:
\[\sigma_{i,t+1} = \sqrt{ \sigma_{i,t}^2+\gamma^2 }\]这与 Glicko 中 inactivity 导致 $RD$ 增长的思想高度一致:时间本身不会告诉系统玩家变强还是变弱,但时间会使系统对旧能力估计逐渐失去信心。
算法复杂度与系统选择
Elo 的适用边界
如果比赛结构主要是一对一,系统目标只是维护一个易解释的相对排名,而且玩家规模很大、服务端需要极低计算开销,那么 Elo 仍然具有很高工程价值。单场更新只需要常数次指数计算和加减运算,空间复杂度只需要为每个玩家保存一个 Rating。
它的问题不是“不准确”,而是状态表达能力有限。只要业务并不需要显式处理评分可信度、多人团队推断或长期不活跃状态,那么增加复杂概率模型未必能够产生与工程成本相匹配的收益。
Glicko 的适用边界
当玩家比赛频率差异较大、新老玩家同时存在,而且系统明显需要区分“能力估计”和“能力估计可信度”时,Glicko 提供了非常自然的升级路径。其计算依然可以使用封闭形式公式完成,工程复杂度远低于通用概率图推断,但已经能够利用 $RD$ 自动控制学习速度,并对 inactive player 的评分可信度进行合理衰减。
Glicko-2 进一步加入 Volatility,用于描述玩家潜在能力本身随时间变化的稳定程度。因此,如果一对一或简单对抗仍然是核心比赛结构,而不确定性和动态能力已经成为关键需求,Glicko 系列通常具有较好的复杂度与统计表达能力平衡。
TrueSkill 的适用边界
当系统需要原生处理多人排名、多队伍比赛、不同人数队伍和个体能力反演时,TrueSkill 的概率图模型优势才真正体现出来。其高斯线性部分可以高效传播,但排名约束产生截断分布,因此需要 Expectation Propagation 等近似推断技术,工程实现和数值稳定性要求显著高于 Elo 与 Glicko。
因此算法选择不应简单理解为“越新越好”或“越复杂越准确”。真正的问题应当是:现有业务中的哪些统计信息必须被模型保存。如果系统只需要能力中心位置,一个标量 Rating 可能已经足够;如果还需要表示可信度,就应引入方差;如果比赛结果由团队和多人结构产生,则必须进一步建模这些依赖关系。
LLM Arena:从匿名人类偏好到 Bradley–Terry 排名
为什么 LLM 评估适合 Pairwise Comparison
传统 Benchmark 通常预先构造一个固定测试集,并为每个问题定义标准答案或评分函数。例如数学问题可以根据最终答案是否正确计算 Accuracy,代码问题可以通过 Unit Test 判断程序是否通过测试。
但对于通用 Large Language Model,大量真实任务并不存在唯一标准答案。例如用户可能要求模型解释一个概念、撰写一封邮件、设计软件架构、分析商业问题或进行开放式写作。对于这类任务,很难定义一个能够稳定刻画回答质量的绝对分数。
一种更自然的办法不是问:
\[\text{这个回答值多少分?}\]而是同时给出两个回答,然后询问:
\[\text{回答 A 和回答 B,哪一个更好?}\]这将绝对评分问题转换为 Pairwise Comparison。
Arena 的核心思想正是如此。在典型的 Battle Mode 中,用户提交同一个 Prompt,系统将其发送给两个模型,并在不显示模型身份的情况下展示两个回答。用户根据自己的偏好选择更好的回答,投票完成后模型身份才被揭示。只有匿名阶段产生的有效投票才用于排行榜。([Arena AI][1])
因此更准确地说,这是一种 Anonymous Pairwise Human Evaluation,而不是严格实验设计意义上的“双盲实验”。
设系统共有 (M) 个模型,第 (t) 次比较选择模型 (a_t) 和 (b_t),并观察用户偏好:
\[y_t \in \{0,\tfrac12,1\}\]其中:
\[y_t=1\]表示用户偏好模型 (a_t);
\[y_t=0\]表示用户偏好模型 (b_t);
而:
\[y_t=\frac12\]可以表示双方平局。
于是 Arena 收集到的数据可以抽象为:
\[\mathcal D = \{ (a_t,b_t,y_t) \}_{t=1}^{N}\]问题变成:如何从大量这种局部的两两比较中,推断所有模型在同一条能力轴上的相对位置。
Bradley–Terry 模型
为每个模型 (i) 定义一个潜在强度参数:
\[\theta_i \in \mathbb R\]Bradley–Terry 模型假设模型 (A) 击败模型 (B) 的概率只由两者强度差决定:
\[P(A>B) = \frac{ e^{\theta_A} }{ e^{\theta_A}+e^{\theta_B} }\]等价地:
\[P(A>B) = \frac{1} { 1+e^{-(\theta_A-\theta_B)} }\]也就是:
\[P(A>B) = \sigma(\theta_A-\theta_B)\]其中:
\[\sigma(x) = \frac{1}{1+e^{-x}}\]是 Logistic 函数。
因此 Bradley–Terry 与 Elo 使用了几乎相同的 Pairwise Logistic 假设。Arena 在早期曾直接使用在线 Elo,随后切换到 Bradley–Terry,因为对 LLM 排名而言模型通常可以近似视为静态对象,而且平台拥有完整的历史比赛记录,因此没有必要像现实棋手评分那样按照比赛发生顺序逐场更新。([Arena AI][2])
从比赛结果到最大似然估计
考虑模型 (A) 与模型 (B) 的一场比较。令:
\[p = \sigma(\theta_A-\theta_B)\]如果观察结果为 (y\in{0,1}),则 Bernoulli 对数似然为:
\[\ell = y\log p + (1-y)\log(1-p)\]Arena 拥有大量比较结果,因此所有比赛的总对数似然可以写为:
\[\ell(\boldsymbol\theta) = \sum_{t=1}^{N} \left[ y_t\log p_t + (1-y_t)\log(1-p_t) \right]\]其中:
\[p_t = \sigma ( \theta_{a_t} - \theta_{b_t} )\]于是所有模型的能力参数可以通过 Maximum Likelihood Estimation 得到:
\[\hat{\boldsymbol\theta} = \arg\max_{\boldsymbol\theta} \ell(\boldsymbol\theta)\]或者等价地最小化 Binary Cross Entropy:
\[\hat{\boldsymbol\theta} = \arg\min_{\boldsymbol\theta} - \ell(\boldsymbol\theta)\]这实际上就是一个特殊结构的 Logistic Regression。当前 Arena 官方对 Bradley–Terry leaderboard 的描述也是把模型身份编码为比较特征,再通过 Logistic Regression 求解模型强度参数。([Arena AI][3])
对于平局,基础 Arena Bradley–Terry 方法可以将其看作:
\[y=\frac12\]即双方各获得半个胜场和半个负场。([Arena AI][2])
Bradley–Terry 与 Elo 为什么如此接近
这一关系可以直接从梯度看出来。
对于单场比赛:
\[\ell = y\log p + (1-y)\log(1-p)\]且:
\[p = \sigma(\theta_A-\theta_B)\]对模型 (A) 的能力参数求导:
\[\frac{\partial\ell} {\partial\theta_A} = y-p\]而:
\[\frac{\partial\ell} {\partial\theta_B} = -(y-p)\]因此,如果用 Stochastic Gradient Ascent 逐场更新:
\[\theta_A' = \theta_A + \eta(y-p)\]以及:
\[\theta_B' = \theta_B - \eta(y-p)\]就得到了与 Elo:
\[R_A' = R_A + K(S_A-E_A)\]完全相同的结构。
因此 Elo 和 Bradley–Terry 并不是两个毫无关系的算法。
可以把 Elo 理解为:
\[\boxed{ \text{Pairwise Logistic Model} + \text{Online SGD} }\]而 Arena 使用的 Bradley–Terry 排名更接近:
\[\boxed{ \text{Pairwise Logistic Model} + \text{Global Maximum Likelihood} }\]Elo 每得到一个比赛结果就更新一次 Rating;Bradley–Terry 则可以把整个比赛历史放在一起,寻找最能够解释全部 Pairwise Preferences 的全局参数。
这也解释了为什么 Arena 从 online Elo 转向 Bradley–Terry 后,能够获得更加稳定的模型评分和统计区间。([Arena AI][2])
为什么 LLM 比棋手更适合 Bradley–Terry
经典竞技系统中的一个重要问题是玩家能力会随时间变化。
例如:
\[s_{i,t+1} \neq s_{i,t}\]玩家可能训练、退步或长时间停止比赛,因此新比赛通常应该比多年前的比赛具有更大的权重。Elo 的 Online Update 和 Glicko 的时间不确定性扩散都与这一需求有关。
但一个固定版本的 LLM,例如某个明确标记的模型 checkpoint,可以近似认为:
\[\theta_{i,t} = \theta_i\]只要模型权重、System Prompt、推理配置和服务实现没有发生变化,同一个模型并不会因为昨天参加了 Arena battle 而在今天“学习变强”。
于是比赛顺序不再是主要信息:
\[P(\mathcal D\mid\boldsymbol\theta) = \prod_t P(y_t\mid a_t,b_t,\boldsymbol\theta)\]整个数据集可以统一参与参数估计。
这正是 Arena 官方给出的 Bradley–Terry 取代在线 Elo 的主要理由之一:平台拥有完整比赛历史,同时大多数被测模型更接近固定能力对象。([Arena AI][2])
当然,这一假设并非永远成立。云端 proprietary model 可能在不改变产品名称的情况下发生 Serving、System Prompt 或模型版本更新。因此实际系统通常需要尽量固定具体版本,否则同一个模型名称背后可能对应随时间变化的真实能力。
Arena Score 为什么看起来像 Elo
Bradley–Terry 得到的是无量纲参数:
\[\theta_i\]直接展示这些参数并不直观,因此 Arena 会进行线性变换,把它转换到一个类似传统 Elo 的数值尺度。
可以抽象写成:
\[S_i = 400\theta_i+C\]其中 (C) 只是人为选择的平移常数。
此时:
\[\theta_A-\theta_B = \frac{S_A-S_B}{400}\]于是:
\[P(A>B) = \frac{1} { 1+ \exp \left( -\frac{S_A-S_B}{400} \right) }\]Arena 官方也明确指出,其过去所称的 “Elo Rating” 后来改名为 Arena Score,原因就是实际计算的是 Bradley–Terry coefficient,再映射到便于阅读的 Rating scale,而不是经典逐场 Elo。([Arena AI][4])
因此诸如:
\[1507\]这样的数字本身没有绝对能力含义。
Bradley–Terry 满足:
\[\sigma [ (\theta_A+c)-(\theta_B+c) ] = \sigma(\theta_A-\theta_B)\]也就是说所有模型同时增加同一个常数并不会改变任何比赛预测。
真正具有统计意义的是:
\[S_A-S_B\]即模型之间的相对距离,而不是某个模型“拥有 1507 单位的智能”。
Arena Score 后面的置信区间
排行榜中经常会看到:
\[1507\pm5\]这里的 (\pm5) 不应理解成 Glicko 的 Rating Deviation,也不是 TrueSkill 中模型能力分布的 (\sigma)。
Glicko 与 TrueSkill 中的不确定性属于模型状态的一部分:
\[s_i \sim \mathcal N(\mu_i,\sigma_i^2)\]它表达的是:
系统对于玩家真实能力本身有多确定。
而 Arena Score 的置信区间表达的是:
如果从有限的人类 Pairwise Votes 中重新估计 Bradley–Terry 参数,这个统计估计值有多大的采样误差。
概念上,如果估计量近似服从:
\[\hat\theta_i \approx \mathcal N ( \theta_i, \operatorname{SE}(\hat\theta_i)^2 )\]那么 Rating 的置信区间可以表示为:
\[\hat S_i \pm z_{1-\alpha/2} \operatorname{SE}(\hat S_i)\]当前开源的 Arena-Rank 实现直接输出模型 Rating 与置信区间,其官方示例使用 (95\%) confidence interval。([Arena AI][5])
因此新模型如果只积累了少量 Battle,其置信区间通常较宽;随着有效比较增加,参数估计更加稳定,区间通常会逐渐收窄。
这和 Glicko / TrueSkill 在直觉上非常相似:
\[\text{数据越多} \Rightarrow \text{不确定性越低}\]但二者的概率对象不同,因此不能把 Arena 的 ±5 直接称为 RD 或 (\sigma)。
从 Score 到 Rank Spread
如果模型 (A) 的 Arena Score 是:
\[1507\pm5\]模型 (B) 是:
\[1505\pm4\]虽然:
\[1507>1505\]但这并不足以说明模型 (A) 在统计意义上已经明确强于模型 (B)。
因为二者的置信区间存在较大重叠。
Arena 因此除了显示按点估计排序得到的 Raw Rank,还会显示 Rank Spread。它描述在考虑 Score uncertainty 后,一个模型合理可能处于的排名范围。当前 Arena 的 ranking methodology 明确将 Raw Rank 与基于 Confidence Interval 得出的 Rank Spread 分开报告。([Arena AI][6])
因此排行榜第一名并不必然意味着:
\[P( \theta_1>\theta_2 ) \approx1\]当头部模型的置信区间高度重叠时,更合理的结论是:
\[\text{目前数据不足以稳定区分这些模型}\]而不是过度解释一两分的 Score Difference。
Style Control:人类偏好中的混杂变量
Arena 测量的是 Human Preference,但人类选择一个回答时,并不只受到其事实正确性或推理能力影响。
例如两个内容质量相近的答案中,更长、更有层次、更大量使用 Markdown 标题或列表的回答,可能更容易获得用户偏好。
于是观察到的结果可能更接近:
\[\text{Preference} = \text{Model Ability} + \text{Presentation Style} + \text{Noise}\]如果不同模型具有系统性的输出风格差异,那么直接进行 Bradley–Terry Regression 可能把一部分 Style Preference 错误归因给模型能力。
因此可以将标准 Bradley–Terry 扩展为带协变量的 Logistic Model:
\[P(A>B) = \sigma \left[ (\theta_A-\theta_B) + \boldsymbol\gamma^\top ( \mathbf z_A-\mathbf z_B ) \right]\]其中:
\[\mathbf z\]描述回答的风格特征,而:
\[\boldsymbol\gamma\]描述这些特征对人类投票的系统性影响。
Arena 的 Style Control 实际使用过响应长度差、Markdown Header 数量以及 List 数量等特征,并把这些变量加入 Bradley–Terry / Logistic Regression 中,从而试图让模型系数更多反映模型本身,而不是简单的格式偏好。([Arena AI][3])
从统计角度看,这和普通回归分析中控制 Confounder 的思想完全一致。
Arena 真正测量的是什么
Arena Score 最容易被误解成:
\[\text{模型的绝对智能}\]但 Bradley–Terry 模型真正估计的是,在 Arena 当前的 Prompt、用户和评价机制分布下:
\[P( \text{用户偏好模型 A 的回答} > \text{模型 B 的回答} )\]因此更加准确的统计对象是:
\[\theta_i = \text{Human Preference Strength under Arena Distribution}\]它并不天然等价于:
\[\text{Accuracy}\]也不天然等价于:
\[\text{Factuality}\]更不等价于某种普遍意义上的:
\[\text{General Intelligence}\]例如一个回答可能写得流畅、完整、有说服力,因此用户更愿意选择它,但其中仍可能存在难以被普通评价者发现的事实错误。
Arena 自身也明确承认 Human Preference 无法完整覆盖 Factuality,并在 Text 和 Search 等 leaderboard 中进一步引入事实性信号作为独立调整维度。([Arena AI][7])
因此 Arena 的优势并不是构造了一个“客观真理分数”,而是把一个很难绝对量化的问题转换成大量真实用户更容易回答的局部问题:
\[A\text{ 好还是 }B\text{ 好?}\]然后利用统计模型把大量局部比较聚合成全局排序。
Arena 排名的图结构解释
还可以把整个系统看成一张 Pairwise Comparison Graph。
每个模型对应一个节点:
\[V = \{M_1,M_2,\ldots,M_K\}\]模型之间发生 Battle 时形成一条边:
\[(M_i,M_j) \in E\]边上记录双方的胜、负和平局次数。
因此数据实际上形成:
\[G=(V,E)\]Bradley–Terry 的任务就是利用整张 Comparison Graph 推断每个节点的潜在强度:
\[\theta_1,\ldots,\theta_K\]这解释了一个看似反直觉的现象:两个模型即使从未直接进行过大量比较,只要它们都与许多共同模型产生过 Battle,整个图中的间接信息依然可以帮助确定二者的相对位置。
例如:
\[A>B\]并且:
\[B>C\]会为:
\[A>C\]提供间接统计证据。
但 Bradley–Terry 并不强制真实世界严格满足传递性。如果不同模型在不同任务上具有不同优势,就可能出现:
\[A>B,\qquad B>C,\qquad C>A\]这种类似 Rock-Paper-Scissors 的非传递结构。
这也是单一全局 Arena Score 的重要限制:它最终仍然把高维模型能力压缩到了一条标量轴上。
从全局排行榜到条件化排行榜
真实 LLM 能力显然不是一维的。
某个模型可能更擅长:
\[\text{Coding}\]另一个模型可能更擅长:
\[\text{Creative Writing}\]还有模型可能在:
\[\text{Math}\]或:
\[\text{Long-context Reasoning}\]上占优。
因此更一般地,模型实力应该写成 Prompt (x) 的函数:
\[\theta_i(x)\]从而:
\[P(A>B\mid x) = \sigma [ \theta_A(x)-\theta_B(x) ]\]普通 Arena Score 实际上是在整个 Prompt Distribution 上把这些差异压缩成一个全局参数。
因此:
\[\theta_i\]更接近:
\[\theta_i \approx \mathbb E_{x\sim P_{\text{Arena}}} [ \theta_i(x) ]\]的某种统计聚合,而不是所有任务上的普适能力值。
这也解释了为什么 Arena 可以进一步构造 Coding、Math、Creative Writing、Expert、Occupational 等不同类别的 Leaderboard:一旦条件 Prompt Distribution 改变,模型的相对排名也可能发生变化。当前 Arena 本身就提供多种任务和人群条件下的 leaderboard。([Arena Help Center][8])
从这个角度看,LLM Ranking 最终可能从:
\[\text{Model} \rightarrow \text{Single Rating}\]进一步发展成:
\[(\text{Model},\text{Prompt}) \rightarrow \text{Conditional Preference}\]也就是不再问:
哪一个模型全局最好?
而是问:
对于当前这个具体任务,哪一个模型获胜的概率最高?
Arena 评估算法伪代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
收集匿名模型对战:
对于每个用户 Prompt:
随机选择模型 A 与模型 B
隐藏两个模型身份
分别生成回答
用户选择:
A 胜
B 胜
平局
记录:
model_A
model_B
outcome
可选的上下文与 Style Features
构造 Bradley-Terry 模型:
P(A > B)
= sigmoid(theta_A - theta_B)
使用所有 Battle:
最大化 Pairwise Log-Likelihood
得到每个模型的 theta
将 theta 映射到:
Arena Score
计算:
Score Confidence Interval
Raw Rank
Rank Spread
可选:
加入 Style Features
控制回答长度、格式等混杂变量
输出:
Arena Leaderboard
与 Elo、Glicko 和 TrueSkill 的关系
从本文前面的统一视角看,Arena 并没有创造一种与竞技评分完全不同的数学结构。
它仍然从一个不可直接观测的潜变量开始:
\[\theta_i = \text{模型潜在偏好强度}\]系统真正观察到的只是:
\[y_{ij} = \text{模型 }i\text{ 与 }j\text{ 的人类偏好结果}\]然后定义:
\[P(y_{ij}\mid\theta_i,\theta_j)\]再利用观测数据反推潜变量。
这与竞技 Rating System 的统计结构完全一致。
Elo 使用:
\[R' = R+K(S-E)\]进行 Online Learning;
Bradley–Terry 使用:
\[\hat{\boldsymbol\theta} = \arg\max_{\boldsymbol\theta} P( \mathcal D \mid \boldsymbol\theta )\]进行 Batch Maximum Likelihood Estimation;
Glicko 进一步显式建模能力估计的不确定性;
TrueSkill 则建立完整的能力与 Performance 概率模型。
因此 Arena 最值得注意的地方并不是它使用了一个完全不同的新 Rating System,而是它针对 LLM 这一特殊对象改变了统计假设:
\[\boxed{ \text{棋手:能力随时间变化} }\]因此 Online Rating 很重要;
而:
\[\boxed{ \text{固定版本 LLM:能力近似静态} }\]因此可以利用完整历史数据进行全局 Pairwise Maximum Likelihood Estimation。
从这个意义上说,Arena 的 Bradley–Terry Ranking 可以看成 Elo 背后 Logistic Preference Model 在静态 LLM 评价问题上的一种更加自然的统计实现。
Arena 方法的边界
Arena 的核心价值在于,它把难以设计绝对答案的开放式 LLM 评价转化为了大规模真实用户 Pairwise Preference。但是它并没有消除评价本身的主观性。
最终 Rating 会受到 Prompt Distribution、Voter Population、输出风格、模型采样策略、模型版本变化以及不同能力维度被压缩成单一标量等因素影响。因此一个 Arena Score 更应该被理解成某个评价环境中的统计估计:
\[\text{Arena Score} = \text{Estimated Relative Human Preference}\]而不是:
\[\text{Arena Score} = \text{Universal Model Intelligence}\]同时需要注意,Arena 当前并不是所有 leaderboard 都使用 Bradley–Terry。例如 Agent Arena 针对长程 Agent 工作流采用随机模型分配和 causal treatment effect 的方法,而不是匿名双模型 Battle + BT Regression。([Arena Help Center][9])
因此在讨论 “Arena Rating” 时,需要明确所指的是传统 Text、Vision、WebDev 等基于 Pairwise Battle 的排行榜,还是 Agent 等采用不同实验设计的评价系统。
小结
LLM Arena 展示了经典 Rating System 如何从竞技游戏扩展到 Generative Model Evaluation。
它首先通过匿名 Pairwise Comparison 将复杂的开放式质量判断转换成:
\[A>B,\quad A<B,\quad A=B\]这样的简单观测,然后通过 Bradley–Terry 模型:
\[P(A>B) = \sigma(\theta_A-\theta_B)\]将数百万个局部人类偏好聚合成全局模型能力参数。
从优化角度看,Bradley–Terry 与 Elo 共享同一个 Logistic Pairwise Model。Elo 的:
\[S-E\]正是单场 Pairwise Log-Likelihood 的梯度,而 Arena 则不再使用固定 (K) 逐场更新,而是利用完整比赛历史通过 Maximum Likelihood 一次性估计模型参数。
Arena Score 后面的置信区间进一步区分了“评分点估计”和“评分估计的不确定性”,但这种 uncertainty 属于统计估计误差,并不等同于 Glicko 的 RD 或 TrueSkill 中的 Skill Posterior Variance。
因此,从 Elo、Glicko、TrueSkill 再到 LLM Arena,可以看到一个共同的统计思想:
\[\boxed{ \text{通过带噪声的相对比较, 推断无法直接观测的潜在能力} }\]区别只在于不同应用场景对于能力是否动态、不确定性如何表达、比赛结构如何建模以及最终希望估计什么统计对象作出了不同假设。
总结
游戏排名系统的本质不是给玩家“加分”和“扣分”,而是通过带噪声的比赛观测持续估计不可直接观测的潜在竞技能力。Elo 建立了最简洁的在线预测—修正框架,其更新项 $S-E$ 可以直接从 Bernoulli 对数似然的梯度推导得到,而 $K$ 则承担学习率的角色。这个模型高效、透明,但只维护能力点估计,因此不能区分 Rating 本身的可靠程度。
Glicko 把能力表示扩展为中心位置与 Rating Deviation,并通过近似贝叶斯更新把历史先验精度与比赛带来的新信息结合起来。其核心关系:
\[\frac{1}{RD'^2} = \frac{1}{RD^2} + \frac{1}{d^2}\]揭示了不确定性更新的统计本质:比赛带来新的观测信息,因此精度累积、方差下降;长时间没有观测时,通过动态扩散增加方差,使旧评分逐渐失去确定性。Rating 更新的有效学习率因此不再完全依赖人为设定,而会根据后验不确定度自然变化。
TrueSkill 进一步将能力直接建模为:
\[s_i \sim \mathcal N(\mu_i,\sigma_i^2)\]并区分长期 Skill 与单局 Performance:
\[p_i \mid s_i \sim \mathcal N(s_i,\beta^2)\]比赛结果由 Performance Difference 的截断区域产生,观测结果通过截断高斯的矩更新反向修正 $\mu$ 与 $\sigma$。由于高斯随机变量在线性组合下仍然封闭,个人 Performance 可以自然聚合为 Team Performance,而多人排名则可以拆解为相邻 Team Difference,并通过 Factor Graph 与 Expectation Propagation 完成近似后验推断。
因此,从 Elo 到 Glicko 再到 TrueSkill 的演进,可以理解为模型不断显式保存此前被忽略的统计信息:首先保存能力位置,然后加入能力估计的不确定性,最后加入比赛表现噪声、团队结构以及多人排名之间的依赖关系。对于实际系统而言,算法选择的核心并不是复杂度本身,而是决定哪些不确定性和结构性信息对 Ranking 与 Matchmaking 的决策具有足够价值,值得被模型显式表示和持续更新。
参考文献
[1] Elo, A. E. The Rating of Chessplayers, Past and Present. Arco Publishing, 1978.
[2] Glickman, M. E. “Parameter Estimation in Large Dynamic Paired Comparison Experiments.” Journal of the Royal Statistical Society: Series C (Applied Statistics), 1999.
[3] Glickman, M. E. The Glicko System. Technical description of the Glicko rating system.
[4] Glickman, M. E. “Dynamic Paired Comparison Models with Stochastic Variances.” Journal of Applied Statistics, 2001.
[5] Herbrich, R., Minka, T., and Graepel, T. “TrueSkill: A Bayesian Skill Rating System.” Advances in Neural Information Processing Systems, 2006.
[6] Kschischang, F. R., Frey, B. J., and Loeliger, H.-A. “Factor Graphs and the Sum-Product Algorithm.” IEEE Transactions on Information Theory, 2001.
[7] Minka, T. P. A Family of Algorithms for Approximate Bayesian Inference. PhD Thesis, MIT, 2001.
[8] Chiang, W.-L., Zheng, L., Sheng, Y., et al. Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. ICML, 2024. 这是 Arena 的核心论文,明确采用 crowdsourced pairwise human preference。([arXiv][10])
[9] Arena Team. Chatbot Arena - New Models & Elo System Update. 2023. 这一篇最适合引用在 Online Elo → Bradley–Terry 的转换部分。([Arena AI][2])
[10] Arena Team. Does Style Matter? 2024. 用于 Style-Controlled Bradley–Terry 部分。([Arena AI][3])
[11] Arena Team. Arena-Rank: Open Sourcing the Leaderboard Methodology. 2025. 用于当前 BT 实现、reweighting 和 confidence interval 部分。([Arena AI][5])
