Bradley-Terry 模型(Bradley-Terry model,常简写 BT)是一种把「两两对战的胜负记录」反推成「每个选手一个实力分」的统计模型。它不问“你赢了几场”,只问“你赢了谁、输给了谁”。
它是怎么算的
给每个参赛者一个正数 θ 代表实力。A 对 B 时,A 获胜的概率是
P(A 赢) = θ_A / (θ_A + θ_B)
把 θ 取对数记成分数 s = lnθ,这个式子就变成 P(A 赢) = sigmoid(s_A − s_B)。也就是说,分数差直接决定胜率:两人同分时胜率正好 50%;分差为 1 个自然对数单位时,强者胜率约 73%。分数差再大,胜率也只是沿着这条 S 形曲线逼近 100%,永远不会到——这很符合直觉,弱队偶尔爆冷是常态。
反过来,已知几百场对局结果,就能问:哪一组实力分,最能让“实际发生过的这些胜负”出现得最合理?这是个极大似然估计问题,用迭代算法求解。妙处在于所有分数互相牵制:我的分高不高,取决于我赢过的人分高不高,而他们的分数又取决于他们赢过谁。整张网一起解,才能把“打赢十个高手”和“打赢十个新手”区分开。
打个比方:一个小区乒乓球队,平时谁强谁弱众说纷纭。好在过去一年记下了几百场两两对战。现在反过来问——给每人一个实力值,怎样才能最好地解释这些战绩?解出来的那组数字,就是 BT 分数。
和 Elo 的区别
| Bradley-Terry | Elo | |
|---|---|---|
| 更新方式 | 一次性用全部对局拟合 | 每场赛后增量调整 |
| 顺序敏感 | 不敏感 | 敏感,早期比赛权重大 |
| 超参数 | 较少,可加正则或先验 | K 因子等需要人为设定 |
| 关系 | —— | 可看作 BT 的在线近似 |
为什么 AI 从业者要认识它
一是模型竞技场类排行榜:海量用户投票“A 和 B 哪个回答更好”,用 BT 这类模型把投票转成实力分,大家口头说的“Elo 榜”往往是简化叫法。二是大模型对齐:训练奖励模型(reward model)时,成对偏好数据的目标就是让被选中的回答得分高于被拒绝的,形式正是 σ(r_win − r_lose),这就是 BT 模型;DPO 一类方法也是从这个假设推出来的。
实际意义
- 看榜单:分数是相对量,受对手分布、样本量和题目类型影响,小样本下几分之差可能只是噪声。别把排名当绝对真理,榜单口径以官方页面为准。
- 做数据:BT 假设“实力可以用一个标量概括”。如果模型各有所长,单一分数会把差异平均掉,这时宁可按领域分开建模。
- 看差距:把分差换算成期望胜率,比“谁排第一”信息量大得多。
