想象你是一家餐厅的厨师,但有个奇怪的规定:你被关在厨房里,不能问客人任何问题,只有一本前几年的“顾客好评本”。本子上写着:某天做了红烧肉、客人打了4分;某天做了清蒸鱼、客人打了5分……你只能靠这本子学做菜,却不能试菜、不能问现在的客人“这道新菜您觉得如何”。 问题来了:你忍不住想创新。本子里没出现过的“分子料理”、“榴莲披萨”,你凭着想象给它们打了10分的预期好评。你越脑补越兴奋,最后菜单上全是客人从没点过、也从没人吃过的黑暗料理——这就是离线强化学习(Offline RL)中著名的“分布外动作(OOD)外推高估”问题。 怎么破?CQL(保守Q学习)说:凡是本子外的菜,先扣分扣到底,除非有证据;IQL(隐式Q学习)说:干脆不为没做过的菜打分,只研究本子里真实出现过的菜。两种截然不同的“求生哲学”,构成了今天故事的主线。

岗位关联

对AI从业者而言,掌握CQL与IQL能在无法在线交互的推荐、决策、大模型对齐等场景中安全地让策略进化,是离线RL方向必会的两板斧。

目录
  1. 可视化演示
  2. 外推高估之谜
  3. 保守Q学习CQL
  4. 隐式Q学习IQL
  5. 双法对比
  6. 场景选择
  7. 超参调优
  8. 应用落地
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

动态演示Offline RL中的CQ的核心机制,通过源头/管道/节点/终端四种模式展示关键概念与交互流程。

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

Offline RL中的CQ:全卷积网 全卷积网络的核心架构设计 反卷积上采样恢复分辨率 核心机制可视化 Offline RL中的CQ整体架构与关键组件

外推高估之谜

厨师小李拿到好评本后,决定给自己定个规矩:先学会复刻本子里的招牌菜。可学了三天,他手痒了——“我为什么不能研发一道本子外的创新菜?”于是他给这道从没做过的菜,在脑子里打了个“预期好评10分”。这就是离线RL一切灾难的起点:数据集是静态的,你无法与环境交互验证,但算法在更新时,却会忍不住“脑补”那些不在数据分布里的动作。

在强化学习里,这个脑补动作叫分布外(Out-Of-Distribution,OOD)动作。普通强化学习的核心公式是时序差分(TD)更新——它用“当前奖励 + 对未来最佳动作的预估”来修正当前判断:

这个公式在在线环境里没问题,因为max选错了可以立刻试错纠正;但在离线场景,max常常选中一个好评本里从未出现过的“黑暗料理动作”——它的Q值本来就是凭空捏造的、虚高的。于是虚高被当作“真实高回报”回传给其他动作,一轮轮自举放大,最终整个Q函数像吹爆的气球,策略(菜单)彻底崩溃。

