第 3 讲:随机效用模型与公理化

Machine Learning from Human Preferences · Lecture 03。个人学习讲义与配套实验,按主题整理并持续修订。

课程源码 ZIP ↓

个人整理的学习笔记,非官方讲义;课程来源与整理说明见课程介绍。配套示例未逐一运行验证。

本篇目录

对应:Stanford CS329H Fall 2026 Lecture 3(9/30 Random utility models & axiomatizations)。依据教材第 1 章 1.6–1.8、1.11 节(随机效用、IIA、Gumbel 定理、logit 与 probit、IIA 的局限)及第 1 章幻灯片;“公理化”一节补充了 Block–Marschak(1960)、Falmagne(1978)和行为决策的经典文献。 配套代码:code/lecture03/(只用 Python 标准库) 预计阅读时间:3~4 小时(含运行代码)


0. 本讲导航

0.1 学完本讲,你应该能够

  1. 写出随机效用模型(RUM)的定义和选择概率的积分公式;说出 Thurstone(正态噪声,probit)和 McFadden(Gumbel 噪声,logit)两条路线。
  2. 说出随机性的三种解释,并解释为什么它们在”每人一次”的数据上观测等价、怎样用重复数据区分。
  3. 推导 Gumbel 分布的三个关键性质:两个 Gumbel 之差是逻辑斯蒂分布;最大值仍是 Gumbel(位置移到 log-sum-exp);“谁赢”与”赢多少”相互独立。由此推导 softmax。
  4. 陈述 Luce 选择公理(IIA),从它推出”实力值”表示;陈述 Yellott 定理(独立同分布噪声下 IIA ⇔ Gumbel);解释为什么两两比较的数据无法检验 IIA。
  5. 说出 IIA 的红利(参数少、反事实预测)和三种失效方式:相似选项(红色公交车)、人群异质性(混合)、情境效应(诱饵、折中)。
  6. 写出嵌套 logit 和混合 logit 的公式,说出它们怎样修复 IIA。
  7. 证明所有 RUM 满足正则性;解释 Block–Marschak 多项式和 Falmagne 定理是”随机效用模型”的公理化;用它们判断一组数据能否用 RUM 解释。

0.2 先修知识

知识点用在哪里最低要求
第 1、2 讲全部BT、softmax、Plackett–Luce、“效用 + 噪声”的直觉
概率第 2、3 节密度函数、累积分布函数(CDF)、独立随机变量的联合概率
微积分第 3 节会做一次变量替换的积分(u=e−tu = e^{-t});推导可以跳过,不影响理解结论

0.3 本讲地图

第1节  从第 2 讲到第 3 讲
第2节  随机效用模型:定义、两条历史路线、随机性的三种解释        ← 代码 04(演示 3)
第3节  Gumbel 分布:为什么偏偏是它;softmax 的推导                ← 代码 01
第4节  Luce 选择公理与 IIA:红利、Yellott 定理、PL 的推论、检验     ← 代码 01(演示 4)、02
第5节  IIA 的失效:红色公交车、嵌套 logit、混合 logit、LLM 里的克隆  ← 代码 03、04
第6节  公理化:正则性、情境效应、Block–Marschak 与 Falmagne 定理    ← 代码 05
第7–11节 小结、与考核的关系、练习、延伸阅读、下一讲预告

1. 从第 2 讲到第 3 讲

第 2 讲反复借用了一个还没证明的事实:“效用 + 独立的 Gumbel 噪声”给出 softmax,排序给出 Plackett–Luce,排序里 aa 在 bb 前面的概率恰好是 σ(sa−sb)\sigma(s_a - s_b)。这一讲把它证明出来,并回答几个更根本的问题:

  • 为什么偏偏是 Gumbel? 正态噪声不是更”自然”吗?
  • “每个选项一个分数”的模型背后,到底假设了什么? 这个假设叫”无关选项独立性”(IIA)。它让参数从 M!−1M! - 1 个降到 M−1M - 1 个,代价是什么?
  • IIA 什么时候失效、失效了怎么办?
  • 能不能直接用数据检验”这些选择能不能用某个随机效用模型解释”?

教材把这一部分的标题叫”公理化”(axiomatization):不先假设模型长什么样,而是先问”数据应该满足哪些性质”,再看哪些模型恰好对应这些性质。


2. 随机效用模型

2.1 定义

随机效用模型(Random Utility Model,RUM)说:人对每个选项 jj 的感受是

Hj=Vj+εjH_j = V_j + \varepsilon_j

VjV_j 是平均效用(确定的部分),εj\varepsilon_j 是随机噪声。每次选择时,从选择集 SS 里选感受最大的那个:

P(j∣S)=P(Hj>Hk 对所有 k∈S∖{j})P(j \mid S) = P\big(H_j > H_k \ \text{对所有}\ k \in S \setminus \{j\}\big)

如果噪声相互独立、密度为 ff、CDF 为 FF,设 jj 的噪声取值为 εj=t\varepsilon_j = t,其他每个 kk 需要 εk<Vj−Vk+t\varepsilon_k < V_j - V_k + t,概率是 F(Vj−Vk+t)F(V_j - V_k + t),相乘再对 tt 积分:

P(j∣S)=∫−∞∞f(t)∏k∈S, k≠jF(Vj−Vk+t) dtP(j \mid S) = \int_{-\infty}^{\infty} f(t) \prod_{k \in S,\, k \ne j} F(V_j - V_k + t)\, dt

这是一个一维积分,代码 rum.py 的 choice_probs_integral 用梯形法直接算它(几千个格点就很准),所以本讲可以对任何独立噪声精确地算出选择概率。

不同的 RUM 只在”噪声长什么样”上不同:

噪声模型来历
独立正态probit(Thurstone 的”情形 V”)心理学,Thurstone 1927
独立 Gumbellogit:softmax、BT、Plackett–Luce经济学,McFadden 1974
相关正态多项 probit第 5.2 节
巢内相关的 Gumbel嵌套 logit第 5.2 节
每个人的 VV 不同混合 logit(随机系数)第 5.3 节

2.2 两条历史路线

