Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

5.2.1 值函数法(Q-Learning、DQN)

学习导航

  • 本章主题:5.2.1 值函数法(Q-Learning、DQN)
  • 前置知识:建议先完成第 1-2 章,再进入 RL/IL。
  • 建议用时:120-140 分钟
  • 阅读顺序:先看概念框架,再看公式/代码,最后做自测。

值函数法的核心思想是:先学会“这个状态–动作有多值钱”(Q 值),再用“选最值钱的动作”得到策略。这类方法通常假设动作空间是离散的,非常适合作为强化学习入门。


5.2.1.1 Q-Learning

Q-Learning是最经典、最基础的值函数控制算法之一,由 Watkins 在 1989 年提出,是一种离线策略(off-policy)的时序差分(TD)控制方法。(ApX Machine Learning)

1.目标:学习最优动作价值函数 我们希望学到最优 Q 函数:

\[ Q^*(s,a) = \mathbb{E}\Big[ \sum_{k=0}^{\infty}\gamma^k r_{t+1+k} \Big| s_t=s, a_t=a,\ \pi = \pi^* \Big] \]

一旦知道了 \(Q^*(s,a)\),就可以用贪心策略

\[ \pi^*(s) = \arg\max_a Q^*(s,a) \]

在“纸面上”把所有状态的最佳动作都写出来。 2.更新规则:基于贝尔曼最优方程的 TD 更新 Q-Learning 的核心更新:

\[ Q_{\text{new}}(s_t,a_t) \leftarrow Q(s_t,a_t) \quad + \alpha \Big[ r_{t+1} + \gamma \max_{a'} Q(s_{t+1},a') - Q(s_t,a_t) \Big] \]

  • 方括号内是TD 误差(temporal-difference error)

    \[ \delta_t = r_{t+1} + \gamma \max_{a'} Q(s_{t+1},a') - Q(s_t,a_t) \]

  • 直觉:

    • “当前对 \(Q(s,a)\) 的认识” 是旧值;
    • “基于下一步最优动作的估计” 给出新的目标;
    • 用学习率 \(\alpha\) 在两者之间做插值。 3.离线策略(Off-policy)的含义 +行为策略(behavior policy):实际与环境交互的策略,通常是 \(\epsilon\)-greedy: 绝大多数时候选 \(\arg\max_a Q(s,a)\),偶尔随机探索。 +目标策略(target policy):更新时用到的,是对 \(\max_a Q(s,a)\) 的贪心策略。
  • 行为策略可以和目标策略不同,这就是 off-policy 的特点,允许我们在探索时做一些“奇怪动作”,但更新时仍朝着“最终想用的最优贪心策略”学习。 4.收敛性(在表格情形) 在有限状态–动作空间、每对 \((s,a)\) 被无穷次访问,且学习率满足 \(\sum_t \alpha_t = \infty, \sum_t \alpha_t^2 < \infty\) 的条件下,Q-Learning 收敛到 \(Q^*\)。(ApX Machine Learning) 5.简单示例:网格世界 / 移动机器人导航

  • 状态:机器人在网格中的位置;

  • 动作:上、下、左、右;

  • 奖励:到达目标 +1,其他为 0 或小负数; Q-Learning 会通过不断试探,逐渐学到每个格子上朝哪走未来回报最大。

【图 5-1 占位:二维网格世界 + Q 表示意图。左侧是网格和机器人、目标位置;右侧是状态-动作 Q 表的一个片段。】


5.2.1.2 深度 Q 网络(DQN)

当状态是高维连续空间(如图像、机器人状态向量)时,显然不可能再用一张表来存所有 Q 值。**DQN(Deep Q-Network)**将 Q 函数用深度神经网络来近似,是“深度强化学习”真正起飞的关键工作之一。(Nature)

1.基本思想:用神经网络近似 Q 函数

  • 设网络参数为 \(\theta\),网络输入状态 \(s\),输出一个向量 \((Q(s,a_1;\theta), \dots, Q(s,a_{|\mathcal{A}|};\theta))\);
  • 对于 Atari 游戏,网络输入为若干帧堆叠的灰度图像,输出每个离散动作的 Q 值。 2.损失函数与目标值 对于一条经验 \((s_t,a_t,r_{t+1},s_{t+1})\),定义目标:

\[ y_t = r_{t+1} + \gamma \max_{a'} Q(s_{t+1},a';\theta^-) \]

