闭卷计时;做完先按文末评分标准自评,再按漏点定位表回查。
范围:本讲 5.1–5.7 与导览。题目与习题集尽量不重叠;凡概念判断题,只写对错不给分,必须给理由或反例。
时间分配建议:第一部分 15 分钟(每题约 90 秒)→ 第二部分 8 分钟 → 第三部分 25 分钟(宁可慢、不可跳步)→ 第四部分 10 分钟(每题写清四项)→ 留 2 分钟回头看第一部分的十条判断里有没有只写了对错。
阅卷口径(先读,能省不少分)
- 判断必须带机制词:写「错」不给分,写「错,因为 T 是 γ-压缩、不动点唯一」才拿满。本讲常见的机制词有:充分统计量、压缩映射、自举、off-policy、探索税、过高估计、对数导数技巧、只依赖状态的量、重要性修正、Z(x) 抵消、放大因子 1/(1−γ)、多种子与区间。
- 公式先写条件:写 Q-learning 更新式要说明 off-policy 与收敛前提;写 GAE 要说完 λ 两端;写 DPO 损失要说明偏好对必须同 prompt。
- 数值题给中间量:凡是算数值(探索税、V∗、GAE、过高估计、置信区间),必须写出中间量,只给一个数字最多得一半分。
- 工程题给判据:凡涉及取舍(PPO/DPO、online/offline、奖励设计),必须写出验证方式与失败判据,否则第四部分上限 6 分。
- 评估题必须多种子:凡涉及「A 比 B 好」的结论,必须给出种子数、回合数、回报分布与区间;只给单点结果或最优种子的,第三、四部分相关小问直接判 0 分。
判断对错,并给出一句话理由或反例。只写「对 / 错」不得分。
1. 值迭代是「评估给定策略」的算法,所以它的不动点是 Vπ 而不是 V∗。
2. 把奖励整体乘 10、同时把学习率除以 10,并不会自动保证训练更稳,因为优势/梯度的尺度还取决于状态值的大小。
3. ε-greedy 的探索是「均匀随机找动作」,因此无论怎么设置 ε,估计都不会偏离真值;常数 ε=0.1 与衰减到 0.01 这两种设置的最佳可达回报相同。
4. 优势函数满足 ∑aπ(a∣s)Aπ(s,a)=0,所以把优势直接乘 10 倍既改变期望也改变方差。
5. 在线 RL 里用固定的随机行为策略收集数据、并且在训练全程都不更新它就是 off-policy;要把这种数据用于 Q-learning,除了充分访问之外不需要任何额外修正。
6. 策略梯度定理里不需要对状态访问分布 dπθ 求导,是因为它的 θ 依赖在推导中被抵消了。
7. 用 GAE 时把 λ 从 0 调到 1,偏差单调减小、方差单调增大,所以「选哪个 λ」本质上是在偏差与方差之间挑一个点。
8. 对 i.i.d. 估值噪声 Q^(s′,a)=Qˉ+εa、εa∼N(0,σ2),E[maxaQ^]≥Qˉ 对任意 N 与任意有界 σ 都成立,且随 N 增大而单调增大。
9. 离线 RL 的失败原因是数据量不足;只要把日志规模扩大十倍,就可以直接套用在线算法(例如把 DQN 原样跑在这份数据上)。
10. DPO 不需要在线采样,所以只要它在偏好对上的准确率上升,就说明模型的回答真的变好了。
第一部分答案(每题 3 分:判断 1 分 + 理由 2 分)
解答
1. 错。 不动点属于贝尔曼最优算子 T(把 Vπ 里的 ∑aπ(a∣s) 换成 maxa),故它收敛到 V∗;只有策略评估(解 vπ=(I−γPπ)−1rπ)才给 Vπ。给分要看到「期望 vs 最优」这对区分(定理 5.2.1、定理 5.2.2)。
解答
2. 对。 奖励缩放与学习率缩放确实会互相抵消一部分(梯度与噪声同倍放大,信噪比不变),但值函数的数值尺度由 Rmax/(1−γ) 决定,γ 越接近 1 越大;此外优势归一化、TD 目标的量级都会随之变化。所以「乘大奖励 = 放大有效学习率」这条经验只能当量级提醒,不能当稳定化手段(方法 5.7.1、5.4.7 即时自测 Q4)。
解答
3. 错。 均匀探索只保证「每个动作都有机会被采到」,不保证估计无偏:有限步内样本均值仍带噪声(选择税),而且常数 ε 有探索税上限 μ∗−ε(μ∗−μˉ)。衰减到 0.01 时这一项压到 εmin 量级,最佳可达回报更高——这正是「两条曲线末段必须比出高低」的原因(定理 5.1.1)。
解答
4. 错(期望不变、方差变)。 关键不在于「乘 10」这个操作本身,而在于 A 的期望零性质:∑aπ(a∣s)Aπ(s,a)=0 说明优势在策略分布下均值为 0,因此乘以任意常数(含负数)都不改变梯度期望,只把估计器方差放大 100 倍。做题时若只答「乘 10 不影响结果」也只给 1 分——漏掉了方差(定义 5.5.1)。
解答
5. 对。 判据是「行为策略与目标策略是否同一个」:固定的随机策略在训练中不变,就是「与目标(max 贪心)不同」的 off-policy,因此可用;Q-learning 的目标用 max,与数据来源无关,所以不需要重要性修正(这点与 PPO 相反:那里必须有 ρ)。但充分访问仍是前提:固定策略若长时间不覆盖某些 (s,a),max 会去挑那些只被估计得很高的动作(定义 5.3.2)。
解答
6. 对。 按轨迹展开时 pθ(τ)=ρ(s0)∏tπθP,其中 ρ 与 P 与 θ 无关,取对数求导后只剩策略项,故「状态分布依赖 θ」这一项在严格证明里被抵消为零。代价是推导需要额外证明那个多出的一项为零(Sutton 等 2000 的标准论证)(定理 5.4.1 的严格性说明)。
解答
7. 对(但要补一句)。 λ=0⇒A^=δt(低方差高偏差),λ=1⇒Gt−V(低偏差高方差),中间是连续插值,故它是「偏差—方差旋钮」。补充:两端的「单调」是趋势性说法,实际还受 Critic 质量、回合长度、奖励尺度影响;工程默认 λ≈0.95 是因为它在这个趋势上取了一个便宜的折中(定理 5.5.1)。
解答
8. 错(两处:下界对、单调性要加分条件)。 max 是凸函数 ⇒ Jensen 给 E[maxaQ^]≥Qˉ,这一步对任意 N,σ 成立;但「随 N 单调增大」只在噪声独立同分布的假设下由极值理论给出(≈σ2lnN);若动作间噪声强相关,max 可能取到「一起高估」的少数几个,增量就远小于 2lnN 的预测。给分:指出「下界无条件、量级有条件」才给 2 分(定理 5.3.2)。
解答
9. 错。 离线 RL 的敌人是分布外动作的估值外推:单步自举误差被 1/(1−γ) 放大(γ=0.99 ⇒ 100 倍),而 max 会主动挑数据外被高估的动作,形成循环。把数据集扩大十倍改变不了「真实决策所需的 (s,a) 总有一部分在支撑集之外」,因此必须换用保守化(CQL)或避免查询数据外动作(IQL)的方法;第一问应是「数据里有没有好决策的足够证据」(定理 5.6.1、方法 5.6.1)。
解答
10. 错。 训练侧确实不需要采样,但评估必须看真实生成结果:pref_acc 上升可能只反映「学到了格式特征」;更根本的是 DPO 只约束相对差距,Δw 与 Δl 同时下降时损失反而更小 ⇒ 存在绝对似然坍塌风险。正确的验收是独立人评 + 通用能力回归 + 格式稳定性,而不是训练指标(例 5.6.1、5.6 的 errata)。
11. 写出 Q-learning 的更新式,并指出其中哪一个量决定了它是 off-policy;再写出表格情形下保证收敛的两个条件。
12. 三个动作的真实期望奖励 μ=(0.9,0.6,0.3),用 ε=0.3 的 ε-greedy,且当前估计已指向最优动作:求单步期望奖励 E[r] 与探索税 Δ。
13. 「max 与期望的交换」为什么会导致过高估计?写出噪声 i.i.d. 正态时的量级公式,并算 N=10,σ=1 与 N=16,σ=0.25。
14. 在 GAE 中,γλ 为什么会一起出现?给定 γ=0.99,λ=0.95 与 λ=1 相比,谁的有效记忆更短、约多少步?
15. DPO 的推导中 Z(x) 为什么能抵消?由此给出「偏好数据必须满足的一条硬性要求」。
第二部分答案(每题 4 分)
解答
11. Q(st,at)←Q(st,at)+α[rt+1+γmaxa′Q(st+1,a′)−Q(st,at)]。决定 off-policy 的是目标里的 maxa′——它使目标策略(贪心)与产生数据的行为策略分离。收敛的两个条件:① 充分访问(每个 (s,a) 被访问无穷多次);② 步长满足 Robbins–Monro:∑tαt=∞、∑tαt2<∞。(每空 2 分:更新式与 max 1 分、两条条件各 0.75 分,缺「充分访问」扣 1 分。)(定义 5.3.2)
解答
12. μˉ=(0.9+0.6+0.3)/3=0.6;E[r]=(1−0.3)×0.9+0.3×0.6=0.63+0.18=0.81;探索税 Δ=μ∗−E[r]=ε(μ∗−μˉ)=0.3×0.3=0.09。(验算 0.9−0.81=0.09 ✓。只写一个数字不给分;写对公式但算错扣 1 分。)(定理 5.1.1)
解答
13. 因为 max 是凸函数,由 Jensen 不等式 E[maxaQ^a]≥maxaE[Q^a]=Qˉ——对随机变量取凸函数不满足「期望与函数可交换」,所以估计噪声被系统性地向上偏置。量级:E[maxaεa]≈σ2lnN。N=10,σ=1:2ln10≈2.15;N=16,σ=0.25:0.25×2ln16=0.25×2.354≈0.59。(公式 2 分、两个数值各 1 分。)(定理 5.3.2、例 5.3.2)
解答
14. (γλ)l 里:γl 来自折扣(第 l 步后的奖励本来就该打折),λl 是人为给远处 TD 残差打的额外折扣,两者在闭式里天然相乘。1/(1−γλ):λ=0.95 时 γλ=0.9405⇒≈17 步;λ=1 时 γλ=0.99⇒≈100 步。故λ=0.95 的有效记忆更短(约 17 步 vs 100 步),对应更小方差、更大偏差。(「两个来源」2 分;两个记忆长度 1 分;结论 1 分。)(定理 5.5.1)
解答
15. 因为 Z(x)=∑yπref(y∣x)exp(r(x,y)/β) 只依赖提示 x、与回答 y 无关,在差值 r(x,yw)−r(x,yl)=βlogπrefπw−βlogπrefπl+βlogZ(x)−βlogZ(x) 中精确相减为零。由此得到硬性要求:偏好对的两条回答必须来自同一个 prompt——否则差值里会留下 βlogZ(xw)−βlogZ(xl),DPO 损失不成立。(抵消机制 2 分;同 prompt 要求 2 分。)(定理 5.6.2)
16.(10 分)贝尔曼最优算子与收敛速度。
① 证明 ∥TV−TU∥∞≤γ∥V−U∥∞(写清用到的两个工具);② 已知初始误差 ∥V0−V∗∥∞=κ=1.5、γ=0.9,求把误差压到 ε=10−3 以内所需的迭代轮数(保留量级即可);③ 说明这条界在「离线」情形下会怎么变(用 1/(1−γ) 的放大说明)。
解答
① 压缩性:先用 ∣maxaf(a)−maxag(a)∣≤maxa∣f(a)−g(a)∣(工具一:max 的 1-Lipschitz 性)把两个算子之差压到一个 max 的差;再注意到对 P(⋅∣s,a) 的加权平均满足 ∑s′P(V−U)≤∑s′P∥V−U∥∞=∥V−U∥∞(工具二:P 是概率分布)。于是
∥TV−TU∥∞≤amaxγV−U∞=γ∥V−U∥∞.
② 轮数:由压缩性反复代入得 ∥Vk−V∗∥∞≤γkκ=1.5×0.9k。要求 1.5×0.9k≤10−3,即
k≥ln(1/γ)ln(κ/ε)=0.105ln1500≈0.1057.31≈70 轮(O(log(1/γ)log(1/ε)) ✓).
(验算:1.5×0.970≈1.5×6.3×10−4≈9.4×10−4<10−3 ✓。)
③ 离线情形:同样的三角不等式拆解给出 ∥Vk+1−V∗∥∞≤ε+γ∥Vk−V∗∥∞(其中 ε 是数据外自举误差的上界),反复代入得稳态上界 ε/(1−γ)——γ=0.99 时放大 100 倍。在线情形下这误差会被新数据纠正,离线情形下它会永久沉淀,故必须从源头压制 ε(不查询数据外动作或主动压低其值)。
给分:① 4 分(两个工具各 1.5 分 + 结论 1 分);② 2 分(表达式 1 分 + 轮数 1 分);③ 4 分(三角不等式拆解 2 分 + 1/(1−γ) 与 γ=0.99 的数值 2 分)。
17.(10 分)GAE 的手算:λ 如何改变同一个序列的估计。
给定 γ=0.9、四步 TD 残差 δ0=1.0, δ1=−0.8, δ2=0.6, δ3=−0.4,从头往后写清每一步,求 A^0 在 λ=0、λ=0.5、λ=1 三种设置下的值;并用一句话解释为什么它随 λ 单调下降(提示:看后面两个残差的符号)。
解答
用递归 A^t=δt+γλA^t+1,A^4=0。
λ=0:A^t=δt ⇒ A^0=1.0。
λ=0.5:γλ=0.45。
A^3=−0.4;A^2=0.6+0.45×(−0.4)=0.42;A^1=−0.8+0.45×0.42=−0.611;A^0=1.0+0.45×(−0.611)=0.725。
λ=1:γλ=0.9。
A^3=−0.4;A^2=0.6+0.9×(−0.4)=0.24;A^1=−0.8+0.9×0.24=−0.584;A^0=1.0+0.9×(−0.584)=0.474。
解释:后面两步的残差净额为负(−0.8 与 −0.4 主导了 +0.6),λ 越大就把越远的负残差按 (γλ)l 权重带进当前优势,故 A^0 单调下降。与正文对照:正文用同一条残差序列但取 γ=0.99,得到 A^0=1.0/0.4455/0.408(λ=0/0.95/1);本题把 γ 调到 0.9 后同一趋势仍在(1.0/0.725/0.474,λ=0/0.5/1),说明 γλ 才是真正决定「带多远」的乘积。这也说明 λ 的作用是平滑而不是换量级。
给分:三个数值各 2 分(要有中间量,只给结果减半);解释 4 分(须指出「后面的负残差被更大权重带入」)。
18.(10 分)DPO 权重的展开与极端情形。
把 Δt=logπref(yt∣x)πθ(yt∣x)(t∈{w,l})记牢,令 z=β(Δw−Δl):① 把 LDPO 展开成两项 −logσ(z)=log(1+e−z),说明当 z>0 与 z<0 时它分别像什么监督损失;② 求 ∂L/∂Δw 与 ∂L/∂Δl,并说明 β 在梯度里扮演什么角色;③ 讨论 β→∞ 与 β→0 两个极端下训练会变成什么(提示:哪一项主导)。
解答
① 展开。 L=−logσ(z)=−log1+e−z1=log(1+e−z)。
- z>0(偏好回答相对提升得更多)时 e−z<1,损失接近 log2≈0.693 且随 z 上升继续下降——像已经分类正确但仍被轻微惩罚的样本;
- z<0 时 e−z>1,损失近似 ∣z∣(线性增长)——像错分样本的 hinge/指数惩罚,且 σ 饱和后梯度趋近 0(难例不再贡献)。
也可把两部分写成显式形式:LDPO=−logσ(z),其中 z=βΔw−βΔl,即「把 yw 当正样本、yl 当负样本」的成对 logistic 损失。
② 梯度。 由 dzd[−logσ(z)]=−σ(−z)=−(1−σ(z)),链式法则给
∂Δw∂L=−βσ(−z)<0,∂Δl∂L=+βσ(−z)>0,
即提高 Δw、压低 Δl 能降损失;数值上用正文的 z=0.1,β=0.1 得 ±0.0475。β 同时是梯度的乘性尺度与隐式奖励的尺度:β 越大,同样的对数比率差造成越大的 z(更快饱和),梯度也按 β 放大——所以 β 是 DPO 里最重要的超参数(太大几乎不学、太小迅速过拟合偏好数据)。
③ 极端情形。 β→∞:z 被放大到饱和区,梯度 →0,损失被「拉开偏好差距」这一步完全主导(绝对似然项被压到不起作用),训练几乎停滞或极易过拟合。β→0:z→0、σ(z)→21,损失对 Δw−Δl 的依赖变得平坦(一阶近似下 L≈log2−2z+8z2),此时绝对似然(SFT 式)项相对主导——这也解释了为什么「DPO + SFT 项」的变体(如 ORPO 把两者合并)在低 β 区间更稳。
给分:① 3 分(展开 1 分 + 两种情形各 1 分);② 4 分(两个梯度各 1.5 分 + β 的作用 1 分);③ 3 分(两个极端各 1.5 分)。
19.(10 分) 团队要把一个 7B 模型的对齐从「RLHF(PPO + 奖励模型)」改成 DPO,已有 1.2 万对同 prompt 的偏好数据、两台单卡机(无集群),并且已经有一个调好的 SFT 模型。请给出:(a) 该不该改、判据是什么;(b) 若改,训练配置与显存账;(c) 失败判据(至少三条,须可测量);(d) 验证计划。
解答
(a) 该不该改。 判据按方法 5.6.6 的「先问奖励从哪来」走:奖励来自人的成对比较 ⇒ 在 RLHF 与 DPO 家族里选。现有条件(1.2 万对数据已就绪、两台单卡、无集群)与 DPO 的优势高度匹配:不需要奖励模型、不需要在线采样、训练像 SFT,因此「该改」;但要明确代价:已知上界通常低于 RLHF(奖励模型可以随新数据持续更新),且 DPO 对标注噪声没有缓冲(噪声直接进策略梯度),所以要么确保数据质量,要么接受较低上限。
(b) 配置与显存账。 需要策略 + 参考模型两份权重(参考固定、用 torch.no_grad() 或预先算好 log 概率存盘),故显存约为「两份 7B 权重 + 优化器状态 + 激活」;单卡可行的手段是 LoRA(只训适配器)+ 梯度检查点 + 参考侧离线缓存 log 概率。关键工程点:参考模型的 log 概率必须用 fp32 计算/存盘——bf16/fp16 的误差可达 10−2,与 z 的量级同阶,会把训练信号淹没(5.6.11 的三点读代码提示)。超参:β 从 0.1 起步,学习率比 SFT 小一个量级,epoch 数少(1–2 轮),并用小验证集扫 β。
(c) 失败判据(≥3,可测量)。 ① pref_acc 上升但验证集损失不降、或 margin 持续爆炸 ⇒ β 或学习率太大(回退调小);② Δw 与 Δl 同时大幅下降 ⇒ 绝对似然坍塌(语言退化),需降学习率/缩短训练/加 SFT 项(ORPO 的做法);③ 输出长度系统性膨胀或风格套路化 ⇒ 长度/风格偏差未对冲(评估按长度分桶、做格式剥离对照);④ 通用能力回归测试(如常识/数学小基准)显著下降 ⇒ 过拟合偏好数据、对齐税过大。
(d) 验证计划。 与 SFT 基线做单变量对照(同一数据划分、同一评估集);评估必须看真实生成结果:独立人评(不与训练奖励同源)+ 通用能力回归 + 格式稳定性 + 长度分布;训练侧报每个 epoch 的 pref_acc、margin、Δw/Δl 三条曲线;并做过优化探测:把训练步数拉长一倍,观察「人评先升后降」的拐点位置。评分:(a) 3 分(判据 + 说清代价);(b) 3 分(参考模型冻结 + fp32 数值坑 + LoRA/checkpoint);(c) 3 分(三条各 1 分,须可测量);(d) 1 分。
20.(10 分) 你的 DQN 在训练日志上表现得很好:episode_reward 从 −0.5 升到 0.85,loss 平滑下降,Q 均值从 1.2 涨到 9.8。但上线后业务指标没有改善。请给出:(a) 你会按什么顺序排查(写出前三步);(b) 每一步的可测量判据;(c) 若最终确认是「奖励被利用」,给出两条立刻可执行的措施;(d) 说明这次经历对「该记哪些日志」的启示。
解答
(a) 排查顺序:按方法 5.7.4 的固定顺序——先奖励、再评估协议、再探索、最后算法超参数。① 先核对奖励函数在训练与评估中是否完全一致(有没有塑形项、尺度是否相同、done 掩码是否两侧一致);② 再检查评估协议(是否用独立回合、确定性策略、独立种子;训练奖励与评估回报是不是同一个量);③ 再直接看行为轨迹(有没有套路化行为:绕圈、原地刷分、只做某一类动作)。
注意「Q 均值从 1.2 涨到 9.8」本身就是红旗:Q 值整体膨胀既可能是学习,也可能是过高估计(量级 σ2lnN,N=10,σ=1 时约 2.15/步,会被自举反复放大)——所以不能把 Q 值当成绩单。
(b) 每步判据:① 奖励一致性:同一段轨迹用训练奖励函数与评估奖励函数各算一次,两个数值必须相等(允许浮点误差 < 1e-6);不等就说明口径不一致。② 评估协议:把评估改成「独立种子集合 + 确定性策略 + 100 局」后,报出均值 ± 标准差与区间;若训练奖励上升而独立评估的区间与基线重叠(或更差),则训练指标无信息量(参见 例 5.7.1 的算法)。③ 行为审计:统计单位目标达成的步数/位移是否随训练上升、空闲动作占比是否升高、轨迹长度分布是否畸变(如出现「永不结束」的策略);再看 5–10 段录像做人工确认。
(c) 若确认是奖励被利用:① 回滚到较早的 checkpoint(KL 较小、Q 值尺度正常的那个),并以训练指标的拐点为停手点,同时调大 KL 系数或加早停;② 把奖励改成结果型 + 接手独立验收:删掉可被绕过的塑形项(或改成势函数形式的 ϕ(s′)−ϕ(s)),并建立一套不与训练奖励同源的人评/独立基准按周期评估(方法 5.6.4);必要时补数据覆盖被利用的区域。
(d) 日志启示:必须把「训练指标」与「验收指标」分成两组记录,并且验收指标由独立流程产生;至少要记——奖励函数原文与版本、终止/截断规则、评估种子集合与回合数、确定性还是随机策略、每个种子的回报分布(不是最优值)、Q 值尺度与 TD 误差、以及行为侧的可测量统计(步数、位移、动作分布、轨迹长度)。这份清单与 5.7.6 的实验记录表一致;一句话:奖励分数是训练指标、不是验收指标。
评分:(a) 3 分(顺序对 + 认出 Q 值膨胀是红旗);(b) 3 分(三步各给一个可测量判据);(c) 2 分(回滚/停手 + 独立验收,各 1 分);(d) 2 分(训练 vs 验收分组 + 至少三项必记日志)。
| 部分 | 题量 | 分值 | 给分要点 |
| 一 · 概念判断 | 10 | 30 | 判断 1 分 + 理由 / 反例 2 分;只写对错得 1 分;理由里缺「机制词」按半对给 1 分 |
| 二 · 填空简答 | 5 | 20 | 公式或结论 2 分 + 关键说明 / 数值 2 分;数值只给结果不给中间量减半 |
| 三 · 推导计算 | 3 | 30 | 首行或形状 / 定义 3 分 + 链条完整 4 分 + 前提与讨论 3 分;只写结论最多 3 分 |
| 四 · 开放题 | 2 | 20 | 方案具体 4 分 + 判据可测量 4 分 + 验证计划 2 分 |
段位换算:≥90 优秀(能给同学讲清两条主干与对齐流程);75−89 良好(能独立写训练循环并做多种子评估);60−74 及格(需补推导:B 组与第三部分);<60 回到对应节的「即时自测」与习题集重做。
自评纪律:① 凡「A 比 B 好」类结论没有给种子数、回合数与回报分布的,相关小问直接判 0 分;② 推导题跳过 γλ、Z(x) 这类关键中间量的,从「链条完整」里扣 2 分;③ 开放题只写方案不写失败判据的,第四部分上限 6 分。
最后一句:本卷的目的不是打分,而是把你以为会的地方暴露出来。凡有「写得出来但讲不清机制」的题,回到对应节的 intuition 与回忆卡当天再练一遍;连续两轮仍错的条目,写进勘误与补注第四节作为自己的薄弱点单独跟踪。