0x00 概要要理解 DIVL必须先理解 IQL。IQL 是离线强化学习中的里程碑式工作其精妙之处在于只用数据集里已有的数据却能推断出比数据集更好的策略全程不需要对未见过的动作进行采样。SERL/LWD 的训练通常从加载人类演示数据开始——如何从离线数据平滑地切换到在线实时学习正是 IQL 解决的问题。1.1 核心哲学在已知数据中沙里淘金1.1 离线学习的贪婪陷阱我们先来思考一下离线 RL 面临的根本困境。假设我们有一堆别人开车的录像数据集 D目标是学出一个最强车神。如果使用传统 Q-Learning核心公式是Q(s,a)←rγmaxa′Q(s′,a′)Q-Learning 的本质是跨越时空的价值传递每个状态-动作对的 Q 值记录了这个位置往这个方向走未来总共能赚多少钱终点的高额奖金会像水流一样沿着路径倒灌回起点最终让机器人学会抄近道。但问题在于maxa′Q(s′,a′)这个操作。在离线数据集中如果网络误给一个没见过的动作OOD打了高分这个谎言会通过 Bellman 方程不断自举Bootstrapping导致价值崩盘。对于仿真环境这也许只是训练不稳定对于真机机器人这可能导致机械臂撞到桌子、夹爪打坏物体甚至损坏硬件。1.2 IQL 的思路不猜、不看、只提取IQL 的解决思路非常克制不去猜没见过的动作只在 Replay Buffer 已经发生过的动作里寻找高价值信号绝不往外看一眼。这就是Implicit隐式的核心含义它不显式执行maxaQ(s,a)而是通过一个状态价值函数V(s)来隐式表达在这个状态下数据集中较好动作能达到什么水平。在同一个状态s下数据集中可能有多个不同的动作尝试——好的50 分烂的10 分。模仿学习BC会学习它们的平均行为30 分而 IQL 的目标是即使不亲自去尝试也要通过观察发现原来在这个位置最高能拿到 50 分从而把策略固定在那个 50 分的行为上。1.3 优势加权行为克隆IQL 训练策略网络π(a∣s)的方式是给模仿损失加一个权重普通 BCLoss(π(s)−adataset)2不管好坏通通都学IQLLossw⋅(π(s)−adataset)2只学好的这就是优势加权行为克隆Advantage-Weighted Regression, AWR。但仅仅加权还不够——IQL 引入了一个更精巧的数学工具来定义什么是好的标准。1.4 非对称损失Expectile 回归IQL 最精华的数学技巧在于 V 函数的训练方式。假设我们要估算一个状态的价值V(s)数据集中有人拿了 10 分有人拿了 50 分。定义误差errorQ(s,a)−V(s)当 error 0数据比我猜的低我认为这是失误或平庸的表现不怎么在乎它给很小的权重当 error 0数据比我猜的高我认为这才是财富和潜力给巨大的权重这引出一个反直觉的问题如果你想追逐上限对负误差应该重罚还是轻罚我们来推演一下。你的目标是成为全校第一名估值代表你对第一名水平的认知95 分。现在看到一张考了 10 分的卷子低分数据误差 10 - 95 -85。如果重罚这个负误差优化器会感到巨大压力唯一办法就是让估值降到 30 分——这恰恰违背了追逐上限的目标。所以正确的做法是轻罚负误差差生只是意外重罚正误差好苗子必须追上。数学实现如下其中τTau是关键参数通常设为 0.7~0.9L_V if Q - V 0: (1-τ) |Q - V|² # 轻罚if Q - V 0: τ |Q - V|² # 重罚设τ0.9当QV时好数据误差乘以 0.9——严厉的教练看到好苗子你怎么离冠军还差这么一点重罚V 必须大幅往上提当QV时坏数据误差乘以 0.1——教练看到差生摆摆手这只是个意外我不在乎。V 只会稍微往下掉1.5 离线→在线微调流程IQL 天然支持从离线训练平滑过渡到在线微调Phase 1: Offline PretrainingReplay Buffer → sample batch → trainer.train (仅使用离线数据)↓ 检查点继承Phase 2: Online Fine-tuningActor π → env.step(a) → (s’, r, done)↑ ↓sample trainer.train add_transition (新经验入 buffer)关键点离线阶段和在线阶段使用完全相同的训练逻辑。在线阶段只需将新采样经验加入 Replay Buffer继续执行同样的 V→Q→Policy 三步训练。不需要切换损失函数不需要预热体现了 IQL 设计的统一性。0x02 网络架构IQL 的核心由多个神经网络构成。从功能角色的角度看可以归纳为三个网络从工程实现的角度看实际存在四个网络。2.1 功能角色选秀节目的评审团网络 角色 问题 方法V 函数 梦想上限评估师 在当前状态下表现最好的那批选手能达到什么水平 Expectile 回归挑高分Q 函数 现实打分员 对这个具体的选手他的真实实力是多少 Bellman 方程传递未来信息Actor 策略 优等生模仿者 我该怎么做才能成为最像高分的那个 Advantage 加权克隆2.2 工程实现四网络闭环在代码层面IQL 实际上是四个网络——Q 有一个影子分身 Target QTarget Q 定义了好的稳定标准V 把这个标准平滑化并传递给 QOnline Q 根据奖励进行实时更新Policy 在 Online Q 和 V 的指导下提取最终的动作网络名称 缩写 输入 输出 核心任务 更新频率Online Q Q(s,a)Q(s,a)评估具体 (状态, 动作) 的好坏 每个 Batch 实时更新Target QQtarg(s,a)Q(s,a)提供稳定的训练目标计算 V 时使用 随 Online Q 软更新Value VsV(s)评估状态的整体水平估计数据集支持集中的高价值基准 每个 Batch 实时更新Policyπsπ(a∣s)给出具体动作指令最终部署用 每个 Batch 实时更新这种四重奏的结构让 IQL 既能像监督学习一样稳定地在离线数据上训练又能像强化学习一样通过价值评估来提取最优策略。2.3 V 网络梦想上限评估师V 函数的职责用一个词概括向上看。给定一个状态sV 回答在这个处境下数据集中表现最好的那批动作大概能拿到什么水平的分在 IQL 中V(s)充当了基准线。通过比较Q(s,a)和V(s)我们可以知道某个动作a是否比平均水平更好。同时在更新 Q 网络时直接用V(s′)代表下一个状态的期望回报——这彻底避免了对 Actor 网络的采样查询是离线 RL 防 OOD 动作的关键。V 的损失函数是非对称 L2 损失Expectile 回归LV{τ(Q−V)2,ifQV(1−τ)(Q−V)2,ifQ≤V直观上讲V 是一个乐观的提取员它不看平均水平只盯着上限看。需要指出的是V 网络是针对具体任务的专家网络不是通用的普世网络。V(s)的输出是一个标量——在自动驾驶中代表安全行驶公里数在下棋中代表获胜概率在交易中代表预期收益。因为状态s不同、奖励r定义不同V 的内容无法通用但训练 V 的偏心公式IQL 算法是普世的。2.4 Q 网络现实打分员Q 函数的职责用一个词概括向后传。与 V 只看s不同Q 评价具体的(s,a)对——“在当前状态下执行这个具体动作后未来能拿到多少回报”。Q 的更新遵循 Bellman 方程Q(s,a)←rγV(s′)这里的关键在于Q 的更新不使用maxaQ(s′,a)避免 OOD 动作而是使用 V 网络的输出作为未来价值估计。因为 V 是从数据集中挑出的高分基准这个目标天然在数据分布之内。双 Q 网络对抗过估计实际实现中IQL 使用两个 Q 网络q1和q2以及各自的 Target 版本。原因是经典 Q-learning 中的max操作存在数学上的风险E[max(X1,X2,…)]≥max(E[X1],E[X2],…)即使噪声是均值为 0 的随机波动取最大值也会自动把期望往上拉导致 Q 值越跑越高。双 Q 网络的解决思路很直观场景 A只有一个评估师。 如果他今天心情好把一辆破车高估了 1 万块你花冤枉钱买了一堆垃圾。场景 B有两个评估师取最小值。 评估师 A 说值 10 万B 说值 8 万。你保守主义只信 8 万的。只有当两个评估师同时高估时你才会被骗。更新 V 网络时我们取两个 Q 的最小值with torch.no_grad():q1_val self.q1_target(torch.cat([s, a], dim-1))q2_val self.q2_target(torch.cat([s, a], dim-1))# 精华在这里取最小值消除过估计q_val torch.min(q1_val, q2_val)计算 V 的 Lossv_val self.v(s)v_loss expectile_loss(q_val - v_val, tau)保守 vs 乐观两种力量的平衡这里有一个微妙的问题之前说 IQL 的核心是乐观τ0.9提取上限现在又引入双 Q 网络的保守取 min——矛盾吗如果只有乐观模型会发疯过估计崩溃如果只有保守模型会变怂学不到最优解。IQL 的精妙之处在于在保守的评估中寻找乐观的上限——既看最坏的可能取 min又在现有的机会里挑最好的Expectile 回归。2.5 Actor 网络优等生模仿者V 和 Q 是裁判V(s)告诉你这个地方不错Q(s,a)告诉你这个动作挺好。但它们只是数字不能告诉你具体该怎么动。在连续动作空间中即便完全知道 Q 网络的值要找出使 Q 最大的动作aargmaxaQ(s,a)每一步都需要运行复杂的优化算法如梯度上升——这对实时控制不可接受。Actor 的角色是充当缓存器它将 Q 和 V 的评估智慧提前吸收固化成一个从状态到动作的直接映射s→a。机器人运行时点一下火就能出动作。Actor 的更新策略是优势加权行为克隆计算 AdvantageA(s,a)Q(s,a)−V(s)Advantage 为正 → 重点模仿为负 → 降低权重加权系数eA/βQ≈V的优等生权重极大QV的差生权重趋向于 0网络 角色 视角 输出 哲学Q 客观记录 微观每个动作Q(s,a)诚实记录每一份成绩单V 主观提取 宏观每个状态V(s)只盯上限不看平均π最终模仿 动作具体操作π(a∣s)谁分高我模仿谁0x03 核心参数解析IQL 的三个核心参数定义了机器人的性格参数 名称 作用 调大 调小τExpectile 定义什么是优秀的标准 激进追高 稳健保守γ折扣因子 对未来的耐心程度 高瞻远瞩 短视务实β逆温度 对 Advantage 的敏感度 偏激执着 平庸平均3.1τ非对称系数野心与稳健的权衡τ0.5Loss 退化为 MSEV(s)收敛到所有Q(s,a)的算术平均值。机器人变成平庸之辈。τ∈(0.7,0.9)推荐迫使 V 向上拟合潜力上限。既能提取优等生又能容忍噪声。τ→1.0V(s)拼命追赶数据集最高分但对噪声敏感。调参哲学数据质量决定τ。规整的数据集如 halfcheetah-medium中τ0.7就够用极其困难的任务可能需要τ0.9甚至 0.95 来挖掘罕见成功信号安全第一的应用自动驾驶、手术机器人应调小τ。高阶思路——动态τ基于不确定性自适应。在熟悉场景失败时增大惩罚环境可能变了在陌生场景失
【机器人 / 强化学习】IQL(Implicit Q-Learning):离线强化学习的隐式价值提取
0x00 概要要理解 DIVL必须先理解 IQL。IQL 是离线强化学习中的里程碑式工作其精妙之处在于只用数据集里已有的数据却能推断出比数据集更好的策略全程不需要对未见过的动作进行采样。SERL/LWD 的训练通常从加载人类演示数据开始——如何从离线数据平滑地切换到在线实时学习正是 IQL 解决的问题。1.1 核心哲学在已知数据中沙里淘金1.1 离线学习的贪婪陷阱我们先来思考一下离线 RL 面临的根本困境。假设我们有一堆别人开车的录像数据集 D目标是学出一个最强车神。如果使用传统 Q-Learning核心公式是Q(s,a)←rγmaxa′Q(s′,a′)Q-Learning 的本质是跨越时空的价值传递每个状态-动作对的 Q 值记录了这个位置往这个方向走未来总共能赚多少钱终点的高额奖金会像水流一样沿着路径倒灌回起点最终让机器人学会抄近道。但问题在于maxa′Q(s′,a′)这个操作。在离线数据集中如果网络误给一个没见过的动作OOD打了高分这个谎言会通过 Bellman 方程不断自举Bootstrapping导致价值崩盘。对于仿真环境这也许只是训练不稳定对于真机机器人这可能导致机械臂撞到桌子、夹爪打坏物体甚至损坏硬件。1.2 IQL 的思路不猜、不看、只提取IQL 的解决思路非常克制不去猜没见过的动作只在 Replay Buffer 已经发生过的动作里寻找高价值信号绝不往外看一眼。这就是Implicit隐式的核心含义它不显式执行maxaQ(s,a)而是通过一个状态价值函数V(s)来隐式表达在这个状态下数据集中较好动作能达到什么水平。在同一个状态s下数据集中可能有多个不同的动作尝试——好的50 分烂的10 分。模仿学习BC会学习它们的平均行为30 分而 IQL 的目标是即使不亲自去尝试也要通过观察发现原来在这个位置最高能拿到 50 分从而把策略固定在那个 50 分的行为上。1.3 优势加权行为克隆IQL 训练策略网络π(a∣s)的方式是给模仿损失加一个权重普通 BCLoss(π(s)−adataset)2不管好坏通通都学IQLLossw⋅(π(s)−adataset)2只学好的这就是优势加权行为克隆Advantage-Weighted Regression, AWR。但仅仅加权还不够——IQL 引入了一个更精巧的数学工具来定义什么是好的标准。1.4 非对称损失Expectile 回归IQL 最精华的数学技巧在于 V 函数的训练方式。假设我们要估算一个状态的价值V(s)数据集中有人拿了 10 分有人拿了 50 分。定义误差errorQ(s,a)−V(s)当 error 0数据比我猜的低我认为这是失误或平庸的表现不怎么在乎它给很小的权重当 error 0数据比我猜的高我认为这才是财富和潜力给巨大的权重这引出一个反直觉的问题如果你想追逐上限对负误差应该重罚还是轻罚我们来推演一下。你的目标是成为全校第一名估值代表你对第一名水平的认知95 分。现在看到一张考了 10 分的卷子低分数据误差 10 - 95 -85。如果重罚这个负误差优化器会感到巨大压力唯一办法就是让估值降到 30 分——这恰恰违背了追逐上限的目标。所以正确的做法是轻罚负误差差生只是意外重罚正误差好苗子必须追上。数学实现如下其中τTau是关键参数通常设为 0.7~0.9L_V if Q - V 0: (1-τ) |Q - V|² # 轻罚if Q - V 0: τ |Q - V|² # 重罚设τ0.9当QV时好数据误差乘以 0.9——严厉的教练看到好苗子你怎么离冠军还差这么一点重罚V 必须大幅往上提当QV时坏数据误差乘以 0.1——教练看到差生摆摆手这只是个意外我不在乎。V 只会稍微往下掉1.5 离线→在线微调流程IQL 天然支持从离线训练平滑过渡到在线微调Phase 1: Offline PretrainingReplay Buffer → sample batch → trainer.train (仅使用离线数据)↓ 检查点继承Phase 2: Online Fine-tuningActor π → env.step(a) → (s’, r, done)↑ ↓sample trainer.train add_transition (新经验入 buffer)关键点离线阶段和在线阶段使用完全相同的训练逻辑。在线阶段只需将新采样经验加入 Replay Buffer继续执行同样的 V→Q→Policy 三步训练。不需要切换损失函数不需要预热体现了 IQL 设计的统一性。0x02 网络架构IQL 的核心由多个神经网络构成。从功能角色的角度看可以归纳为三个网络从工程实现的角度看实际存在四个网络。2.1 功能角色选秀节目的评审团网络 角色 问题 方法V 函数 梦想上限评估师 在当前状态下表现最好的那批选手能达到什么水平 Expectile 回归挑高分Q 函数 现实打分员 对这个具体的选手他的真实实力是多少 Bellman 方程传递未来信息Actor 策略 优等生模仿者 我该怎么做才能成为最像高分的那个 Advantage 加权克隆2.2 工程实现四网络闭环在代码层面IQL 实际上是四个网络——Q 有一个影子分身 Target QTarget Q 定义了好的稳定标准V 把这个标准平滑化并传递给 QOnline Q 根据奖励进行实时更新Policy 在 Online Q 和 V 的指导下提取最终的动作网络名称 缩写 输入 输出 核心任务 更新频率Online Q Q(s,a)Q(s,a)评估具体 (状态, 动作) 的好坏 每个 Batch 实时更新Target QQtarg(s,a)Q(s,a)提供稳定的训练目标计算 V 时使用 随 Online Q 软更新Value VsV(s)评估状态的整体水平估计数据集支持集中的高价值基准 每个 Batch 实时更新Policyπsπ(a∣s)给出具体动作指令最终部署用 每个 Batch 实时更新这种四重奏的结构让 IQL 既能像监督学习一样稳定地在离线数据上训练又能像强化学习一样通过价值评估来提取最优策略。2.3 V 网络梦想上限评估师V 函数的职责用一个词概括向上看。给定一个状态sV 回答在这个处境下数据集中表现最好的那批动作大概能拿到什么水平的分在 IQL 中V(s)充当了基准线。通过比较Q(s,a)和V(s)我们可以知道某个动作a是否比平均水平更好。同时在更新 Q 网络时直接用V(s′)代表下一个状态的期望回报——这彻底避免了对 Actor 网络的采样查询是离线 RL 防 OOD 动作的关键。V 的损失函数是非对称 L2 损失Expectile 回归LV{τ(Q−V)2,ifQV(1−τ)(Q−V)2,ifQ≤V直观上讲V 是一个乐观的提取员它不看平均水平只盯着上限看。需要指出的是V 网络是针对具体任务的专家网络不是通用的普世网络。V(s)的输出是一个标量——在自动驾驶中代表安全行驶公里数在下棋中代表获胜概率在交易中代表预期收益。因为状态s不同、奖励r定义不同V 的内容无法通用但训练 V 的偏心公式IQL 算法是普世的。2.4 Q 网络现实打分员Q 函数的职责用一个词概括向后传。与 V 只看s不同Q 评价具体的(s,a)对——“在当前状态下执行这个具体动作后未来能拿到多少回报”。Q 的更新遵循 Bellman 方程Q(s,a)←rγV(s′)这里的关键在于Q 的更新不使用maxaQ(s′,a)避免 OOD 动作而是使用 V 网络的输出作为未来价值估计。因为 V 是从数据集中挑出的高分基准这个目标天然在数据分布之内。双 Q 网络对抗过估计实际实现中IQL 使用两个 Q 网络q1和q2以及各自的 Target 版本。原因是经典 Q-learning 中的max操作存在数学上的风险E[max(X1,X2,…)]≥max(E[X1],E[X2],…)即使噪声是均值为 0 的随机波动取最大值也会自动把期望往上拉导致 Q 值越跑越高。双 Q 网络的解决思路很直观场景 A只有一个评估师。 如果他今天心情好把一辆破车高估了 1 万块你花冤枉钱买了一堆垃圾。场景 B有两个评估师取最小值。 评估师 A 说值 10 万B 说值 8 万。你保守主义只信 8 万的。只有当两个评估师同时高估时你才会被骗。更新 V 网络时我们取两个 Q 的最小值with torch.no_grad():q1_val self.q1_target(torch.cat([s, a], dim-1))q2_val self.q2_target(torch.cat([s, a], dim-1))# 精华在这里取最小值消除过估计q_val torch.min(q1_val, q2_val)计算 V 的 Lossv_val self.v(s)v_loss expectile_loss(q_val - v_val, tau)保守 vs 乐观两种力量的平衡这里有一个微妙的问题之前说 IQL 的核心是乐观τ0.9提取上限现在又引入双 Q 网络的保守取 min——矛盾吗如果只有乐观模型会发疯过估计崩溃如果只有保守模型会变怂学不到最优解。IQL 的精妙之处在于在保守的评估中寻找乐观的上限——既看最坏的可能取 min又在现有的机会里挑最好的Expectile 回归。2.5 Actor 网络优等生模仿者V 和 Q 是裁判V(s)告诉你这个地方不错Q(s,a)告诉你这个动作挺好。但它们只是数字不能告诉你具体该怎么动。在连续动作空间中即便完全知道 Q 网络的值要找出使 Q 最大的动作aargmaxaQ(s,a)每一步都需要运行复杂的优化算法如梯度上升——这对实时控制不可接受。Actor 的角色是充当缓存器它将 Q 和 V 的评估智慧提前吸收固化成一个从状态到动作的直接映射s→a。机器人运行时点一下火就能出动作。Actor 的更新策略是优势加权行为克隆计算 AdvantageA(s,a)Q(s,a)−V(s)Advantage 为正 → 重点模仿为负 → 降低权重加权系数eA/βQ≈V的优等生权重极大QV的差生权重趋向于 0网络 角色 视角 输出 哲学Q 客观记录 微观每个动作Q(s,a)诚实记录每一份成绩单V 主观提取 宏观每个状态V(s)只盯上限不看平均π最终模仿 动作具体操作π(a∣s)谁分高我模仿谁0x03 核心参数解析IQL 的三个核心参数定义了机器人的性格参数 名称 作用 调大 调小τExpectile 定义什么是优秀的标准 激进追高 稳健保守γ折扣因子 对未来的耐心程度 高瞻远瞩 短视务实β逆温度 对 Advantage 的敏感度 偏激执着 平庸平均3.1τ非对称系数野心与稳健的权衡τ0.5Loss 退化为 MSEV(s)收敛到所有Q(s,a)的算术平均值。机器人变成平庸之辈。τ∈(0.7,0.9)推荐迫使 V 向上拟合潜力上限。既能提取优等生又能容忍噪声。τ→1.0V(s)拼命追赶数据集最高分但对噪声敏感。调参哲学数据质量决定τ。规整的数据集如 halfcheetah-medium中τ0.7就够用极其困难的任务可能需要τ0.9甚至 0.95 来挖掘罕见成功信号安全第一的应用自动驾驶、手术机器人应调小τ。高阶思路——动态τ基于不确定性自适应。在熟悉场景失败时增大惩罚环境可能变了在陌生场景失