Thurstone(1927)。心理学家 Thurstone 研究人怎样比较两个刺激(例如两个重量、两种气味的强度)。他假设每次感知到的强度 = 真实强度 + 正态噪声,于是 P(a≻b)=Φ((μa−μb)/(σ2))P(a \succ b) = \Phi\big((\mu_a - \mu_b)/(\sigma\sqrt{2})\big)(Φ\Phi 是标准正态 CDF)。这就是 probit 模型。它很自然(正态分布无处不在),但多选一时没有封闭公式。

McFadden(1974)。经济学家 McFadden 要预测旧金山湾区的人会不会改乘新建的捷运系统。他用的是 Gumbel 噪声,因为它给出简洁的 softmax 公式,可以很方便地加入”票价、时间、距离”等特征做回归(条件 logit)。第 1 讲提到,他的预测(约 6.3%)和实际(6.2%)几乎完全一致。

两条路线在二选一时几乎没有区别(第 1 讲代码 02:Δ=1\Delta = 1 时 0.731 vs 0.709),分歧出现在多选一时(第 4.2 节)。

2.3 随机性的三种解释,以及为什么分不清

教材给出三种解释(第 2 讲第 2.4 节):异质性(不同的人偏好不同)、有限理性(同一个人每次评估有误差)、设计者的不确定性(偏好是确定的,只是我们不知道)。

代码 04_heterogeneity_mixed_logit.py 的演示 3 构造了两个世界,比较回答 A(平均效用 5.4)和 C(4.8):

  • 异质性世界:每个人的效用 = 平均效用 + 一次性抽好的个人 Gumbel 偏好,之后每次都按它选(完全一致)。
  • 有限理性世界:所有人的平均效用都一样,每次选择时重新抽噪声。

每个世界 20000 人,每人回答两次:

世界第一次选 A 的比例两次答案一致的比例
异质性0.6481.000
有限理性0.6470.546

只看第一次选择,两个世界一模一样(都是 σ(0.6)≈0.646\sigma(0.6) \approx 0.646)——这叫观测等价。让同一个人回答两次就分清了:有限理性世界里两次一致的概率是 p2+(1−p)2≈0.542p^2 + (1-p)^2 \approx 0.542。真实的人介于两者之间。

这个区分有实际意义:分歧主要来自”人和人不同”,就该做个性化(第 4 讲)、认真对待”谁的偏好”(第 16、17 讲);主要来自”每次的波动”,就该多收集几次、取平均,或改进标注流程。很多 RLHF 数据集会让一部分样本被同一个标注员标两次,就是在估计这一点。


3. Gumbel 分布:为什么偏偏是它

3.1 定义与来历

标准 Gumbel 分布的 CDF 和密度是

F(x)=e−e−x,f(x)=e−xe−e−xF(x) = e^{-e^{-x}}, \qquad f(x) = e^{-x} e^{-e^{-x}}

平均值是欧拉常数 γ≈0.577\gamma \approx 0.577,方差是 π2/6≈1.645\pi^2/6 \approx 1.645,右边的尾巴比左边长。

它是”很多随机数的最大值”的分布:极值定理(Fisher–Tippett 1928、Gnedenko 1943)说,独立同分布随机数的最大值经过平移和缩放后,只可能趋近三种分布之一;指数、正态这类尾巴像指数函数一样衰减的分布,最大值趋近 Gumbel。代码 01_gumbel_magic.py 的演示 1:200 个指数随机数的最大值减去 log⁡200\log 200,重复 20000 次,CDF 和 Gumbel 几乎重合,平均值 0.577、方差 1.660(理论 1.645)。

一个直观的故事:如果你对一个选项的感受,是很多个”小方面”里最突出的那个(“这个回答最打动我的地方”),那这个感受的波动就近似是 Gumbel。但这只是一个说得通的故事;真正让 Gumbel 特殊的,是下面三条性质。

3.2 性质一:两个 Gumbel 之差是逻辑斯蒂分布

P(G1−G2≤x)=∫f(t) F(t+x) dt=∫e−texp⁡ ⁣(−e−t(1+e−x)) dtP(G_1 - G_2 \le x) = \int f(t)\, F(t + x)\, dt = \int e^{-t} \exp\!\big(-e^{-t}(1 + e^{-x})\big)\, dt

令 u=e−tu = e^{-t}(du=−e−tdtdu = -e^{-t} dt),积分变成 ∫0∞e−u(1+e−x)du=11+e−x=σ(x)\int_0^\infty e^{-u(1 + e^{-x})} du = \dfrac{1}{1 + e^{-x}} = \sigma(x)。所以

P(Va+Ga>Vb+Gb)=P(Gb−Ga<Va−Vb)=σ(Va−Vb)P(V_a + G_a > V_b + G_b) = P(G_b - G_a < V_a - V_b) = \sigma(V_a - V_b)

这就是 Bradley–Terry。代码 01 的演示 2 用模拟验证:x=1x = 1 时模拟 0.729,σ(1)=0.731\sigma(1) = 0.731。

3.3 性质二:最大值仍是 Gumbel(max-稳定性)

P(max⁡j(Vj+Gj)≤x)=∏je−e−(x−Vj)=exp⁡(−e−x∑jeVj)=F(x−log⁡∑jeVj)P\Big(\max_j (V_j + G_j) \le x\Big) = \prod_j e^{-e^{-(x - V_j)}} = \exp\Big(-e^{-x} \sum_j e^{V_j}\Big) = F\Big(x - \log \sum_j e^{V_j}\Big)

一组”效用 + Gumbel”的最大值,仍是一个 Gumbel,只是平移到了 log⁡∑jeVj\log \sum_j e^{V_j}(log-sum-exp)。经济学把它叫包容值(inclusive value):它衡量”这个选择集整体有多好”。演示 2:4 个选项的 log-sum-exp 是 1.747,模拟的最大值平均为 2.324,正好是 1.747+γ1.747 + \gamma。

3.4 性质三:“谁赢”与”赢多少”相互独立

这是最神奇的一条。计算”jj 赢、并且赢家的感受不超过 xx“的概率:

