假设你刚拿到驾照,第二天就要去开出租车,但驾校规定:你只能在不能碰车的情况下接单。你手里只有老司机老王一整年的行车日志,每一条都写着:“某时某刻,路况如何,老王做了什么操作,得到什么结果,车到了哪条路。” 你不可能把车开上街,唯一的老师就是这本日志。离线强化学习(Offline RL)就是在这种“只有日志、不许试驾”的条件下学习驾驶策略的机器学习方法。面对这本厚厚的日志,三位风格迥异的教练给出了三种教学方法:保守派 CQL 说“日志里没出现过的操作,一律先扣分”;务实派 IQL 说“不去想没试过的操作,只提炼成功片段”;剧本派 Decision Transformer 说“把成功行程写成剧本,照着演”。你该选谁?读完这篇文章,你会从原理、代码到应用,彻底搞懂它们各自的门道。
理解这三大算法,你就能在推荐、机器人、医疗等无法在线试错的领域,让 AI 从历史数据中安全地学会决策,这是离线强化学习的核心工程价值。
目录
可视化演示
展示区块链Layer 2扩容方案的工作原理,包括Layer 1主链与Layer 2的交互流程、Rollup批量提交与状态通道机制,直观理解链下扩容的核心优势。
本节配有交互动效(进入视口后自动加载,约 3KB)。
Layer 2扩容方案 Layer 1:主链负责安全与最终确认,吞吐有限 Layer 2:链下执行交易,批量提交至主链 状态通道:双方链下交互,仅最终状态上链 TPS_L2 >> TPS_L1; Cost_L2 << Cost_L1 Layer 2实现高吞吐与低成本的链下扩容
离线学习基础:一本不能试驾的行车日志
假设你刚拿到驾照,第二天就要去开出租车,但驾校规定:你只能在不能碰车的情况下接单。你手里只有老司机老王一整年的行车日志,每一条都写着:“某时某刻,路况如何,老王做了什么操作,得到什么结果,车到了哪条路。”你不可能把车开上街,唯一的老师就是这本日志。离线强化学习(Offline RL)就是在这种“只有日志、不许试驾”的条件下学习驾驶策略的机器学习方法。
在强化学习的世界里,“日志”叫作离线数据集 D;“记录老王驾驶习惯的策略”叫作行为策略,记作 π_β;每条日志是一个转移四元组。与在线强化学习“边开边学、错了重来”不同,离线 RL 的数据是历史遗留的、固定不变的。推荐系统的用户点击日志、机器人的遥操作示教、自动驾驶的路测记录,都是典型的离线数据来源。
把数据集的产生过程写成数学语言,就是这个公式——它说明你手里的每一条日志,都是由“行为策略负责做决定、环境负责给结果”共同完成的:
翻着这本日志,你要记住一件事:它是“单程票”。你学完之后不能像在线强化学习那样重新上车验证、修正,所有的决策依据都来自这些早已发生的记录。这正是离线 RL 与在线 RL 之间最本质的分界线。
- 数据集 D整本行车日志,存放着一条条“路况—操作—奖励—新路况”的四元组记录。
- 行为策略采样日志中的操作 a_t 是老司机老王根据策略 π_β 做出的选择。
- 环境转移操作之后会发生什么,由环境动态 P 决定,得到新路况 s_{t+1} 和奖励 r_t。
- 固定不变数据集采集后不会更新,任何新策略都无法回头给日志补充内容。
分布偏移风险:日志没写过的郊区小路
日志里 99% 的路况都有记录,唯独城东有一段郊区小路,老王从没开过。你自学时“感觉”那条路能抄近路,结果开过去全是泥坑。为什么?因为你在“猜”一个从没被验证过的操作的价值。离线强化学习里,这种出现在行为策略数据覆盖范围之外的(状态,动作)组合,叫作 OOD 动作。
当策略试图评估 OOD 动作的价值时,价值函数只能靠外推。数据里没有这片区域的支撑,网络的输出就是毫无根据的“瞎猜”,这种误差叫作外推误差。它会造成最危险的后果——价值高估:智能体以为某个从未尝试过的动作价值极高,于是信心满满地执行,实际却一败涂地。
标准 Q-learning 的错误根源写在一个更新式里,它用 max 来选择“下一步最好的动作”:
当数据集覆盖不全时,上述 max 会让 Q 值像滚雪球一样往高处飘。这正是离线 RL 所有复杂设计试图解决的核心矛盾:如何在不与真实环境交互的前提下,阻止对陌生路段的盲目自信。
- 当前估计Q(s,a) 表示在路况 s 下执行操作 a 的长期价值估计。
- 立即奖励执行操作后,环境立刻给出的回报 r。
- max 选择对新路况 s' 比较所有动作的 Q 并选最大——这是“幻觉”的源头。
- 折扣因子γ 让远期回报打折,γ 越接近 1 越看重长远价值。
CQL保守学习:保守教练的扣分表
保守派教练拿到日志后,先做一张“扣分表”:凡是日志里出现过的操作,按实际表现打分;凡是日志里根本没出现过的操作,一律先扣到最低分。“没见过,就当有危险”——简单的原则,却直击价值高估的命门。
这个思想对应 CQL(Conservative Q-Learning,保守 Q 学习)。它在标准 Q 学习的目标之外,额外加一项正则:压低任意“动作分布”(包含大量 OOD 动作)下的 Q 期望,同时抬高“日志内动作”的 Q 期望。两项相减,OOD 动作的价值被明显压低,而数据内动作的价值被保住。
CQL 的训练损失写作:
这张扣分表的效果是:当策略想挑 Q 值最高的动作时,它几乎不会选到日志外的高危操作,Q 值也成了真实价值的一个“保守下界”。保守的代价是可能会绕一点远路,但至少不会翻车。
- 第一项期望对状态来自日志、动作来自任意分布 μ(含 OOD 动作)的 Q 期望,α 决定扣分力度。
- 第二项期望对日志内真实出现过的 (s,a) 组合求 Q 期望,作为“加分项”防止所有 Q 被无脑压低。
- 两项相减扣分与加分抵消后,净效果是“压低陌生、托起熟悉”。
- 贝尔曼项标准时序差分损失,确保 Q 估计不偏离真实奖励信号。
IQL隐式学习:务实教练的上分位经验
务实派教练翻开日志,只做一件事:把老王“这样做成功了”的片段圈出来反复研究。至于老王没试过的操作,他看都不看。“研究没发生的事情毫无意义”——这就是 IQL(Implicit Q-Learning,隐式 Q 学习)的哲学:不查询 OOD 动作,只从数据里提取“有利动作”的价值。
如何定义“有利动作”?IQL 用一个叫 expectile 回归的数学工具,训练状态价值函数 V(s),让它趋于“数据内动作 Q 值”的高分位。比如 τ=0.7,V(s) 会逼近数据中动作价值的第 70 分位——比平均高,但不是最高。这样 V 代表了“这个状态下做得还可以的水平”。
对应的损失函数为:
得到 V 之后,Q 的更新不再使用 max,而是用 r+γV(s') 替代,从根源上躲开了对 OOD 动作的查询。务实教练不幻想花式入库,也不研究没试过的动作,只把日志里“做得还可以”的水平学到手。
- 分位参数 τ控制 V 偏向高价值动作的程度,τ 越大 V 越接近数据中最好的动作。
- 指示函数当 Q(s,a) 低于 V(s) 时为 1,否则为 0,决定损失来自上方还是下方。
- 平方差距Q 与 V 的差平方,保证损失可导且对大偏差更敏感。
- 不对称权重τ>0.5 时,上方样本权重更大,迫使 V 向高分位移动。
决策Transformer:剧本派的目标条件重演
第三位教练更另类:他既不评估价值,也不研究“为什么”,而是把老王的成功行程拍成剧本。每一行台词是“我此时想赚多少钱(剩余目标回报)|当前路况|老王怎么操作”。训练时让学员看前面的台词,预测下一句台词(该做的操作)。正式演出时,先设置一个“今天要赚 500 块”的目标,模型就按剧本一路演下去。
这就是 Decision Transformer(决策 Transformer,DT)的核心:把强化学习变成条件序列建模。它把轨迹切成一连串三元组 (R_t, s_t, a_t),其中 R_t 是从 t 时刻起到结束还能拿到的折现回报(return-to-go)。模型用类似 GPT 的 Transformer 结构,自回归地预测当前动作。
预测公式:
剧本派的长处是稳定、可控、适合生成;短处是它本质是“条件模仿”,如果目标回报设得远超日志水平,剧本就会开始“硬编”。想让 AI 开得更好,得给它看更好的戏。
- 目标回报R_t 表示未来还能拿到的折现总回报,一个随时间缩水的“剩余任务目标”。
- 历史条件模型能看到从开始到当前的所有回报、状态和动作,构成完整上下文。
- 自回归预测当前动作 a_t 从条件分布中采样得到。
- 监督训练用日志中的真实动作做标签,最小化动作预测误差。
算法横向对比:选教练的智慧
三位教练,三种风格:保守派谨慎、务实派高效、剧本派可控。选谁,取决于你的日志质量与任务目标。CQL 适合日志覆盖广但有噪声的数据;IQL 适合数据质量尚可但覆盖不均的数据——它天然只关注“有利路段”;DT 适合奖励目标清晰、需要条件式生成完整轨迹的任务。
它们的核心差异在于如何处理分布偏移:CQL 显式惩罚 OOD 动作的 Q 值;IQL 通过分位数回归绕开对 OOD 动作的查询;DT 则根本不建立价值函数,用条件序列建模规避 Q 外推,代价是更重的 Transformer 训练开销与数据连贯性要求。
一个直观的性质总结为不等式:
选教练的智慧在于匹配:数据覆盖面广、噪声大就选保守派;数据好但覆盖窄就选务实派;要生成可控轨迹就选剧本派。没有最好,只有最合适。
- CQL 估计经过惩罚后的 Q 值,是真实价值的保守下界。
- 真实最优理论上能达到的最优动作价值,是唯一的“标尺”。
- 标准估计直接用 max 备份学出的 Q,因外推误差往往偏高。
- 不等式含义CQL 宁可低估也不高估,而低估在离线场景是可接受的错误方向。
工程实现要点:驾校的排课与验收
定好教练后,驾校还得排课表和验收标准。离线 RL 的工程链路与此惊人一致:先清洗日志(数据预处理),再设计训练流程(网络结构与超参),最后模拟考试(离线评估)。任何一环偷懒,学员都会在真实路上出问题。
数据预处理:观测归一化(不同量纲的速度、位置),奖励缩放与截断(不同系统的打分习惯),轨迹过滤(剔除失败或噪声大的 episode)。网络结构:CQL/IQL 用标准 MLP 的 Q 网络/V 网络加 target network;DT 用 GPT 式 Transformer,需要位置编码和固定长度的上下文窗口 K。超参数:CQL 的 α、IQL 的 τ、DT 的 return-to-go 分桶与上下文长度。
评估是离线 RL 最反直觉的一环——你无法直接上线试错,只能用基准分数做相对的横向比较。最常用的 D4RL 归一化分数:
排课表(预处理)、练法(训练)、验收(评估)三位一体,配合 D4RL 等标准化基准,离线强化学习才能从论文走向工程。
- 智能体回报被评估策略在环境中跑出的平均折扣回报。
- 随机基线纯随机策略的回报,作为最差参考线。
- 专家上限专家策略的回报,作为最好参考线。
- 百分制归一分子是智能体超越随机的幅度,除以专家与随机的差距,再乘 100。
产业应用图谱:车队的大数据传承
离线 RL 之所以火,是因为现实中大量场景“试错极贵”:推荐系统拿用户当小白鼠会流失用户,机器人摔一次就是真金白银,医疗方案出错人命关天。但这些行业最不缺的,就是历史日志。把日志喂给三个算法,就能把一家公司积累的经验,复制成无数个不会翻车的新司机。
适用离线 RL 的判据有三条:有大量历史决策日志、实时试错成本高、策略需要持续优化。推荐系统用用户行为日志学点击与转化策略;机器人用遥操作示教数据学抓取技能;医疗依据历史诊疗记录辅助决策;自动驾驶基于路测数据学习驾驶行为。
这些应用背后有一个共同的数学约束——策略的支持集不能超出行为策略的覆盖范围:
离线强化学习让历史的车轮变成数据,让数据的经验变成决策。无论你是做推荐、机器人还是自动驾驶,这套“读日志学开车”的逻辑,都会是落地 AI 决策能力的关键一环。
- 优化目标在数据集呈现的状态上,让策略选择的动作价值总和最大。
- 策略支持集策略 π 在某个状态下所有可能选择的动作集合。
- 行为策略覆盖行为策略 π_β 在该状态下实际出现(被记录过)的动作集合。
- 子集约束π 只能选择 π_β 覆盖过的动作,从根上杜绝分布偏移。
AI 应用场景
推荐系统离线策略优化
阶段:策略优化(离线学习)
解决的问题:在线 A/B 实验成本高、试错伤害用户体验。传统方式只能靠人工规则或在线探索调参,无法安全地利用海量历史行为日志。IQL 可从用户点击与转化日志中提取“有利动作”价值,在不上线试错的前提下优化推荐策略。
具体案例:某电商平台积累了数亿条“曝光—点击—成交”日志,用 IQL(τ=0.8)训练推荐策略,把高价值交互(成交)权重拉高,离线评估点击率提升 5%,上线后无风险平稳放量。
机器人操作技能学习
阶段:数据驱动策略学习
解决的问题:真人遥操作示教成本高,机器人试错可能损坏设备与工件。CQL 的“陌生操作扣分”机制正好适合从示教数据中学保守策略,避免 OOD 动作导致夹爪碰撞或奇异位形。
具体案例:某实验室用 2000 条遥操作抓取轨迹训练双臂机器人,CQL 将高危急停动作的 Q 值压低 40%,抓取成功率从行为克隆的 71% 提升到 86%,且测试中从未出现危险位形。
自动驾驶决策模型训练
阶段:离线决策生成
解决的问题:真实路测试错成本与安全风险极高,无法大规模在线学习。DT 把路测日志组织成 (return-to-go, 状态,动作) 序列,以目标车速、目标路线为条件生成驾驶行为,适合离线训练与条件可控生成。
具体案例:自动驾驶公司用 100 万公里路测数据训练 DT 决策模型做直行、变道与跟车决策,测试中能以指定巡航车速生成平滑轨迹,变道决策与人类驾驶员一致性达 92%。
Python 演示
import numpy as np N = 10GOAL = N - 1GAMMA = 0.9LR = 0.1EP = 200ACT = [1, 0, -1] # 动作: 0=右, 1=停, 2=左rng = np.random.default_rng(0) # 行为策略生成离线数据: 一半向右一半向左, 起点偶尔停def gen(n=600): D = [] for _ in range(n): s = 0 for _ in range(30): a = 0 if rng.random() < 0.5 else 2 if s == 0 and rng.random() < 0.2: a = 1 s2 = min(max(s + ACT[a], 0), N - 1) r = 1.0 if s2 == GOAL else 0.0 D.append((s, a, r, s2, int(s2 == GOAL))) if s2 == GOAL: break s = s2 return D D = gen() # 标准离线 Q 学习: max 备份是高估根源def td(Q): for _ in range(EP): for s, a, r, s2, d in D: Q[s, a] += LR * (r + GAMMA * Q[s2].max() * (1 - d) - Q[s, a]) # CQL 简化版: 对高于均值的 Q(往往是OOD动作)做惩罚def cql(Q, lam=1.0): for _ in range(EP): for s, a, r, s2, d in D: tar = r + GAMMA * Q[s2].max() * (1 - d) Q[s, a] += LR * (tar - Q[s, a] + lam * (Q[s].mean() - Q[s, a])) # IQL: 用 expectile 回归学 V, 用 V 替代 max 更新 Qdef iql(Q, V, tau=0.7): for _ in range(EP): for s, a, r, s2, d in D: u = Q[s, a] - V[s] V[s] += LR * (tau if u > 0 else 1 - tau) * u for s, a, r, s2, d in D: Q[s, a] += LR * (r + GAMMA * V[s2] * (1 - d) - Q[s, a]) # 优势加权行为克隆: IQL 的策略提取def awr(Q, V, beta=3.0): P = np.zeros((N, 3)) for s, a, r, s2, d in D: P[s, a] += np.exp(beta * (Q[s, a] - V[s])) P = P / np.maximum(P.sum(axis=1, keepdims=True), 1) return P # 评估: 从起点 rollout, 返回折扣总回报def run(Q=None, P=None): s, total = 0, 0.0 for t in range(20): a = int(np.argmax(Q[s])) if P is None else int(np.argmax(P[s])) s2 = min(max(s + ACT[a], 0), N - 1) r = 1.0 if s2 == GOAL else 0.0 total += r * GAMMA ** t if s2 == GOAL: return total s = s2 return total Q1 = np.ones((N, 3)); td(Q1)Q2 = np.ones((N, 3)); cql(Q2)Q3 = np.ones((N, 3)); V = np.zeros(N); iql(Q3, V); P = awr(Q3, V) print('标准离线Q:', round(run(Q1), 3))print('CQL :', round(run(Q2), 3))print('IQL+AWR :', round(run(Q3, P), 3)) # DT: 将轨迹转成 return-to-go 序列def to_rtg(traj): seq, g = [], 0.0 for s, a, r, s2, d in reversed(traj): g = r + GAMMA * g seq.append((s, a, round(g, 2))) return list(reversed(seq)) demo = [(i, 0, 0.0, i + 1, 0) for i in range(8)] + [(8, 0, 1.0, 9, 1)]print('RTG序列示例:', to_rtg(demo)[:4])
a = 0 if rng.random() < 0.5 else 2行为策略以一半概率向右、一半概率向左,制造“平庸但可学习”的离线数据if s == 0 and rng.random() < 0.2: a = 1让“停”这个动作只在起点被记录,其余状态成为 OOD 动作Q[s, a] += LR * (r + GAMMA * Q[s2].max() * (1 - d) - Q[s, a])标准离线 Q 的贝尔曼更新,max 是高估隐患Q[s, a] += LR * (tar - Q[s, a] + lam * (Q[s].mean() - Q[s, a]))CQL 惩罚项:高于均值的 Q(往往是没见过的动作)被压低u = Q[s, a] - V[s]IQL 计算动作 Q 与状态价值 V 的差,作为“有利程度”信号V[s] += LR * (tau if u > 0 else 1 - tau) * uexpectile 不对称更新,τ>0.5 时 V 偏向有利动作Q[s, a] += LR * (r + GAMMA * V[s2] * (1 - d) - Q[s, a])IQL 用 V 替代 max,绕开 OOD 查询P[s, a] += np.exp(beta * (Q[s, a] - V[s]))优势加权克隆:只提高数据中有利动作的概率Q1 = np.ones((N, 3)); td(Q1)乐观初始化模拟网络初始噪声,让 OOD 动作的 Q 保持高位total += r * GAMMA ** t折扣回报评估,到达目标即返回
常见误区
误区离线强化学习不就是把专家的日志数据拿来训练,模仿专家的操作吗?跟行为克隆(Behavior Cloning)有什么区别?为什么要搞 CQL/IQL 这么复杂?
正解行为克隆只做“输入状态→输出日志里的动作”的监督学习,它永远无法超越行为策略,数据噪声大时会学到平庸甚至有害的策略。离线 RL 从数据中估计价值、优化策略,能做出比行为策略更优的决策。好比照抄老司机的操作是“背台词”,而离线 RL 是理解“为什么这样开能赚钱”。
为何常见:两者都用静态数据集做监督式训练,表面形式高度相似,初学者很容易把“模仿”和“从数据中优化价值”混为一谈。
误区既然 CQL 要压低 Q 值,那学到的 Q 值越低越好,策略越保守越安全。直接把所有动作的 Q 都压到很小不就行了?
正解CQL 压低的是“日志外动作”的 Q 值,对日志内动作反而会抬升,目标是得到真实 Q 的保守下界而非整体打折。公式里第二项 E_{(s,a)~D}[Q(s,a)] 正是为了防止无脑压低。盲目压低会让策略畏手畏脚,连数据里稳妥的路线都不敢走。
为何常见:只记住了“保守”和“压低”两个关键词,忽略了 CQL 正则项中“压低陌生、托起熟悉”的平衡结构。
误区行为策略在线采集数据时顺便用标准 Q-learning 训练 Q 网络,把训练好的网络和数据一起保存下来,不就是离线 RL 了吗?
正解标准 Q-learning 的 max 算子会对 OOD 动作外推产生高估,直接离线用会崩溃。离线 RL 必须加保守机制——要么像 CQL 惩罚 OOD 的 Q,要么像 IQL 用分位数回避 OOD 查询,要么像 DT 不建价值函数。日志里没写过的郊区小路,标准方法只会“想当然”地以为能抄近路。
为何常见:在线 DQN 在数据充足时工作良好,初学者容易忽视“数据覆盖率”这一前提,误以为网络参数可以直接迁移到离线场景。
误区Decision Transformer 把强化学习变成了监督学习,所以它不可能具备超越行为策略的能力,也没有任何“强化”可言。
正解DT 以 return-to-go 为条件做序列建模,推理时给出更高的目标回报就能生成超出数据集平均水平的轨迹,具备一定的外推能力。但它本质仍是条件模仿,外推上限受数据分布限制,需要与保守方法结合理解。剧本派教练演的剧本来自老王的经历,但给个更高目标也能发挥出更好的表现——前提是剧本里有素材。
为何常见:只看“监督学习外壳”,忽视了“以目标回报为条件”这一关键设计,而条件生成恰恰是它可以外推的根源。
面试题
Q1. 离线强化学习与在线强化学习最本质的区别是?
- A.离线不用神经网络,在线使用神经网络
- B.离线从固定数据集学习,不与环境交互采新数据← 正确答案
- C.离线只学策略不学价值,在线两者都学
- D.离线仅支持离散动作,在线支持连续动作
答案:B。离线 RL 的“无交互试错”是最本质区别。网络结构、价值函数、动作空间都不是离线与在线的分界线;离线同样可以用神经网络、学价值函数、处理连续动作。好比学徒不能上路试驾,只能翻日志。
Q2. 离线强化学习中“OOD 动作”一般指?
- A.日志中可被反复验证的高频动作
- B.与环境在线交互时随机采样的动作
- C.未被行为策略数据覆盖区域出现的动作← 正确答案
- D.历史上曾导致严重事故的错误动作
答案:C。OOD 即 out-of-distribution,指没有被行为策略记录过的(状态,动作)组合,比如日志中从没出现过的“郊区小路”。它是价值高估的温床,与动作是否高频、是否随机、是否曾出事故无关。
Q3. Decision Transformer 将强化学习转化为?
- A.一步步迭代求解贝尔曼方程
- B.以目标回报为条件的序列建模任务← 正确答案
- C.用策略梯度搜索最优策略
- D.以蒙特卡洛树搜索遍历状态
答案:B。DT 把轨迹组织成 (R_t, s_t, a_t) 三元组序列,用 Transformer 自回归预测动作,目标是条件序列建模而非值迭代、策略梯度或树搜索。它像剧本派教练,只学“目标—状态—动作”的台词语序。
Q4. 标准 Q 学习直接用于固定数据集,最典型的问题是?
- A.训练数据量不足导致过拟合
- B.对数据外动作产生价值高估← 正确答案
- C.神经网络无法拟合价值函数
- D.奖励信号衰减导致无法收敛
答案:B。标准 Q 学习更新式中的 max 算子会对 OOD 动作外推,产生虚高的价值估计,诱导策略选择日志外的危险操作。这不是过拟合、网络能力或奖励衰减问题,而是“对陌生路段盲目自信”的结构性缺陷。
Q5. CQL 抑制 OOD 动作价值高估的关键手段是?
- A.把折扣因子降低到接近零
- B.压低陌生动作Q并抬升熟悉动作Q← 正确答案
- C.用随机策略替代所有 Q 表估计
- D.只更新状态价值不更新动作价值
答案:B。CQL 的损失包含两项:压低任意分布(含 OOD)动作的 Q,同时抬升数据内动作的 Q。两项相减实现对陌生动作“扣分”、对熟悉动作“加分”。降低折扣因子、随机化策略或只学 V 都不是 CQL 的做法。
Q6. IQL 中参数 τ 设为 0.7 的含义是?
- A.价值函数偏向数据内有利动作的高分位← 正确答案
- B.学习率按 0.7 的比率逐轮衰减
- C.折扣因子从默认值改为 0.7
- D.探索噪声的方差固定为 0.7
答案:A。τ 是 expectile 回归的分位参数。τ>0.5 时,V(s) 被推向数据内动作 Q 值的高分位(第 70 分位),即“只学有利动作的水平”。它不是学习率、折扣因子或探索噪声。
Q7. 关于离线 RL 数据质量与数量,下列说法正确的是?
- A.数据量越大,离线训练效果必然越好
- B.数据覆盖比数量关键,缺口引发高估← 正确答案
- C.数据越杂乱,训练出的策略越稳健
- D.只需保留专家成功轨迹即可
答案:B。离线 RL 的核心风险是覆盖缺口导致的 OOD 高估,因此覆盖面比绝对数量更关键。数据量大但缺失关键区域反而危险;杂乱数据会引入噪声;只留专家轨迹虽然安全但策略平庸,无法超越行为策略。
Q8. 以下哪些场景适合采用离线强化学习?
- A.推荐系统基于用户历史点击日志优化推荐策略← 正确答案
- B.机器人基于遥操作示教数据学习抓取动作← 正确答案
- C.游戏 AI 在模拟器中边玩边收集奖励在线调参
- D.自动驾驶基于百万公里路测日志训练决策模型← 正确答案
答案:ABD。A、B、D 都满足“有历史日志 + 试错代价高”的离线条件。C 是典型的在线交互场景,可以在模拟器中实时试错,不需要离线 RL。“不能试驾只能翻日志”的场景才需要离线方法。
Q9. 关于 CQL 与 IQL 的差异,正确的描述包括?
- A.CQL 显式压低 OOD 动作的 Q 值估计← 正确答案
- B.IQL 通过分位数回归跳过 OOD 动作查询← 正确答案
- C.CQL 与 IQL 都完全不做任何动作价值估计
- D.CQL 学出的 Q 值可看作真实价值的保守下界← 正确答案
答案:ABD。CQL 用正则项显式惩罚 OOD 动作的 Q,并让学出的 Q 成为真实价值的保守下界;IQL 用 expectile 回归训练 V,避开 max 对 OOD 的查询。C 错误,CQL 本身就在做动作价值估计,只是加了惩罚。
Q10. 数据覆盖不全但质量尚可,任务需要条件式生成不同目标回报的轨迹,可选方案是?
- A.用 IQL 提取有利动作价值再配合优势加权策略← 正确答案
- B.用 CQL 保守学习以规避 OOD 高估风险← 正确答案
- C.用 DT 无条件做行为克隆式下一动作预测
- D.用 DT 以 return-to-go 为条件生成目标轨迹← 正确答案
答案:ABD。覆盖不全时 IQL 的“只学有利动作”与 CQL 的“保守压低”都是合理的防护;DT 的价值正在于以 return-to-go 为条件生成不同目标的轨迹。C 无条件预测退化为行为克隆,无法实现“指定目标回报”的条件式生成。