回到厨房:小李每脑补一次“新菜必火”,就会顺手把这道新菜的虚高分当作真理,写进下一道菜的参考笔记。好评本就这么被污染了。要救这个局面,必须从“禁止脑补”或“惩罚脑补”两条路里选一条——这正是接下来两位主人公的登场。

Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)]\displaystyle Q(s,a)\leftarrow Q(s,a)+\alpha\left[r+\gamma\max_{a'}Q(s',a')-Q(s,a)\right]
  1. 当前打分Q(s,a) 表示状态s下执行动作a的“预期好评分”。这个分数起初只是猜测。
    Q(s,a)\displaystyle Q(s,a)
  2. 实际反馈r 是状态s下执行动作a后从本子里读到的真实好评分。离线数据里它是固定的、无法再问的。
    r\displaystyle r
  3. 未来幻想\gamma\max_{a'}Q(s',a') ——max在后续状态s'的所有可能动作里挑最高分。问题在于,这个“最高分”可能属于数据集之外的动作,是纯脑补的虚高值。
    γmax⁡a′Q(s′,a′)\displaystyle \gamma\max_{a'}Q(s',a')
  4. 修正幅度\alpha[...] 用“现实+幻想”与“当前打分”的差来微调Q值。因为幻想本身是虚的,差就被污染,越调越偏。
    α[r+γmax⁡a′Q(s′,a′)−Q(s,a)]\displaystyle \alpha\left[r+\gamma\max_{a'}Q(s',a')-Q(s,a)\right]

保守Q学习CQL

小李的师兄——保守派厨师老王,提出了自己的规矩:“本子里没出现过的菜,一律先扣分。”他不禁止创新,但创新要付出代价:每给一道陌生菜打高分,就要在总账本上记一笔罚金,直到这道菜在真实记录里被验证过。这就是保守Q学习(Conservative Q-Learning,CQL)。

CQL在标准TD损失之上,加了一个“保守惩罚项”。它的目标是压低所有动作的Q值分布,但特别狠地压制那些“数据集中没见过的动作”:

看上去吓人,拆开不过三件事:第一项“对数求和”相当于把所有动作(包括陌生菜)的最高分趋势拎出来;第二项是在数据分布里求平均分;两者相减,就是对“数据外动作”与“数据内动作”的评分差收税。α是税率,调大=更保守。

老王最终端出的菜单,全靠“有据可查”的菜撑场面。CQL的论文里也证明了:这种惩罚让学到的Q函数是真实Q函数的一个期望下界——意思是“我宁可少打一点分,也绝不虚打”。对必须安全落地的业务,这种保守是保命符。

min⁡Q α⋅Es∼D[log⁡∑aexp⁡Q(s,a)−Ea∼πβ(a∣s)[Q(s,a)]]+E(s,a,s′)∼D[(r+γmax⁡a′Q(s′,a′)−Q(s,a))2]\displaystyle \min_Q\ \alpha\cdot\mathbb{E}_{s\sim\mathcal{D}}\left[\log\sum_{a}\exp Q(s,a)-\mathbb{E}_{a\sim\pi_{\beta}(a|s)}\left[Q(s,a)\right]\right]+\mathbb{E}_{(s,a,s')\sim\mathcal{D}}\left[\left(r+\gamma\max_{a'}Q(s',a')-Q(s,a)\right)^2\right]
  1. 所有动作的软最大值\log\sum_{a}\exp Q(s,a) 可理解为“对全部动作的预期好评做了一次平滑的取最大值”。它捕捉的是那些本子外的、虚高的分数尖峰。
    log⁡∑aexp⁡Q(s,a)\displaystyle \log\sum_{a}\exp Q(s,a)
  2. 数据内动作的平均分\mathbb{E}_{a\sim\pi_{\beta}(a|s)}\left[Q(s,a)\right] 表示按行为策略(好评本里真实记录的动作分布)求平均好评。它是“有据可查”的基准线。
    Ea∼πβ(a∣s)[Q(s,a)]\displaystyle \mathbb{E}_{a\sim\pi_{\beta}(a|s)}\left[Q(s,a)\right]
  3. 两两相减拿所有动作的软最大值减去数据内平均值。差值越大,说明算法越倾向于给陌生菜打高分,CQL就越要罚。
    log⁡∑aexp⁡Q(s,a)−Ea∼πβ(a∣s)[Q(s,a)]\displaystyle \log\sum_{a}\exp Q(s,a)-\mathbb{E}_{a\sim\pi_{\beta}(a|s)}\left[Q(s,a)\right]
  4. 保守税率\alpha 控制惩罚强度。调大,陌生菜扣分更狠,策略更保守;调小,接近普通RL、高估风险回升。
    α⋅(...)\displaystyle \alpha\cdot(...)
  5. 标准TD损失后半部分保持普通Q学习的拟合能力,确保数据内的菜照常学习、不被误伤。
    (r+γmax⁡a′Q(s′,a′)−Q(s,a))2\displaystyle \left(r+\gamma\max_{a'}Q(s',a')-Q(s,a)\right)^2

隐式Q学习IQL

另一位师弟——务实派厨师小赵,提出了更省事的主张:“我为什么要给没做过的菜打分?不评价不就行了。”小赵的做法是:好评本里有啥我学啥,绝不在本子外做任何幻想——他甚至不在Q更新的公式里写那个危险的max。这就是隐式Q学习(Implicit Q-Learning,IQL)。

IQL把max换成了数据集里真实出现的下一个动作a'。用强化学习的黑话说,这是SARSA式更新而非Q-learning式更新:它只问“本子里实际发生了哪种转移”,而不问“理论上哪个动作最好”。

这里的\ell_{\tau}^{2}叫做expectile损失,是按分位加权的平方误差:

它的微妙之处在于:当τ>0.5时,模型对“实际好评高于预测”的样本(u>0)更敏感,从而学到的是一个偏乐观的分位水平——厨师会记住那些“客人还挺满意”的记录,而忽略极差的评价。

厨师小赵的菜单上永远只有好评本里出现过的菜,他从不研究“没做过的菜会怎样”,因此也就永远不会被虚假的高分吸引。IQL在策略提取阶段同样只搜索数据内动作:用加权行为克隆给数据中表现好的动作分配更高概率,本质上是在说:“本子里的好菜我多做,仅此而已。”

min⁡θ E(s,a,s′)∼D[ℓτ2 ⁣(r+γQθˉ(s′,a′)−Qθ(s,a))]\displaystyle \min_{\theta}\ \mathbb{E}_{(s,a,s')\sim\mathcal{D}}\left[\ell_{\tau}^{2}\!\left(r+\gamma Q_{\bar{\theta}}(s',a')-Q_{\theta}(s,a)\right)\right]
ℓτ2(u)=∣τ−1{u<0}∣⋅u2\displaystyle \ell_{\tau}^{2}(u)=\left|\tau-\mathbb{1}\{u<0\}\right|\cdot u^{2}
  1. 真实转移(s,a,s')\sim\mathcal{D} 表示从静态数据集里取出真实的状态-动作-下一状态三元组。全程不掺杂任何数据集外的想象。
    (s,a,s′)∼D\displaystyle (s,a,s')\sim\mathcal{D}
  2. 目标值r+\gamma Q_{\bar{\theta}}(s',a') 用目标网络对数据集中真实出现的动作a'估值,而不是对所有动作取max。这一步彻底绕开了OOD动作。
    r+γQθˉ(s′,a′)\displaystyle r+\gamma Q_{\bar{\theta}}(s',a')
  3. TD误差u = r+\gamma Q_{\bar{\theta}}(s',a')-Q_{\theta}(s,a) 衡量“实际表现”与“当前预估”的差。
    u=r+γQθˉ(s′,a′)−Qθ(s,a)\displaystyle u = r+\gamma Q_{\bar{\theta}}(s',a')-Q_{\theta}(s,a)
  4. 符号判别\mathbb{1}\{u<0\} 当误差为负(即预测高于实际)时为1,否则为0。
    1{u<0}\displaystyle \mathbb{1}\{u<0\}
  5. 分位权重|\tau-\mathbb{1}\{u<0\}| ——误差为正时权重是τ,误差为负时权重是1-τ。τ>0.5会放大正误差样本的梯度,让Q值学到更高的分位水平。
    ∣τ−1{u<0}∣\displaystyle \left|\tau-\mathbb{1}\{u<0\}\right|

双法对比

现在,让我们把两位厨师的方案摆上砧板对比。

  • 应对OOD的方式:CQL是“显式惩罚”——把陌生的菜先扣分扣到低处;IQL是“隐式回避”——根本不评价陌生的菜。一个硬碰硬,一个绕道走。
  • 计算开销:CQL需要每次更新都对动作空间采样(连续动作域要靠采样近似log-sum-exp),开销较大;IQL不需要任何OOD采样,只对数据内的(s,a,s',a')做回归,更轻量。
  • 数据要求:CQL在数据覆盖广、动作支撑完整的时候,能学到更紧的Q下界,稳健性强;IQL在数据覆盖一般时更从容,因为它压根不看数据外的东西。
  • 性能特点:当数据集质量高、覆盖好,CQL往往能逼近甚至超过IQL的最终性能;当数据稀疏、动作维度高,IQL减少了对OOD的假设,通常更稳。

两个方法的哲学差异也可以从比喻中体会:老王(CQL)是“纪律严明的掌勺人”,他的菜谱保守但下界有保障;小赵(IQL)是“信奉本本主义的老实人”,本子外的世界与他无关。没有绝对优劣,只有匹配场景的聪明选择。

场景选择

选CQL还是IQL,本质上是问:你的“好评本”长什么样,以及你有多怕出错?

  • 连续动作空间,比如机器人关节力矩控制:动作维度高、采样OOD动作的代价大,优先选IQL——它不采样OOD,天然适合高维连续动作。
  • 离散动作空间,比如推荐系统的商品列表:动作有限,可以穷举或精细采样,CQL的惩罚项能精确压低每个陌生商品,选CQL更合适。
  • 数据覆盖度:如果离线数据覆盖了大多数状态-动作组合,CQL能充分利用数据、学到更优策略;如果数据覆盖稀疏、状态枝节很多,IQL更不容易被“数据没覆盖的角落”带偏。
  • 部署约束:如果上线后不容出错(医疗、金融、自动驾驶),CQL的“期望下界”理论保证更有吸引力;如果追求快速迭代、轻量训练,IQL的训练成本更低。

一句话总结:动作空间小、覆盖好、要安全性 → CQL;动作空间大、覆盖差、要效率 → IQL。

超参调优

超参是厨师的调料量,放多放少直接决定菜的口味。

CQL的核心超参是α(惩罚系数)。α太大,Q值被压得太低,策略变得畏手畏脚,数据内的好菜也不敢做;α太小,惩罚形同虚设,外推高估死灰复燃。实践经验是:先在{0.5, 1.0, 2.0, 5.0}这个量级上粗扫,观察“数据内动作的Q值是否仍能保持合理增长”——如果Q值全面萎缩,说明α过大了。

IQL的核心超参是τ(expectile分位)。τ=0.5退化成普通均值回归,最保守;τ越接近1,越关注“表现高于预测”的样本,策略越乐观。实践中τ在0.5~0.9之间取值,常见选择是0.7。经验法则:数据质量高可以调大τ去挖掘潜力,数据噪音大就调小τ求稳。

其余超参沿用标准离线RL流程:学习率建议先用默认的3e-4(Adam)跑通,再微调;batch size一般256起步;目标网络更新频率(如每5000步)保持常规。调参的顺序建议:先固定学习率扫α或τ,确定主旋钮后再动其余细节,避免多个旋钮同时乱拧、分不清是谁的锅。

应用落地

离线RL不是纸上谈兵,在真实业务里,“好评本求生”每天都在上演。

  • 推荐系统:传统的推荐策略上线前要经历昂贵的A/B测试。用CQL,你可以拿历史用户点击/购买日志当好评本,离线训练一个新的排序策略。CQL的保守下界保证“新策略至少不比旧策略差太多”,从而安全地完成策略升级。
  • 机器人决策:机械臂厂商积累了海量的历史示教数据,但不可能让机器人在线瞎试一万次。用IQL从历史轨迹中提取控制策略,尤其适合连续力矩控制——它不查询OOD动作,天然避免机器人做出危险姿势。
  • 大模型对齐:RLHF(基于人类反馈的强化学习)训练过程中,偏好数据是固定的、不会为了模型探索而新增。这正是典型的离线RL场景:用期望分位回归从现有偏好对中提炼“人类更喜欢的回答风格”,IQL在其中已被广泛用作对齐阶段的稳健优化器。

工程上的共同经验是:先做好数据质量校验(动作覆盖度、奖励分布、状态分布漂移),再谈算法调参;上线前用保守策略兜底,观测一段时间后再逐步放开。

AI 应用场景

推荐系统离线策略升级

阶段:离线策略评估与上线

解决的问题:新推荐策略直接上线可能因“过度自信”推荐冷门内容(OOD动作),导致用户流失。CQL通过对未出现过的曝光内容施加Q值惩罚,使新策略在离线日志上评估时就被“泼了冷水”,只敢推荐日志中被验证过的好内容。

具体案例:某电商平台积累了100亿条用户-商品交互日志。算法团队用CQL训练新的排序模型,在离线回放中Q值下界比旧策略高8%,上线后CTR提升5%且无显著差评波动——保守策略撑过了灰度期。

机器人历史数据控制学习

阶段:策略学习与部署

解决的问题:机器人直接在线强化学习会让机械臂在调试期疯狂乱动,可能损坏设备。IQL从历史示教轨迹中学习Q函数,因不查询OOD动作,生成的策略天然倾向于在数据支撑范围内选择安全动作。

具体案例:某仓储机器人团队记录了一周人工拣选动作数据,用IQL训练拣选策略。由于动作空间是7自由度连续力矩,CQL的OOD采样会显著拖慢训练,IQL训练速度快2倍且成功率达到98%。

大模型RLHF静态偏好对齐

阶段:对齐微调

解决的问题:RLHF中偏好数据集是固定收集的,模型每次采样新回复都相当于“探索OOD动作”,在线RL会导致奖励模型被钻空子(reward hacking)。IQL的expectile回归只在偏好数据分布内学习,避免模型输出过度偏离人类偏好分布。

具体案例:某大模型团队用IQL替代PPO做RLHF,训练稳定性显著提升,Alignment评估分数提升11%,且不需要在线采样大量回复来更新策略,训练成本降低约30%。

Python 演示

python64 行
# -*- coding: utf-8 -*-# 离线强化学习中的CQL与IQL:一维动作空间外推对比演示import numpy as np rng = np.random.default_rng(42) def true_reward(a):    # 真实好评度: 数据区内近似上升, 数据区外奖励崩塌    trend = 0.8 * a - 0.2    ood_pen = 5.0 * np.clip(a - 0.7, 0, None) ** 2    return np.clip(trend, -0.2, None) - ood_pen # 1) 离线数据集: 行为策略只覆盖动作 [0.3, 0.7]N = 500s = rng.uniform(0, 1, N)a = rng.uniform(0.3, 0.7, N)r = true_reward(a) + 0.03 * rng.standard_normal(N) def phi(s, a):    # 特征工程: 用二次多项式近似Q函数    return np.stack([np.ones_like(s), s, a, s * a, a * a], axis=-1) X = phi(s, a) def fit_q(X, y, lr=0.05, epochs=600):    # 最小二乘梯度下降拟合Q值    theta = np.zeros(X.shape[1])    for _ in range(epochs):        grad = X.T @ (X @ theta - y) / len(y)        theta -= lr * grad    return theta # 2) 标准RL: 直接对离线数据回归, 在OOD处存在外推风险theta_rl = fit_q(X, r) # 3) CQL: 加入OOD动作的惩罚样本来压低未知动作估值a_ood = np.array([0.05, 0.12, 0.88, 0.95])X_p = phi(np.full(4, 0.5), a_ood)y_p = np.full(4, -0.5)                    # 惩罚目标: 负分theta_cql = fit_q(np.vstack([X, X_p]), np.concatenate([r, y_p])) # 4) IQL: expectile回归, 只对数据内样本按分位加权def iql_grad(theta, tau):    pred = X @ theta    res = r - pred    w = np.where(res > 0, tau, 1 - tau)   # 正误差样本权重tau    return X.T @ (w * (pred - r)) / len(r) tau = 0.7theta_iql = np.zeros(X.shape[1])lr = 0.05for _ in range(600):    theta_iql -= lr * iql_grad(theta_iql, tau) # 5) 在数据内与OOD点对比三个Q值a_test = np.array([0.05, 0.4, 0.6, 0.95])s_test = np.full(4, 0.5)P = phi(s_test, a_test)print("动作  真实奖励   标准RL      CQL       IQL")for i, a0 in enumerate(a_test):    q1 = P[i] @ theta_rl    q2 = P[i] @ theta_cql    q3 = P[i] @ theta_iql    print(f"{a0:4.2f}  {true_reward(a0):+.3f}   {q1:+.3f}   {q2:+.3f}   {q3:+.3f}")
目的:用纯NumPy实现一个一维离线RL对比实验,在OOD点上直观展示“标准RL外推高估、CQL惩罚压低、IQL只学数据区”的差异。
  1. a = rng.uniform(0.3, 0.7, N)行为策略只覆盖数据区,制造“好评本没记录”的OOD区域。
  2. def phi(s, a)把状态和动作映射为二次多项式特征,让Q函数可拟合、可外推。
  3. theta_rl = fit_q(X, r)标准RL不加任何保护,直接用离线数据回归,OOD处靠外推。
  4. a_ood = np.array([0.05, 0.12, 0.88, 0.95])构造OOD动作,CQL将把它们的Q值目标设为负分。
  5. theta_cql = fit_q(np.vstack([X, X_p]), ...)把OOD惩罚样本拼进训练集,模拟CQL的保守惩罚。
  6. w = np.where(res > 0, tau, 1 - tau)IQL的核心:实际好评高于预测的样本权重为tau,否则为1-tau,实现expectile分位回归。
  7. a_test = np.array([0.05, 0.4, 0.6, 0.95])测试点同时覆盖数据内(0.4/0.6)和OOD区(0.05/0.95),便于对比。

常见误区

误区“离线RL不就是把在线强化学习的数据加载方式改成读文件吗?反正都是那套Q-learning,数据从哪来不都一样。”

正解差别天壤之别。在线RL像个能随时试菜的厨师,做错了可以立刻改;离线RL像厨师被关进小黑屋,只能翻好评本。普通RL的max操作会选中本子外的动作,把虚高分当真,这在在线场景会被环境纠正,在离线场景只会越滚越大。所以离线RL的核心难题不是“数据从哪读”,而是“如何避免外推高估”。

为何常见:初学者先学在线RL,形成了"Q-learning=max+TD"的固定思维,没意识到max在无交互环境下会自我欺骗。

误区“CQL不是要保守吗?那把`α`调到很大,把所有陌生动作都压到负无穷,不就不会高估了?”

正解惩罚过猛会把数据内动作的Q值也一起拖垮。可以想象:如果老王对每道陌生菜都扣100分,他可能连本子里有记录的“红烧肉”都不敢做了,因为Q值整体偏低导致策略失去区分度。CQL的惩罚本质是“让陌生菜比已知好菜低”,而不是“让所有菜都惨”。α过大时,Q函数全面萎缩,策略退化成随机行为。

为何常见:人们容易把“保守”理解成“越极端越好”,而忽略了CQL的目的是在不误伤数据内学习的前提下压制OOD。

误区“IQL不查询OOD动作,所以OOD区随便怎么样都行,Q网络在OOD处的输出我根本不用管。”

正解IQL的更新确实不查询OOD,但它学到的Q函数在OOD处依然会有外推值——只是不被策略使用。策略提取阶段,它只在数据支撑内选择动作,这才是“避免OOD”的真正含义。如果数据集覆盖度极差、或状态分布漂移,Q函数在数据区内也可能失真。IQL降低了OOD风险,但没有消除所有分布偏移问题。

为何常见:看到“IQL解决OOD问题”的简化表述,就以为OOD区域完全失效了,其实它只是“战略上无视”,并非“物理上隔离”。

误区“攒了1个TB的历史日志,数据量这么大,训练出来的离线RL策略肯定比小数据集强。”

正解数据的覆盖度和质量比体量更重要。如果你的好评本有十万条“西红柿炒蛋”记录,却只有一条“麻婆豆腐”,模型对前者的估值会很准,对后者依然接近OOD——还是会外推。离线RL提升的关键是让行为策略覆盖更多“值得做”的动作,并在奖励标注上保持一致性,盲目堆数据只会让模型更坚定地学习旧策略的偏见。

为何常见:受监督学习思维影响,默认“数据量=性能”,忽略了强化学习里分布覆盖和探索-利用平衡的特殊性。

面试题

Q1. 离线强化学习与在线强化学习最核心的区别是什么?

单选题 · easy

  • A.只有静态数据不能在线交互← 正确答案
  • B.使用更大的神经网络结构
  • C.完全不需要设计奖励函数
  • D.离线策略效果一定更优秀

答案:A。离线RL的最大特点是没有环境交互,只有固定数据集。它像厨师翻旧好评本,不能试菜纠错,因此引入外推高估问题。B是工程细节而非核心区别,C错误(离线仍需奖励),D是错误判断——离线不一定更优,只是更安全可控。

Q2. CQL的“保守”策略主要针对什么?

单选题 · easy

  • A.降低数据内动作的评分
  • B.压低分布外动作的估值← 正确答案
  • C.缩小神经网络模型的规模
  • D.降低参数更新的学习率

答案:B。CQL通过“所有动作软最大值 − 数据内平均值”的惩罚项,专门压低数据分布之外的OOD动作的Q值。它不刻意压低数据内动作(A错),不改变网络规模(C错),也不直接调学习率(D错)。

Q3. IQL用什么回归方式替代标准TD中的max操作?

单选题 · easy

  • A.简单最小二乘回归
  • B.expectile期望分位回归← 正确答案
  • C.经典逻辑回归分类
  • D.线性岭回归正则化

答案:B。IQL的核心是用expectile回归对TD误差做分位加权,用数据中真实出现的下一步动作替换max。最小二乘(A)和岭回归(D)没有分位加权机制,逻辑回归(C)用于分类而非Q值回归。

Q4. 标准TD学习中max_{a'}Q(s',a')在离线场景的隐患是什么?

单选题 · mid

  • A.模型参数更新速度过于缓慢
  • B.选中OOD动作并传递虚高估值← 正确答案
  • C.梯度信息直接变为全零
  • D.训练数据内存占用大幅升高

答案:B。max会从所有候选动作中挑最高分,而候选里包含数据集外的OOD动作。这个动作的Q值是脑补出来的虚高值,被max选中后会当作“真实高回报”回传给当前状态,造成自举误差放大。A/C/D都与max操作的内存或速度无关。

Q5. CQL中惩罚系数α调得过大可能导致的后果是什么?

单选题 · mid

  • A.学习策略变得过度激进冒险
  • B.Q值整体偏低策略过度保守← 正确答案
  • C.训练收敛速度大幅提升
  • D.数据覆盖范围自动扩大

答案:B。α过大会让CQL把所有动作的Q值都压得很低,包括数据内原本值得做的好动作,策略慑于低估值而不敢行动。如果策略变激进(A)说明α偏小、惩罚失效,C/D与α大小无直接关系。

Q6. IQL中设置τ=0.8的直观含义是什么?

单选题 · mid

  • A.忽略八成高回报的训练样本
  • B.更关注实际好评高于预测的样本← 正确答案
  • C.只使用数据集里八成的数据
  • D.完全等价于取最大值操作

答案:B。expectile回归中,正残差样本(实际好评高于预测)的权重是τ,负残差权重是1-τ。τ=0.8意味着模型分配更大梯度给“实际表现超预期”的样本,从而学到更高分位的乐观估计,但不等于max(D错),与采样比例无关(A/C错)。

Q7. 以下哪些属于离线RL中OOD动作带来的危害?

多选题 · mid

  • A.Q值在外推区域出现虚高← 正确答案
  • B.策略被虚假高分错误吸引← 正确答案
  • C.自举误差被反复放大← 正确答案
  • D.离线数据集会自动扩充

答案:ABC。OOD动作的Q值靠模型外推,容易虚高(A);策略按Q值选动作,被虚高分吸引到危险动作(B);虚高分通过TD自举逐步扩散到更多状态(C)。D无中生有——离线数据集是静态的,不会自动扩充。

Q8. 关于CQL与IQL的区别,以下说法正确的有哪些?

多选题 · mid

  • A.CQL显式惩罚分布外动作← 正确答案
  • B.IQL完全不查询分布外动作← 正确答案
  • C.CQL需对动作空间进行采样← 正确答案
  • D.IQL必须在线环境进行交互

答案:ABC。CQL通过惩罚项显式压低OOD动作(A对),更新时需对动作采样来近似log-sum-exp(C对);IQL用SARSA式更新,只使用数据中真实出现的动作(B对)。IQL不需要在线交互,它正是为离线设计的(D错)。

Q9. 连续大动作空间下IQL比CQL更受青睐的主要原因是什么?

单选题 · hard

  • A.无需对OOD动作进行采样← 正确答案
  • B.神经网络结构设计更简单
  • C.仅支持离散动作空间
  • D.训练速度必定成倍提升

答案:A。CQL需要对整个动作空间采样近似log-sum-exp,连续大动作空间下采样无法覆盖高维区域、开销巨大。IQL不做任何OOD采样,只对数据内转移回归,训练效率更高、数值更稳。B不是IQL特有能力,C和D表述错误。

Q10. 离线RL中缓解外推高估的工程手段包括哪些?

多选题 · extreme

  • A.采用CQL保守惩罚← 正确答案
  • B.采用IQL避免查询← 正确答案
  • C.行为克隆保守策略← 正确答案
  • D.无限扩充训练数据

答案:ABC。CQL(A)和IQL(B)是两类主流解法;行为克隆只在数据分布内模仿、不做动作外推,也是一种保守兜底方案(C对)。D“无限扩充数据”不现实,且若增量数据分布不变、仍无法解决OOD覆盖问题(D错)。