P(j 赢, max⁡≤x)=∫−∞xf(t−Vj)∏k≠jF(t−Vk) dt=∫−∞xe−(t−Vj)exp⁡(−e−t∑keVk)dtP(j \text{ 赢},\ \max \le x) = \int_{-\infty}^{x} f(t - V_j) \prod_{k \ne j} F(t - V_k)\, dt = \int_{-\infty}^{x} e^{-(t - V_j)} \exp\Big(-e^{-t}\sum_{k} e^{V_k}\Big) dt

(f(t−Vj)f(t - V_j) 里的 e−e−(t−Vj)e^{-e^{-(t-V_j)}} 和乘积合并成了 exp⁡(−e−t∑keVk)\exp(-e^{-t}\sum_k e^{V_k}),求和包括 k=jk = j。)令 u=e−tu = e^{-t},结果是

P(j 赢, max⁡≤x)=eVj∑keVk⋅exp⁡(−e−x∑keVk)=eVj∑keVk⏟P(j 赢)⋅P(max⁡≤x)⏟性质二P(j \text{ 赢},\ \max \le x) = \frac{e^{V_j}}{\sum_k e^{V_k}} \cdot \exp\Big(-e^{-x}\sum_k e^{V_k}\Big) = \underbrace{\frac{e^{V_j}}{\sum_k e^{V_k}}}_{P(j \text{ 赢})} \cdot \underbrace{P(\max \le x)}_{\text{性质二}}

一个式子同时给出了两个结论:

  1. 令 x→∞x \to \infty:P(j∣S)=eVj/∑k∈SeVkP(j \mid S) = e^{V_j} / \sum_{k \in S} e^{V_k},这就是 softmax 的推导。
  2. 联合概率等于两个边缘概率之积:“谁赢”和”赢家的感受多高”相互独立。

代码 01 的演示 3 验证了这一点:把 60000 次模拟按”赢家的感受”分成高、中、低三组,三组里 a、b、c 赢的比例几乎完全一样(0.667/0.244/0.089、0.661/0.250/0.089、0.658/0.250/0.091),都等于 softmax(0.665/0.245/0.090)。换成正态噪声就不是这样:赢家感受最低的那一组里 a 只赢 0.559,最高的那一组里 a 赢 0.766——“靠实力赢”的往往赢得更多。

为什么这条性质重要?因为它意味着”其他选项里谁是最强的对手、它的感受有多高”不会改变 aa 和 bb 的相对胜率——这正是下一节的 IIA。

3.5 Gumbel-max 技巧

性质三还有一个很实用的推论:要从分布 pj∝eVjp_j \propto e^{V_j} 里抽样,只需给每个 VjV_j 加一个独立的 Gumbel,取最大的那个。这叫 Gumbel-max 技巧。把”取最大值”换成”按感受排序”,就得到 Plackett–Luce 分布的一个排序样本(第 2 讲 sample_ranking 就是这样写的)。深度学习里的 Gumbel-softmax(Jang 等 2017、Maddison 等 2017)把”取最大值”换成一个带温度的 softmax,让离散的抽样可以求导。


4. Luce 选择公理与 IIA

4.1 公理

Luce(1959)提出的选择公理(在所有选择概率都为正的情形)可以写成一条”乘法规则”:对 j∈S⊆Tj \in S \subseteq T,

P(j∣T)=P(j∣S)⋅P(S∣T),P(S∣T)=∑k∈SP(k∣T)P(j \mid T) = P(j \mid S) \cdot P(S \mid T), \qquad P(S \mid T) = \sum_{k \in S} P(k \mid T)

“在大集合 TT 里选中 jj”=“选中的落在 SS 里”ד在 SS 里选中 jj“。它的一个直接推论是无关选项独立性(IIA):

P(a∣S)P(b∣S)=P(a∣T)P(b∣T)对所有包含 a,b 的 S,T\frac{P(a \mid S)}{P(b \mid S)} = \frac{P(a \mid T)}{P(b \mid T)} \quad \text{对所有包含 } a, b \text{ 的 } S, T

aa 和 bb 的相对偏好,不受旁边还有什么选项影响。

从公理推出”实力值”。取 TT 为全集 UU,记 πj=P(j∣U)\pi_j = P(j \mid U)。乘法规则给出 P(j∣S)=P(j∣U)/P(S∣U)=πj/∑k∈SπkP(j \mid S) = P(j \mid U) / P(S \mid U) = \pi_j / \sum_{k \in S} \pi_k。所以:

满足 Luce 公理 ⇔ 存在正数 πj\pi_j,使得在任何选择集上 P(j∣S)=πj/∑k∈SπkP(j \mid S) = \pi_j / \sum_{k \in S} \pi_k。

令 πj=esj\pi_j = e^{s_j},这就是 softmax。代码 02_luce_axiom_iia.py 的演示 1 验证了乘法规则(例如 A:左边 0.4199,右边 0.6278×0.6689=0.41990.6278 \times 0.6689 = 0.4199)。

4.2 Yellott 定理:IIA ⇔ Gumbel

定理(Yellott 1977):在”效用 + 独立同分布噪声”的随机效用模型里,如果对所有效用值、所有(至少三个选项的)选择集都满足 IIA,那么噪声必定是 Gumbel 分布(允许平移和缩放)。

”⇐“方向就是第 3.4 节的推导;”⇒“方向的证明较长,教材引用了 Yellott 的原文。代码 01 的演示 4 做了数值验证:aa 的效用 1、bb 的效用 0,先只在 {a,b}\{a, b\} 里选,再加入效用为 VcV_c 的 cc,用数值积分精确计算 P(a)/P(b)P(a)/P(b)(四种噪声取相同的方差):

噪声只有 {a,b}\{a,b\}加 cc(Vc=−2V_c = -2)Vc=0V_c = 0Vc=1V_c = 1Vc=2V_c = 2
Gumbel2.7182.7182.7182.7182.718
正态2.4402.4642.6332.8393.164
均匀2.3312.3172.4912.7243.047
反向 Gumbel2.7182.7493.2283.8864.584
  • 只有 Gumbel 那一行完全不变(=e= e)。
  • 正态和均匀噪声:cc 越强,比值越大——强的 cc 从较弱的 bb 那里抢走的份额比例更大。直觉:旁边有一个强对手时,只有”运气特别好”的感受才能赢,平均效用高的 aa 更容易有这样的感受。
  • 反向 Gumbel(左右翻转的 Gumbel)最有启发:只有 {a,b}\{a, b\} 时它和 Gumbel 完全一样(两个反向 Gumbel 之差也是逻辑斯蒂分布),一加入 cc 就严重违反 IIA。

