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)

值函数法的核心思想是:先学会“这个状态–动作有多值钱”(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)

    • \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) \]


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)

    • c_1 (V_\theta(s_t) - V^{\text{target}}_t)^2

    • 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 预训练等内容,构建真正能在现实世界中“看、听、动”的具身智能系统。