其中 \(\theta^-\) 是目标网络参数(后面介绍)。 然后最小化平方误差:

\[ L(\theta) = \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}} \big[ ( y_t - Q(s_t,a_t;\theta) )^2 \big] \]

3.经验回放(Experience Replay)

  • 与环境交互时,将每步经历 \((s,a,r,s')\) 存入回放池 \(\mathcal{D}\);
  • 训练时随机采样小批量数据更新网络。 作用:
  • 打破连续样本之间的相关性;
  • 提高数据利用率(每条经验可被多次采样使用)。 4.目标网络(Target Network) 直接用当前网络参数 \(\theta\) 去计算目标中的 \(\max_{a'} Q(s',a';\theta)\) 会导致更新目标跟随网络频繁变化,训练不稳定。 DQN 使用一个**“慢更新”的目标网络**\(Q(s,a;\theta^-)\),参数 \(\theta^-\) 每隔固定步数从 \(\theta\) 拷贝一次。(Nature) 5.整体训练流程(概略)
  • 初始化 Q 网络参数 \(\theta\) 和目标网络参数 \(\theta^- = \theta\);
  • 重复:
    1. 用 \(\epsilon\)-greedy 策略与环境交互,存经验到回放池;
    2. 从回放池随机采样一个 batch;
    3. 用目标网络计算 y;
    4. 对在线网络参数 \(\theta\) 做一次梯度下降;
    5. 每 N 步同步目标网络:\(\theta^- \leftarrow \theta\)。

【图 5-2 占位:DQN 结构示意图。左边是 Atari 图像帧,经过 CNN 提取特征,右侧输出每个离散动作的 Q 值;旁边画出经验回放池和目标网络的关系。】


5.2.1.3 DQN 技巧

在基础 DQN 之后,大量工作围绕“如何让值函数法更稳定、更高效”展开,形成了一整套 “DQN 家族” 技巧。(ResearchGate)

常见改进可以按以下几类理解:

1.减小过估计偏差:Double DQN 标准 DQN 中的 \(\max_{a'}Q(s',a')\) 容易产生系统性过估计,即对所有动作的价值略微偏乐观。

  • Double DQN 的做法是“由一个网络选动作,另一个网络估值”:

    \[ a^* = \arg\max_{a'} Q(s',a';\theta) \]

    \[ y = r + \gamma Q(s', a^*; \theta^-) \]

  • 直觉:

    • 在线网络负责“挑动作”;
    • 目标网络负责“打分”;
    • 这样减少了单一网络的乐观偏差。 2.网络结构改进:Dueling Network dueling 架构将 Q 分解为状态价值 V优势函数 A

\[ Q(s,a) = V(s) + A(s,a) - \frac{1}{|\mathcal{A}|}\sum_{a'} A(s,a') \]

  • 对于很多状态,“当前状态好不好”比“具体动作差异”更重要(例如四面都是墙);
  • Dueling 结构先学习一个共享的表示,再分别输出 V 和 A,有利于在很多动作“差不多”的状态下更稳定地估计价值。(ResearchGate) 3.经验回放的改进:优先经验回放(PER)
  • 标准回放是均匀采样,但有些 transition 比另一些更“关键”;
  • PER 根据 TD 误差大小给样本分配优先级,误差大的样本被采到的概率更高,以更快修正错误估计。(ResearchGate) 4.多步回报与分布式值函数 +多步回报(n-step return): 用 \(r_t + \gamma r_{t+1} + \dots + \gamma^{n-1} r_{t+n-1} + \gamma^n \max_a Q(s_{t+n},a)\) 替代一步 TD 目标,在偏差与方差之间取得更好平衡。 +分布式 Q 学习(Distributional RL): 不只预测期望回报 \(\mathbb{E}[G]\),而是预测回报的整个分布,在风险敏感决策等场景中更有用。 5.探索策略改进
  • 从简单的 \(\epsilon\)-greedy 发展到:
    • Boltzmann / softmax 探索;
    • 参数噪声(noisy nets);
    • 基于不确定性或预测误差的探索(如随机网络蒸馏 RND,后续章节会提)。(ApX Machine Learning)
  • 对于机器人具身智能,探索必须与安全约束结合,这在后面章节(5.4、10.3)会进一步讨论。

【图 5-3 占位:DQN 改进家族示意图:从基础 DQN 出发,分叉出 Double DQN、Dueling DQN、PER、Distributional RL 等分支,形成“演化树”。】


5.2.2 策略梯度与 REINFORCE

值函数法从“状态–动作值”间接得到策略,而**策略梯度(Policy Gradient)**则是“直接把策略当成一个可微函数,显式对它做梯度上升”。这在连续动作空间或需要随机策略时尤为重要。(维基百科)


5.2.2.1 策略直接优化

1.策略参数化 用参数 \(\theta\) 表示一个可微的随机策略:

\[ \pi_\theta(a|s) \]

例如:

  • 离散动作:\(\pi_\theta(a|s)\) 是 softmax 输出的类别分布;
  • 连续动作:\(\pi_\theta(\cdot|s)\) 是高斯分布 \(\mathcal{N}(\mu_\theta(s), \Sigma_\theta(s))\)。 2.目标函数:最大化期望回报

\[ J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\Big[ \sum_{t=0}^{T-1} \gamma^t r_{t+1} \Big] \]

其中 \(\tau\) 是一条由策略 \(\pi_\theta\) 生成的轨迹。 3.策略梯度定理(Policy Gradient Theorem) 可证明:

\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\bigg[ \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \bigg] \]

其中 \(G_t\) 是从 t 时刻开始的回报。

  • 直觉:
    • \(\nabla_\theta \log \pi_\theta(a_t|s_t)\) 表示“如何调整参数以增加该动作概率”;
    • \(G_t\) 表示“这次选择的长期收益”;
    • 两者相乘,相当于:如果某个动作带来高回报,就把它在该状态的概率往上推;如果回报差,就往下拉。 4.优点与缺点
  • 优点:
    • 可以自然处理连续动作和复杂策略结构;
    • 可以直接优化“想要的指标”(期望回报)。
  • 缺点:
    • 梯度估计通常方差较大;
    • 需要大量样本,往往是on-policy(每次更新都要采集新数据)。

5.2.2.2 REINFORCE 算法

REINFORCE是最经典、最直接的 Monte Carlo 策略梯度算法,由 Williams 在 1992 年提出。(维基百科)

1.算法核心公式 对于一条完整轨迹 \(\tau\),REINFORCE 使用:

\[ \nabla_\theta J(\theta) \approx \sum_{t=0}^{T-1} \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \]

  • 其中 \(G_t = \sum_{k=t}^{T-1} \gamma^{k-t} r_{k+1}\) 为从 t 时刻开始的总回报。 2.基本算法流程(单策略网络)
  • 初始化策略参数 \(\theta\);
  • 循环直到收敛:
    1. 在当前策略 \(\pi_\theta\) 下采样若干条完整轨迹;

    2. 对每条轨迹、每个时间步计算回报 \(G_t\);(wikidocs.net)

    3. 聚合梯度:

      \[ g = \frac{1}{N}\sum_{\tau}\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \]

    4. 沿梯度上升:\(\theta \leftarrow \theta + \alpha g\)。 3.特点与局限

  • 优点:
    • 推导简单、实现方便,是理解策略梯度的最好入口;
    • 不依赖价值函数估计,适用于任意可微策略参数化。
  • 缺点:
    • 需要完整轨迹(Monte Carlo),不能实时更新;
    • 梯度估计方差非常大,收敛通常较慢;
    • 对机器人任务(特别是长时间操作)来说,样本效率偏低。

5.2.2.3 减少方差

策略梯度的一个核心实际问题是梯度估计方差太大,会导致训练过程震荡、收敛缓慢。以下是最常用的方差减少技巧。

1.基线(Baseline)思想 在公式

\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\big[ \nabla_\theta \log \pi_\theta(a_t|s_t) G_t \big] \]

中,我们可以减去一个与动作无关的基线 \(b(s_t)\)

\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}\big[ \nabla_\theta \log \pi_\theta(a_t|s_t) (G_t - b(s_t)) \big] \]

只要 \(b(s_t)\) 不依赖于 \(a_t\),这个变换不会引入偏差。

  • 直观理解:
    • \(G_t\) 是“这次做完之后的实际成绩”;
    • \(b(s_t)\) 是“在当前状态下的平均水平”;
    • 只对“高于平均水平的行动”强烈鼓励,对“低于平均水平的行动”强烈惩罚,自然而然减小波动。
  • 最理想的基线是状态价值函数 \(V^\pi(s_t)\),这在 5.2.3 中会系统化为优势函数。 2.Reward-to-go 与截断回报
  • 原始 REINFORCE 若用整条轨迹总回报 \(G_0\) 作为每一个时间步的权重,会引入不必要的噪声;
  • 更常见做法是reward-to-go:每个时间步只用从该步往后的回报 \(G_t\),已经是对方差的一种显著减少。(维基百科) 3.回报 / 优势的归一化 在实践中,人们常对每个 batch 内的 \(G_t\) 或优势 \(A_t\) 做:
  • 减去均值;
  • 除以标准差。 这样能使梯度步长更稳定,也算一种简单的“数值层面”降方差策略。 4.广义优势估计(GAE,概念直觉) GAE(Generalized Advantage Estimation)将多个 n-step TD 误差按指数权重混合,形成一个在偏差与方差之间可调的优势估计:(Medium)

\[ \hat{A}_t^{\text{GAE}(\gamma,\lambda)} = \sum_{l=0}^{\infty} (\gamma\lambda)^l \delta_{t+l} \]

其中 \(\delta_t\) 是 TD 误差。

  • \(\lambda \to 1\):更接近 Monte Carlo,方差大但无偏;
  • \(\lambda \to 0\):更接近一步 TD,方差小但偏差大。 GAE 在后面 PPO 等算法中将经常出现,是现代策略梯度方法的标配组件。

【图 5-4 占位:示意图对比三种估计:纯 MC G、一步 TD 估计、GAE 估计在方差和偏差上的折衷。】


5.2.3 Actor–Critic 框架

Actor–Critic方法可以视作“**值函数法(Critic)+策略梯度法(Actor)**的融合”,同时利用值函数的低方差估计和策略梯度的灵活表达能力,是现代强化学习的主力架构。(维基百科)


5.2.3.1 Actor–Critic

1.核心构成 +Actor(策略网络):参数 \(\theta\),输出 \(\pi_\theta(a|s)\) 或确定性动作 \(\mu_\theta(s)\); +Critic(价值网络):参数 \(\displaystyle w\),估计 \(V_w(s)\) 或 \(Q_w(s,a)\)。 2.基本思想

  • Critic 根据环境给出的奖励和下一个状态,使用 TD 方法学习“这个状态/动作的好坏”;

  • Actor 使用 Critic 给出的信号(通常是优势或 TD 误差)更新策略参数,让“好动作的概率变大,坏动作的概率变小”。 3.典型 on-policy Actor–Critic 更新 以状态价值 Critic 为例(估计 \(V(s)\)):

  • 收到奖励和下一个状态后计算 TD 误差:

    \[ \delta_t = r_{t+1} + \gamma V_w(s_{t+1}) - V_w(s_t) \]

  • Critic 更新:

    \[ w \leftarrow w + \beta \delta_t \nabla_w V_w(s_t) \]

  • Actor 更新(策略梯度):

    \[ \theta \leftarrow \theta + \alpha \delta_t \nabla_\theta \log \pi_\theta(a_t|s_t) \]

    这里 \(\delta_t\) 可以理解为“当前动作的即时优势估计”。 4.与纯 REINFORCE 的区别

  • REINFORCE 使用完整回报 \(G_t\),高方差;

  • Actor–Critic 使用 TD 误差(或价值函数/优势函数),可以边交互边更新,更样本高效,方差更小

【图 5-5 占位:Actor-Critic 结构图:左侧环境,右侧两张网络:Actor 输出动作,Critic 评估状态或动作价值;Critic 的评估结果反馈给 Actor 更新策略。】


5.2.3.2 优势函数

优势函数在策略梯度与 Actor–Critic 中扮演统一角色,是理解“为什么要减 baseline”的标准形式。

1.定义 在策略 \(\pi\) 下:

\[ Q^\pi(s,a) = \mathbb{E}[G_t|s_t=s,a_t=a],\quad V^\pi(s) = \mathbb{E}_{a \sim \pi}[Q^\pi(s,a)] \]

优势函数

\[ A^\pi(s,a) = Q^\pi(s,a) - V^\pi(s) \]

  • 如果 \(A^\pi(s,a) > 0\):说明“这次选的动作比平均水平好”;
  • 如果 \(A^\pi(s,a) < 0\):说明“比平均水平差”。 2.优势函数与策略梯度 策略梯度理论告诉我们:

\[ \nabla_\theta J(\theta) = \mathbb{E}_{\pi_\theta}[ \nabla_\theta \log \pi_\theta(a|s) A^{\pi_\theta}(s,a) ] \]

优势函数自然地出现在理论公式里,相当于自动选择了最优基线 \(b(s) = V^\pi(s)\),从而在不引入偏差的前提下降低方差。(维基百科) 3.优势函数的近似方式 在实际算法中,我们无法精确求得 \(A^\pi\),通常采用近似: +一步 TD 误差

 \\[
 \hat{A}\_t = r\_{t+1} + \gamma V\_w(s\_{t+1}) - V\_w(s\_t) = \delta\_t
 \\]

+n-step 回报

\[ \hat{A}_t^{(n)} = \big( r_{t+1} + \dots + \gamma^{n-1} r_{t+n} + \gamma^n V_w(s_{t+n}) \big) - V_w(s_t) \]

+GAE:用指数衰减平均多个 TD 误差,前面已给出形式。(ApX Machine Learning)


5.2.3.3 算法示例

在 Actor–Critic 框架下,众多具体算法可以看作“在 Actor–Critic 模板上添加不同的估计方式、并行方式或约束方式”。

1.同步优势 Actor–Critic(A2C)

  • 多个并行环境同时使用同一策略 \(\pi_\theta\) 采集数据;
  • 每隔若干步把所有环境的数据合并起来,计算优势(通常用 GAE);
  • 使用统一的 Critic 和 Actor 做一次同步更新;
  • A2C 通过并行环境降低样本方差、提高训练利用率。(ApX Machine Learning) 2.异步优势 Actor–Critic(A3C)
  • 多个线程(或进程)各自与环境交互,维护本地网络副本;
  • 每个线程定期将本地梯度推送到全局网络,异步更新参数;
  • 异步探索可以自然增加策略多样性,同时减少样本间相关性。(Medium) 3.TRPO / PPO:在 Actor–Critic 上加入“安全步长约束”
  • 朴素策略梯度/Actor–Critic 容易因为一步更新过大而“策略崩溃”; +**TRPO(Trust Region Policy Optimization)**显式约束新旧策略的 KL 距离不超过某个阈值; +PPO用更简单的“剪切(clipping)”目标近似 TRPO 的信任域思想(PPO 在 5.2.4.3 专门详述)。(arXiv) 4.值函数型与策略型 Critic 的选择
  • 部分 Actor–Critic 只用 \(V(s)\) 作为 Critic(比如 A2C/A3C、PPO);
  • 另一些(如 DDPG、SAC)使用 \(Q(s,a)\) 作为 Critic,更适合与确定性或连续动作策略结合(5.2.4 将重点讨论)。

【图 5-6 占位:A2C / A3C 示意图:多环境并行生成轨迹,统一送入 Actor–Critic 更新;下方标注 TRPO/PPO 在更新时对策略变化施加约束。】


5.2.4 连续控制算法(DDPG、SAC、PPO 的核心思想)

前面介绍的 Q-Learning、DQN 主要针对离散动作空间。而在机器人具身智能中,关节位置、速度、扭矩等往往是连续控制量。DDPG、SAC、PPO 等算法正是为连续控制而设计或在连续控制上效果优异的代表。


5.2.4.1 DDPG:深度确定性策略梯度

DDPG(Deep Deterministic Policy Gradient)将 DQN 的经验回放与目标网络与确定性策略梯度结合,构建了一个适用于连续动作空间的 off-policy Actor–Critic 算法。(arXiv)

1.策略与 Critic 的形式

  • Actor:确定性策略 \(\mu_\theta(s)\),直接输出连续动作,如关节角速度向量;
  • Critic:Q 网络 \(Q_w(s,a)\),输入状态和动作,输出对应的 Q 值。 2.Critic 更新 与 DQN 类似,对每条经验 \(\displaystyle (s,a,r,s')\),构造目标:

\[ y = r + \gamma Q_{w^-}(s', \mu_{\theta^-}(s')) \]

  • \(w^-, \theta^-\) 是目标网络参数,缓慢跟随在线网络更新;
  • 最小化 \((y - Q_w(s,a))^2\) 更新 Critic。 3.Actor 更新:确定性策略梯度 对连续动作的确定性策略,可以推导得到:(arXiv)

\[ \nabla_\theta J(\theta) \approx \mathbb{E}_{s \sim \mathcal{D}} \big[ \nabla_a Q_w(s,a)|_{a=\mu_\theta(s)} \cdot \nabla_\theta \mu_\theta(s) \big] \]

即:

  • 用 Critic 告诉 Actor:在当前状态下,往哪个方向改变动作可以增加 Q 值;
  • Actor 再通过链式法则更新参数,使输出动作朝“价值更高的方向”变化。 4.探索策略:动作空间加噪声 因为 Actor 输出的是确定性动作,探索需要通过在执行时加入噪声:

\[ a_t = \mu_\theta(s_t) + \mathcal{N}_t \]

  • 经典做法使用 Ornstein–Uhlenbeck 过程噪声,模拟物理系统中带惯性的随机扰动。(arXiv) 5.特点与局限
  • 优点:
    • 可以利用 off-policy + Replay Buffer,样本效率比 on-policy 更好;
    • 适用于复杂连续控制任务,在早期连续控制基准上表现优异。
  • 局限:
    • 对超参数、网络初始化等较敏感;
    • 易出现训练不稳定、发散,探索也可能不充分;
  • 实践中经常配合更多技巧,如双 Q 网络(TD3)、延迟更新等加强稳定性。

【图 5-7 占位:DDPG 框架示意图:Actor 输出连续动作,执行时加噪声;Critic 评估 Q 值;Replay Buffer + 目标网络的结构与 DQN 类似。】


5.2.4.2 SAC:软 Actor–Critic 与最大熵强化学习

**SAC(Soft Actor–Critic)是近几年连续控制领域非常流行的算法之一,基于最大熵强化学习(maximum entropy RL)**思想:

不仅要获得高回报,还要让策略尽可能“随机”一些,以鼓励探索和鲁棒性。(arXiv)

1.最大熵目标 标准 RL 只最大化回报:

\[ J(\pi) = \mathbb{E}\Big[\sum_t \gamma^t r_t\Big] \]

SAC 引入熵正则项:

\[ J_{\text{soft}}(\pi) = \mathbb{E}\Big[\sum_t \gamma^t (r_t + \alpha \mathcal{H}(\pi(\cdot|s_t)))\Big] \]

  • \(\mathcal{H}\) 是策略的熵,\(\alpha\) 是温度系数;

  • 直觉:在获得类似回报的策略中,更偏好“动作更随机”的策略,因为它们通常探索更充分、对模型误差更鲁棒。 2.结构:随机 Actor + 双 Q Critic

  • Actor:随机策略 \(\pi_\theta(a|s)\),通常为高斯分布经过 \(\tanh\) 压缩到动作范围;

  • Critic:两个 Q 网络 \((Q_{w_1}, Q_{w_2})\) 来减轻过估计偏差;

  • 目标值使用“软”备份:

    \[ y = r + \gamma \big( \min_{i=1,2} Q_{w_i^-}(s',a') - \alpha \log \pi_\theta(a'|s') \big) \]

    其中 \(a' \sim \pi_\theta(\cdot|s')\)。 3.Actor 更新:最小化“soft Q - entropy”目标 Actor 更新等价于最小化:

\[ J_\pi(\theta) = \mathbb{E}_{s \sim \mathcal{D}, a \sim \pi_\theta} \big[ \alpha \log \pi_\theta(a|s) - Q_w(s,a) \big] \]

  • 如果对某个 \((s,a)\) 的 Q 值较高,梯度会推动策略提高该动作概率;
  • 同时 \(\alpha \log \pi\) 项推动策略保持一定随机性。 4.温度 \(\alpha\) 的自动调节 实践中,SAC 通常自动学习 \(\alpha\),使策略的熵接近一个目标值(例如期望熵)。
  • 这避免了人工手动调温度的困难,使算法更加稳健。(arXiv) 5.SAC 的优势
  • Off-policy,样本效率高;
  • 训练稳定性好,对超参数不那么敏感;
  • 在 Mujoco 等连续控制基准上表现强劲,已成为真实机器人实验中常用的 RL 算法之一。

【图 5-8 占位:SAC 结构图:随机策略输出高斯参数,经 Tanh 得到动作;双 Q 网络估计 soft Q;目标中含有熵项,旁边用文字标出“高回报 + 高熵”。】


5.2.4.3 PPO:近端策略优化

PPO(Proximal Policy Optimization)是一种on-policy Actor–Critic 算法,以其实现简单、性能稳定而被广泛采用,尤其是在连续控制任务中。(arXiv)

1.问题:普通策略梯度更新太“凶猛”

  • Vanilla Policy Gradient 或基础 Actor–Critic 在一次更新中如果步长过大,可能导致新策略与旧策略差别过大,性能骤降;
  • TRPO 通过显式 KL 约束解决,但实现复杂、计算开销较高。 2.PPO 的核心:剪切(Clipped)目标函数 设旧策略参数为 \(\theta_{\text{old}}\),新策略为 \(\theta\),定义概率比:

\[ r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\text{old}}}(a_t|s_t)} \]

以及优势估计 \(\hat{A}_t\)(例如用 GAE)。

  • 未剪切的策略梯度目标:

    \[ L^{\text{PG}}(\theta) = \mathbb{E}[ r_t(\theta) \hat{A}_t ] \]

  • PPO 的剪切目标:

    \[ L^{\text{CLIP}}(\theta) = \mathbb{E}\big[ \min\big( r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon)\hat{A}_t \big) \big] \]

    含义:

  • 如果新旧策略差别不大(\(r_t\) 在 \([1-\epsilon, 1+\epsilon]\) 内),目标与普通 PG 相同;

  • 一旦 \(r_t\) 试图偏离这个区间,\(\text{clip}\) 会“拉回”,使得过大的变化不会继续被鼓励。 3.完整损失函数 实际上,PPO 一般同时优化三部分:(arXiv)

\[ L(\theta) = \mathbb{E}\big[ L^{\text{CLIP}}(\theta) \quad + c_1 (V_\theta(s_t) - V^{\text{target}}_t)^2 \quad + c_2 \mathcal{H}(\pi_\theta(\cdot|s_t)) \big] \]

  • 第一项:策略更新(剪切目标);
  • 第二项:价值函数回归损失;
  • 第三项:熵正则(鼓励一定探索)。 4.训练流程特点
  • 与 vanilla PG 不同,PPO 会对同一批轨迹做多轮小批量梯度更新,提高样本利用率;
  • 常搭配 GAE 估计优势;
  • 一般使用并行环境(多进程采样)提升效率。 5.在机器人任务中的角色
  • 优点:
    • 实现简单、稳定性好,成为许多 RL 库的默认连续控制算法(如 OpenAI Baselines、RLlib 等);
    • 对超参数较为宽容,适合做研究原型和仿真实验。
  • 局限:
    • on-policy,样本利用率低,相比 SAC 等 off-policy 算法,在真实机器人上成本较高;
  • 实践中常见模式:
    • 在大规模仿真中先用 PPO 训练一个合理策略,再在真实机器人上用 SAC 或离线 RL 进行精调。

【图 5-9 占位:PPO 训练循环示意图:并行环境生成轨迹 → 计算 GAE 优势 → 使用 CLIP 目标做多轮梯度更新;在图中标出 \(r(\theta)\)、\(\mathrm{clip}(\cdot)\) 和 KL 限制直观关系。】


本节从值函数法(Q-Learning/DQN)出发,逐步过渡到策略梯度与 REINFORCE,再走向Actor–Critic 框架,最终落到在机器人连续控制中最常用的三类算法 DDPG、SAC、PPO。后续章节将以这些算法为“工具箱”,结合模仿学习、VLA 预训练等内容,构建真正能在现实世界中“看、听、动”的具身智能系统。

本章小结与自测

三行小结

  1. 本章打通 RL 与 IL 的核心概念和常用算法。
  2. 重点是数据分布、目标函数与稳定训练的平衡。
  3. 学完后应能解释“何时 BC、何时 RL、何时混合”。

检查题

  1. 用你自己的话总结本章最核心的一个公式/机制。
  2. 给出一个“如果要落地到项目里,你会怎么用”的具体例子。

常见误区

  1. 把离线指标当在线性能。
  2. 忽视分布偏移。
  3. 奖励设计过稀疏或可被投机。

公式到代码(最小示例)

rewards = [0.0, 0.0, 1.0]
gamma = 0.99
G = 0.0
for r in reversed(rewards):
    G = r + gamma * G
print(round(G, 6))

本章外部参考(集中)

  1. ApX Machine Learning
  2. Nature
  3. ResearchGate
  4. ApX Machine Learning
  5. 维基百科
  6. wikidocs.net
  7. Medium
  8. 维基百科
  9. arXiv
  10. arXiv
  11. arXiv
  12. arXiv