教训:只有两两比较的数据,无法检验 IIA。 任何噪声之差只要是逻辑斯蒂分布,两两数据就和 BT 一模一样。要检验 IIA,必须观察三个或更多选项的选择——这也是第 2 讲”排序数据信息更多”的另一层含义。

4.3 Plackett–Luce 的两个推论

代码 02 的演示 2 枚举了 4 个回答的全部 24 种排序,按 Plackett–Luce 算出每种排序的概率:

(1) 排序里 xx 在 yy 前面的概率恰好是 σ(sx−sy)\sigma(s_x - s_y)(例如 P(AP(A 在 CC 前面)=0.645656) = 0.645656,σ(sA−sC)=0.645656\sigma(s_A - s_C) = 0.645656,逐位相同)。证明一句话:”xx 排在 yy 前面”⇔”xx 的感受 > yy 的感受”,这件事只和 xx、yy 两个噪声有关,由性质一就是 σ(sx−sy)\sigma(s_x - s_y)。这是第 2 讲”把排序拆成两两比较再用 BT 拟合”合理的原因。

(2) “排最后一名”的概率不是 softmax(−s)\text{softmax}(-s):

回答PL:排最后模拟:感受最低softmax(−s)\text{softmax}(-s)
A0.0050.0050.027
D0.3160.3180.302
F0.6610.6590.621

原因是 Gumbel 不对称:挑最好的看右尾,挑最差的看左尾。如果让标注员”先挑出最差的,再挑次差的……”,数据服从的是另一个模型(反向 Gumbel 噪声)。实践意义:问的顺序会影响该用哪个模型;同时问”最好”和”最差”的最好-最差标度法(best-worst scaling)需要专门的模型。

4.4 IIA 的红利与风险

红利一:参数少。M−1M - 1 个,而不是 M!−1M! - 1 个(第 1 讲)。

红利二:反事实预测。πj/πk=P(j≻k)/P(k≻j)\pi_j / \pi_k = P(j \succ k) / P(k \succ j),所以只用两两比较的数据,就能预测任何选择集上的选择。代码 02 的演示 1:只用 4000 次两两比较拟合 BT,代进 softmax 预测”五选一”,和 20000 次真实的五选一几乎一样(A:预测 0.428,实际 0.415;C:0.232 vs 0.234)。

风险:如果真实数据不满足 IIA,这些反事实预测就会系统性地错(第 5 节)。而 DPO、绝大多数奖励模型、Chatbot Arena 的排行榜,都默认了 IIA。

4.5 用数据检验 IIA

IIA 预言:log⁡[P(a)/P(b)]\log[P(a)/P(b)] 在 {a,b}\{a, b\} 和 {a,b,c}\{a, b, c\} 上相同。Hausman & McFadden(1984)的检验思想就是”去掉一些选项后重新估计,看参数变没变”。代码 02 的演示 3 用简化版:二选一和三选一各观察 4000 次,用自助法估计 log 比值之差的 95% 区间(aa = 回答 A,bb = 回答 B,cc = 另一篇只有详尽派喜欢的长教程):

世界P(a)/P(b)P(a)/P(b) 二选一三选一log 比值之差(95% 区间)结论
单一人群(logit)2.612.61+0.009 [−0.097, +0.096]不能拒绝 IIA
两群人混合(60% 简洁派 + 40% 详尽派)1.542.76−0.605 [−0.703, −0.511]拒绝 IIA

混合人群里,cc 只在详尽派里有吸引力,它和 B 平分了详尽派的选票,而 A 的选票主要来自简洁派,几乎没受影响。每群人内部都满足 IIA,混在一起就不满足了(第 5.3 节)。


5. IIA 什么时候失效

5.1 红色公交车 / 蓝色公交车

最著名的反例来自 Debreu(1960)对 Luce 那本书的书评(他用的是同一首交响曲的两张唱片),交通经济学里通常讲成公交车:一个人开车和坐蓝色公交车各占一半;现在加开一条除了颜色以外完全一样的红色公交车。直觉:开车的还是一半,红、蓝公交车各 1/4。logit 却说三者各 1/3——开车的人从 1/2 掉到了 1/3。

问题出在 logit 假设每个选项的噪声独立:它把红色公交车当成一个和其他选项”一样不同”的新选项,而实际上它和蓝色公交车几乎是同一个选项。代码 03_red_bus_blue_bus.py 的演示 1:

模型加上红巴士以后:汽车 / 蓝巴士 / 红巴士
logit0.333 / 0.333 / 0.333
嵌套 logit,λ = 0.50.414 / 0.293 / 0.293
嵌套 logit,λ = 0.050.491 / 0.254 / 0.254
相关 probit,ρ = 0.50.387 / 0.306 / 0.307
相关 probit,ρ = 0.990.483 / 0.257 / 0.259

注意只有汽车和蓝巴士时,所有模型都给出 0.5 / 0.5——二选一的数据看不出区别。

5.2 两种修复:嵌套 logit 与相关 probit

嵌套 logit(Ben-Akiva 1973、McFadden 1978)把相似的选项放进同一个”巢”,先选巢、再在巢里选:

In=log⁡∑k∈neVk/λ,P(巢 n)=eλIn∑meλIm,P(j∣巢 n)=eVj/λeInI_n = \log \sum_{k \in n} e^{V_k / \lambda}, \qquad P(\text{巢 } n) = \frac{e^{\lambda I_n}}{\sum_m e^{\lambda I_m}}, \qquad P(j \mid \text{巢 } n) = \frac{e^{V_j / \lambda}}{e^{I_n}}

InI_n 是巢的包容值(第 3.3 节的 log-sum-exp)。λ∈(0,1]\lambda \in (0, 1] 衡量巢内选项”有多不相似”:λ=1\lambda = 1 退化成普通 logit;λ→0\lambda \to 0 时巢里的选项像是”同一个选项的几个克隆”。λ>1\lambda > 1 时模型一般不再是随机效用模型(练习 8)。

相关 probit 让噪声服从多元正态分布 ε∼N(0,Σ)\varepsilon \sim N(0, \Sigma),两种公交车的相关系数 ρ\rho 越接近 1,红巴士越像蓝巴士的”影子”。它最灵活,代价是没有封闭公式(代码用 Cholesky 分解 Σ=LL⊤\Sigma = LL^\top 生成相关的随机数,再做蒙特卡洛)。

替代模式。代码 03 的演示 2 换一个角度:4 种交通方式(汽车 1.0、蓝巴士 0.6、红巴士 0.6、火车 0.3),停开红巴士以后,原来坐红巴士的人去了哪里?

模型去汽车去蓝巴士去火车
logit46.1%30.9%22.9%
嵌套 logit(λ = 0.3)17.3%74.1%8.6%

logit 的替代是”成比例”的:汽车份额最大,分到的最多——和直觉相反。嵌套 logit 让大部分人流向同一个巢里的蓝巴士。在偏好学习里,同样的问题是:往候选集里加一个新回答,它会抢走哪些回答的”选票”?

5.3 人群异质性:混合 logit

第 4.5 节已经看到,两群各自满足 IIA 的人混在一起就不满足 IIA。更一般的模型是混合 logit(随机系数 logit):每个人有自己的口味系数,

P(j∣S)=∫eVj(β)∑k∈SeVk(β) dF(β)P(j \mid S) = \int \frac{e^{V_j(\beta)}}{\sum_{k \in S} e^{V_k(\beta)}}\, dF(\beta)

代码 04 用”正态分位数网格”计算这个积分:效用 = 6·质量 + β·(详细程度 − 0.5),β ~ N(0, σ²)。演示 1 对每个 σ 用精确的两两胜率拟合 BT,再预测 8 个回答一起出现时的选择份额:

σ真实份额 A / B / CBT 预测 A / B / C总变差距离
00.411 / 0.287 / 0.2250.411 / 0.287 / 0.2250.000
20.410 / 0.323 / 0.1930.388 / 0.276 / 0.2370.068
40.411 / 0.368 / 0.1480.350 / 0.251 / 0.2500.177
80.402 / 0.418 / 0.0940.293 / 0.211 / 0.2530.315

σ 越大,误差越大。σ = 8 时,简洁派几乎都选 A、详尽派几乎都选 B,A 和 B 各自拥有一大群”铁杆粉丝”;BT 从两两比较里只看到”A 和 B 势均力敌、都很强”,却不知道它们的支持者是两群不同的人,于是低估了 A、B,高估了”谁都不讨厌”的 C。模型在训练数据(两两比较)上看起来没问题,一做反事实预测就错。

随机系数复现红色公交车。代码 04 的演示 2 给”是不是公交车”一个随机系数 β ~ N(0, σ²)(有人喜欢坐公交,有人讨厌)。σ = 0 时汽车份额 0.333,σ = 2 时 0.396,σ = 8 时 0.466,逼近直觉的 0.5。原因:喜欢公交的人在两种公交车之间选,讨厌公交的人几乎都开车;红巴士只能从”喜欢公交的人”那里分走蓝巴士的乘客。从整个人群看,两种公交车共享同一个 β,相当于噪声相关——效果和嵌套 logit 一样。

McFadden & Train(2000)证明:只要随机系数的分布足够灵活,混合 logit 可以任意逼近任何随机效用模型。代价是选择概率变成了积分,估计时要做数值积分或模拟。

对 RLHF 的启示:“相似的回答互相抢份额”和”人群口味有分歧”是同一枚硬币的两面:都来自”某些选项的效用在人群里一起涨落”。第 4 讲的因子模型用低维的”口味向量”描述这种共同涨落。

5.4 语言模型里的红色公交车

同一个语言模型采样出的几个回答常常大同小异。代码 03 的演示 3 构造了三个回答:A(效用 0.5)、B(效用 0)、B’(B 的改写,读者对两者的感受几乎完全一样)。这样构造的两两比较数据严格服从 BT,但三选一不满足 IIA:

sA−sBs_A - s_B预测三选一中 A 的份额
真实0.500.612(实际比例)
用两两比较拟合 BT0.490.451
用三个回答的排序拟合 PL0.310.406
  • BT 的分数是对的,拿它去预测三选一错了:模型以为 A 要同时打败两个”独立的”对手,其实 B 和 B’ 基本上是同一个对手(实际份额 0.612,几乎等于没有 B’ 时 A 胜 B 的 σ(0.5)=0.622\sigma(0.5) = 0.622)。
  • PL 连分数本身都估错了:当 B 或 B’ 排第一时,它的”双胞胎”几乎必然紧跟在第二位,于是”从 {A, 双胞胎} 里选了双胞胎”这个事件几乎总是发生。PL 把它当成独立的”双胞胎胜过 A”的证据,而它只是”两个回答几乎一样”的副产品。

Best-of-nn、排序标注、“从 KK 个回答里挑最好的”都会遇到”近乎重复的候选”。对策:标注前去重、把相似的回答合并成一个”巢”,或用不满足 IIA 的模型。


6. 公理化:数据能否用随机效用模型解释?

6.1 正则性:所有 RUM 都满足的性质

正则性:对 S⊂TS \subset T 和 j∈Sj \in S,P(j∣S)≥P(j∣T)P(j \mid S) \ge P(j \mid T)——加入新选项,老选项被选中的概率只会下降。

证明:在随机效用模型里,jj 在大集合 TT 里感受最大,就一定在小集合 SS 里感受最大。所以”在 TT 里选 jj“这个事件包含在”在 SS 里选 jj“这个事件里,概率不会更大。

这个证明对任何噪声都成立(独立、相关、混合都行)。代码 05_context_effects_axioms.py 的演示 1 在 logit、嵌套 logit、两群人混合、独立正态四个模型上检查了全部 48 种”加一个选项”的情形,违反次数都是 0。

6.2 情境效应:连正则性都违反

心理学家发现了一类更”顽固”的现象——情境效应:人怎样评价一个选项,取决于旁边摆着什么。

  • 诱饵效应(吸引效应,Huber, Payne & Puto 1982):TT 和 KK 不分上下;加入一个明显比 TT 差、但不比 KK 差的”诱饵” DD 以后,选 TT 的人变多了。
  • 折中效应(Simonson 1989):在一条”此消彼长”的线上,处在中间的选项更受欢迎。
  • 相似性效应(Tversky 1972):加入一个和 TT 很像的选项,主要抢 TT 的份额(这个效应 RUM 能解释,就是红色公交车)。

代码 05 用一个简单的”情境依赖”模型模拟前两种(每支配选择集里的一个选项,效用加 1.5;或者离选择集的”中心”越远,效用越低)。设两个属性”内容深度”和”简洁程度”:TT 深入但啰嗦(0.8, 0.3),KK 简洁但浅(0.3, 0.8),DD 是 TT 的劣化版(0.7, 0.2):

选择集 {K, T}:     K:0.500  T:0.500
选择集 {D, K, T}:  D:0.091  K:0.166  T:0.743     ← T 的份额从 0.500 上升到 0.743

DD 没人选,它的存在却让 TT“显得更好”。这违反了正则性,所以没有任何随机效用模型能产生这样的数据——换噪声、加混合都没用。折中效应同理:只有 XX(很深入)、YY(中等)时两者打平;加入 ZZ(很简洁)以后 YY 变成了中间选项,份额从 0.500 涨到 0.624,P(Y)/P(X)P(Y)/P(X) 从 1 变成 3.32。

对偏好标注的启示:同时给标注员看几个回答时,回答之间会互相”衬托”。同一个模型采样的回答里常有”某个回答的劣化版”;把这样的排序数据当成 Plackett–Luce 去拟合,会高估”有个更差的兄弟”的回答。两两比较能减轻(但不能消除)这种效应:选择集最小,衬托的机会最少。需要说明的是,诱饵效应在实验室里很稳定,在真实世界里的大小有争议;它在 LLM 标注里有多强,是一个值得研究的问题(适合做期末项目)。

6.3 Block–Marschak 多项式与 Falmagne 定理

正则性只是一条必要条件。有没有充分必要的条件?对选项 jj 和集合 S∋jS \ni j,定义 Block–Marschak 多项式:

K(j,S)=∑T⊇S(−1)∣T∖S∣ P(j∣T)K(j, S) = \sum_{T \supseteq S} (-1)^{|T \setminus S|}\, P(j \mid T)

在随机效用模型里,它等于”SS 之外的选项全都排在 SS 前面、而 jj 是 SS 里最好的”的概率(用容斥原理可以证明),所以一定 ≥0\ge 0。正则性就是 ∣T∖S∣=1|T \setminus S| = 1 那一条:K(j,S)=P(j∣S)−P(j∣S∪{k})≥0K(j, S) = P(j \mid S) - P(j \mid S \cup \{k\}) \ge 0(当全集只比 SS 多一个选项时)。

Falmagne 定理(1978):一组(有限个选项上的)选择概率能用某个随机效用模型解释,当且仅当所有 Block–Marschak 多项式都 ≥0\ge 0。

代码 05 的演示 3 对每个模型算出全部 32 个多项式:

模型负的个数最小值
logit / 嵌套 logit / 两群人混合 / 独立正态0≥ 0(0.0002~0.0031)
诱饵效应模型3−0.297
折中效应模型5−0.216

这就是”公理化”的意义:把一个模型类等价地写成一组可以直接在数据上检验的条件。同样的思路:Luce 公理 ⇔ logit;Block–Marschak 条件 ⇔ 随机效用模型。

6.4 总表

代码 05 的演示 4 汇总了各个模型满足的公理:

模型IIA正则性Block–Marschak(⇔ 是 RUM)
logit是是是
嵌套 logit否是是
两群人混合否是是
独立正态(probit)否是是
诱饵效应模型否否否
折中效应模型否否否

层级关系:logit ⊂ 随机效用模型 ⊂ 所有选择模型。对应到建模选择:

  • 满足 IIA → BT / PL / softmax:参数最少,可以做反事实预测,DPO 和大多数奖励模型都在这里;
  • 不满足 IIA 但仍是 RUM → 嵌套 logit、混合 logit、probit:更灵活,要更多数据,更难估计;
  • 连 RUM 都不是 → 需要显式地建模”选择集怎样影响评价”,这是行为经济学和心理学的领域(第 15 讲)。

7. 小结

  1. 随机效用模型:Hj=Vj+εjH_j = V_j + \varepsilon_j,选感受最大的。独立噪声时选择概率是一维积分。Thurstone(正态,probit)和 McFadden(Gumbel,logit)是两条历史路线。随机性的三种解释在”每人一次”的数据上观测等价,同一个人的重复数据能区分”人和人不同”与”每次的波动”。
  2. Gumbel 的三个性质:差是逻辑斯蒂(→ BT);最大值仍是 Gumbel,位置在 log-sum-exp(包容值);“谁赢”与”赢多少”独立(→ softmax,→ IIA)。Gumbel-max 技巧用于抽样。
  3. Luce 公理 / IIA:乘法规则 ⇔ 存在实力值 πj\pi_j 使 P(j∣S)=πj/∑SπkP(j \mid S) = \pi_j / \sum_S \pi_k。Yellott 定理:独立同分布噪声下 IIA ⇔ Gumbel。两两数据检验不了 IIA。PL 排序里”xx 在 yy 前面”的概率恰好是 σ\sigma;“排最后”不是 softmax(−s)(-s)。
  4. 红利与风险:参数少、能从两两比较预测任何选择集;但 IIA 不成立时,这些预测系统性地错。
  5. IIA 的失效:相似选项(红色公交车,修复:嵌套 logit、相关 probit);人群异质性(修复:混合 logit,可逼近任何 RUM);LLM 里近乎重复的回答会让 BT 的反事实预测和 PL 的估计都出错。
  6. 公理化:所有 RUM 满足正则性;诱饵效应、折中效应违反正则性,不能用任何 RUM 解释;Block–Marschak 多项式全部非负 ⇔ 可以用某个 RUM 解释(Falmagne)。层级:logit ⊂ RUM ⊂ 所有选择模型。

8. 与测验、口试和项目的关系

  • 测验与口试可能会问:推导两个 Gumbel 之差的分布;从 Luce 的乘法规则推出 softmax;解释红色公交车和嵌套 logit 的 λ;证明正则性;“为什么两两比较的数据检验不了 IIA?""DPO 的假设在什么情况下会出问题?”
  • 期末项目:本讲提供了几个可做的研究问题——LLM 标注里有没有诱饵效应、折中效应?近乎重复的候选回答对奖励模型有多大影响?标注员之间的分歧主要来自”人和人不同”还是”每次的波动”?写预分析计划时,要说明用什么数据形式(必须包含三选一或排序,才能检验 IIA)、用什么检验。

9. 练习

练习 1(推导)。证明:若 G1,G2G_1, G_2 是独立的标准 Gumbel 随机变量,则 P(G1−G2≤x)=σ(x)P(G_1 - G_2 \le x) = \sigma(x)。

参考答案

P(G1−G2≤x)=P(G1≤G2+x)=∫f(t)F(t+x) dtP(G_1 - G_2 \le x) = P(G_1 \le G_2 + x) = \int f(t) F(t + x)\, dt,其中 tt 是 G2G_2 的取值。代入 f(t)=e−te−e−tf(t) = e^{-t} e^{-e^{-t}}、F(t+x)=e−e−te−xF(t + x) = e^{-e^{-t} e^{-x}},得 ∫e−texp⁡(−e−t(1+e−x)) dt\int e^{-t} \exp(-e^{-t}(1 + e^{-x}))\,dt。令 u=e−tu = e^{-t},du=−e−tdtdu = -e^{-t} dt,tt 从 −∞-\infty 到 ∞\infty 对应 uu 从 ∞\infty 到 0,积分变成 ∫0∞e−u(1+e−x)du=1/(1+e−x)=σ(x)\int_0^\infty e^{-u(1 + e^{-x})} du = 1/(1 + e^{-x}) = \sigma(x)。

练习 2(推导)。从 Luce 的乘法规则 P(j∣T)=P(j∣S)⋅P(S∣T)P(j \mid T) = P(j \mid S) \cdot P(S \mid T) 出发: (a) 推出 IIA。 (b) 推出存在 πj>0\pi_j > 0 使 P(j∣S)=πj/∑k∈SπkP(j \mid S) = \pi_j / \sum_{k \in S} \pi_k。

参考答案

(a) 对 a,b∈S⊆Ta, b \in S \subseteq T:P(a∣T)/P(b∣T)=[P(a∣S)P(S∣T)]/[P(b∣S)P(S∣T)]=P(a∣S)/P(b∣S)P(a \mid T)/P(b \mid T) = [P(a \mid S) P(S \mid T)] / [P(b \mid S) P(S \mid T)] = P(a \mid S)/P(b \mid S)。 (b) 取 T=UT = U(全集),令 πj=P(j∣U)>0\pi_j = P(j \mid U) > 0。则 P(j∣S)=P(j∣U)/P(S∣U)=πj/∑k∈SπkP(j \mid S) = P(j \mid U)/P(S \mid U) = \pi_j / \sum_{k \in S} \pi_k。

练习 3(计算)。红色公交车问题,三者的平均效用都是 1,嵌套为 {汽车}、{蓝巴士, 红巴士}。 (a) 用嵌套 logit(λ = 0.5)算汽车的份额。 (b) λ → 0 时汽车的份额趋近多少?λ = 1 呢?

参考答案

(a) I汽车=log⁡e1/0.5=2I_{\text{汽车}} = \log e^{1/0.5} = 2;I巴士=log⁡(2e2)=2+ln⁡2≈2.693I_{\text{巴士}} = \log(2e^{2}) = 2 + \ln 2 \approx 2.693。P(汽车)=e0.5×2/(e0.5×2+e0.5×2.693)=e1/(e1+e1.347)≈2.718/(2.718+3.844)≈0.414P(\text{汽车}) = e^{0.5 \times 2} / (e^{0.5 \times 2} + e^{0.5 \times 2.693}) = e^1/(e^1 + e^{1.347}) \approx 2.718/(2.718 + 3.844) \approx 0.414,和代码 03 一致。 (b) λ → 0:λI巴士=λlog⁡(2e1/λ)=1+λln⁡2→1\lambda I_{\text{巴士}} = \lambda \log(2 e^{1/\lambda}) = 1 + \lambda \ln 2 \to 1,两个巢的权重相同,汽车 → 0.5。λ = 1:普通 logit,汽车 = 1/3。

练习 4(证明)。 (a) 证明两个随机效用模型的混合(以概率 ww 用第一个、1−w1 - w 用第二个)仍是随机效用模型,因此满足正则性。 (b) 用 (a) 解释:为什么”两群人混合”违反 IIA,却不违反正则性。

参考答案

(a) 构造一个新的随机效用:先以概率 ww 抽一个”类型”,再按该类型的噪声抽感受。这仍是”每个选项一个随机感受、选最大的”,所以是 RUM。正则性对任何 RUM 成立。(也可以直接验证:P(j∣S)=wP1(j∣S)+(1−w)P2(j∣S)≥wP1(j∣T)+(1−w)P2(j∣T)=P(j∣T)P(j \mid S) = w P_1(j \mid S) + (1-w) P_2(j \mid S) \ge w P_1(j \mid T) + (1-w) P_2(j \mid T) = P(j \mid T)。) (b) IIA 是 logit 特有的性质,混合破坏了”所有人的噪声独立同分布”;正则性是所有 RUM 共有的性质,混合仍是 RUM。

练习 5(概念)。一个标注项目里,标注员对同一对回答的选择”有时 A、有时 B”。设计一个小实验,区分”标注员之间口味不同”和”标注员自己每次判断有波动”。

参考答案

让一部分标注员在间隔一段时间后(避免记忆)重新标注一部分自己标过的样本。计算”同一个人两次一致”的比例,和”两个不同的人一致”的比例比较:如果个人自身的一致率很高(接近 1)而人与人之间的一致率低,分歧主要来自口味不同;如果两者差不多,主要来自个人的波动。代码 04 的演示 3 给出了两个极端的理论值(1.000 vs 0.546)。

练习 6(应用)。你有一份 RLHF 数据:每个提示词采样 4 个回答,由标注员排序。你担心”近乎重复的回答”和”诱饵效应”影响了数据。 (a) 怎样从数据里发现近乎重复的回答? (b) 怎样设计一个实验检验诱饵效应?

参考答案

(a) 用文本相似度(例如编辑距离、嵌入的余弦相似度)找出高度相似的回答对;检查它们在排序里是否总是相邻(代码 03 演示 3 的症状)。 (b) 对一部分提示词,随机地在候选集里加入或不加入某个回答的”劣化版”(例如删掉一个关键例子),比较原回答排第一的概率。如果加入劣化版后,原回答排第一的概率上升,就违反了正则性,说明存在诱饵效应。这正是预分析计划里该事先写明的设计(主要指标、样本量、检验方法)。

练习 7(Gumbel-max)。 (a) 写出用 Gumbel 噪声从分布 p=(0.5,0.3,0.2)p = (0.5, 0.3, 0.2) 中抽一个样本的步骤。 (b) 如果按"log⁡pj+Gj\log p_j + G_j"从大到小排序,得到的排序服从什么分布?

参考答案

(a) 对每个 jj 抽一个独立的标准 Gumbel GjG_j(G=−log⁡(−log⁡U)G = -\log(-\log U),UU 是均匀随机数),计算 log⁡pj+Gj\log p_j + G_j,取最大的那个 jj。由第 3.4 节,P(选中 j)=pj/∑kpk=pjP(\text{选中 } j) = p_j / \sum_k p_k = p_j。 (b) Plackett–Luce 分布(实力值 πj=pj\pi_j = p_j)。这也是”不放回地按概率依次抽样”的分布。

练习 8(动手)。在 rum.py 的基础上,把嵌套 logit 的 λ 设为 3,把三个选项放进同一个巢、第四个选项单独一个巢,随机抽一些效用值,用 block_marschak 检查。结论是什么?

参考答案

编写讲义时实际运行的结果:效用在 [−3, 3] 里均匀随机抽 300 组,有 208 组出现了负的 Block–Marschak 多项式(其中一些还违反正则性)。所以 λ > 1 的嵌套 logit 一般不是随机效用模型。(用 λ ≤ 1 重复同样的实验,不会出现负的多项式。)这说明嵌套 logit 的参数范围本身就是一个”公理”约束:λ ∈ (0, 1] 才和随机效用理论一致。


10. 延伸阅读

课程教材

  • Truong, Haupt, Koyejo. Machine Learning from Human Preferences. 第 1 章 1.6–1.8、1.11 节。

随机效用与 IIA

  • Thurstone. A Law of Comparative Judgment. Psychological Review 1927.
  • Luce. Individual Choice Behavior: A Theoretical Analysis. 1959.
  • Debreu. Review of R. D. Luce, Individual Choice Behavior. American Economic Review 1960.(“唱片”反例)
  • McFadden. Conditional Logit Analysis of Qualitative Choice Behavior. 1974.
  • Yellott. The Relationship between Luce’s Choice Axiom, Thurstone’s Theory of Comparative Judgment, and the Double Exponential Distribution. Journal of Mathematical Psychology 1977.
  • Hausman, McFadden. Specification Tests for the Multinomial Logit Model. Econometrica 1984.
  • Train. Discrete Choice Methods with Simulation. 2nd ed., 2009.(第 3 章 logit、第 4 章 GEV / 嵌套 logit、第 5 章 probit、第 6 章混合 logit;免费在线)

扩展模型

  • McFadden. Modelling the Choice of Residential Location. 1978.(GEV 与嵌套 logit)
  • McFadden, Train. Mixed MNL Models for Discrete Response. Journal of Applied Econometrics 2000.

公理化与情境效应

  • Block, Marschak. Random Orderings and Stochastic Theories of Responses. 1960.
  • Falmagne. A Representation Theorem for Finite Random Scale Systems. Journal of Mathematical Psychology 1978.
  • Tversky. Elimination by Aspects: A Theory of Choice. Psychological Review 1972.
  • Huber, Payne, Puto. Adding Asymmetrically Dominated Alternatives. Journal of Consumer Research 1982.
  • Simonson. Choice Based on Reasons: The Case of Attraction and Compromise Effects. Journal of Consumer Research 1989.

Gumbel 技巧

  • Jang, Gu, Poole. Categorical Reparameterization with Gumbel-Softmax. ICLR 2017.
  • Maddison, Mnih, Teh. The Concrete Distribution. ICLR 2017.

11. 下一讲预告

本讲的混合 logit 说明:人群里的口味分歧会破坏”每个选项一个分数”的模型。可是怎样估计每个人的口味?如果每个用户只给出几十条反馈,怎样从别人的数据里”借”信息?

第 4 讲讲因子模型:

  • Rasch 模型(项目反应理论):每个用户一个”胃口”、每个选项一个”吸引力”。它解释了为什么第 1 讲里”打分的宽严在比较中抵消”——用户参数在两两比较中消掉了。
  • KK 维因子模型:用户和选项都是 KK 维向量,P(接受)=σ(Ui⊤Vj+Zj)P(\text{接受}) = \sigma(U_i^\top V_j + Z_j)。这是 Netflix Prize 的矩阵分解、推荐系统的双塔模型,也是”个性化奖励模型”的基础。
  • 理想点模型:用户喜欢”离自己的理想点最近”的选项(不是”越多越好”),适合描述”不要太短也不要太长”。
  • 识别与 Rashomon 效应:很多不同的因子模型拟合得一样好,嵌入向量可以任意旋转——哪些结论是可信的?
← 返回课程目录