5.2.1 值函数法(Q-Learning、DQN)
值函数法的核心思想是:先学会“这个状态–动作有多值钱”(Q 值),再用“选最值钱的动作”得到策略 。这类方法通常假设动作空间是离散的,非常适合作为强化学习入门。
5.2.1.1 Q-Learning
Q-Learning 是最经典、最基础的值函数控制算法之一,由 Watkins 在 1989 年提出,是一种** 离线策略(off-policy)的时序差分(TD)控制方法**。(ApX Machine Learning)
-
目标:学习最优动作价值函数 我们希望学到最优 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) \]
在“纸面上”把所有状态的最佳动作都写出来。
-
更新规则:基于贝尔曼最优方程的 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\) 在两者之间做插值。
-
-
离线策略(Off-policy)的含义
- 行为策略(behavior policy):实际与环境交互的策略,通常是 \(\epsilon\)-greedy: 绝大多数时候选 \(\arg\max_a Q(s,a)\),偶尔随机探索。
- 目标策略(target policy):更新时用到的,是对 \(\max_a Q(s,a)\) 的贪心策略。
- 行为策略可以和目标策略不同,这就是 off-policy 的特点,允许我们在探索时做一些“奇怪动作”,但更新时仍朝着“最终想用的最优贪心策略”学习。
-
收敛性(在表格情形) 在有限状态–动作空间、每对 \((s,a)\) 被无穷次访问,且学习率满足 \(\sum_t \alpha_t = \infty, \sum_t \alpha_t^2 < \infty\) 的条件下,Q-Learning 收敛到 \((Q^*)\)。(ApX Machine Learning)
-
简单示例:网格世界 / 移动机器人导航
- 状态:机器人在网格中的位置;
- 动作:上、下、左、右;
- 奖励:到达目标 +1,其他为 0 或小负数; Q-Learning 会通过不断试探,逐渐学到每个格子上朝哪走未来回报最大。
【图 5-1 占位:二维网格世界 + Q 表示意图。左侧是网格和机器人、目标位置;右侧是状态-动作 Q 表的一个片段。】
5.2.1.2 深度 Q 网络(DQN)
当状态是高维连续空间(如图像、机器人状态向量)时,显然不可能再用一张表来存所有 Q 值。DQN(Deep Q-Network) 将 Q 函数用深度神经网络来近似,是“深度强化学习”真正起飞的关键工作之一。(Nature)
-
基本思想:用神经网络近似 Q 函数
- 设网络参数为 \(\theta\),网络输入状态 \(s\),输出一个向量 \((Q(s,a_1;\theta), \dots, Q(s,a_{|\mathcal{A}|};\theta))\);
- 对于 Atari 游戏,网络输入为若干帧堆叠的灰度图像,输出每个离散动作的 Q 值。
-
损失函数与目标值 对于一条经验 \((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] \]
-
经验回放(Experience Replay)
- 与环境交互时,将每步经历 \((s,a,r,s’)\) 存入回放池 \(\mathcal{D}\);
- 训练时随机采样小批量 数据更新网络。 作用:
- 打破连续样本之间的相关性;
- 提高数据利用率(每条经验可被多次采样使用)。
-
目标网络(Target Network) 直接用当前网络参数 \(\theta\) 去计算目标中的 \(\max_{a’} Q(s’,a’;\theta)\) 会导致更新目标跟随网络频繁变化,训练不稳定。 DQN 使用一个**“慢更新”的目标网络** \(Q(s,a;\theta^-)\),参数 \(\theta^-\) 每隔固定步数从 \(\theta\) 拷贝一次。(Nature)
-
整体训练流程(概略)
- 初始化 Q 网络参数 \(\theta\) 和目标网络参数 \(\theta^- = \theta\);
- 重复:
- 用 \(\epsilon\)-greedy 策略与环境交互,存经验到回放池;
- 从回放池随机采样一个 batch;
- 用目标网络计算 y;
- 对在线网络参数 \(\theta\) 做一次梯度下降;
- 每 N 步同步目标网络:\(\theta^- \leftarrow \theta\)。
【图 5-2 占位:DQN 结构示意图。左边是 Atari 图像帧,经过 CNN 提取特征,右侧输出每个离散动作的 Q 值;旁边画出经验回放池和目标网络的关系。】
5.2.1.3 DQN 技巧
在基础 DQN 之后,大量工作围绕“如何让值函数法更稳定、更高效”展开,形成了一整套 “DQN 家族” 技巧。(ResearchGate)
常见改进可以按以下几类理解:
-
减小过估计偏差: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^-) \]
-
直觉:
- 在线网络负责“挑动作”;
- 目标网络负责“打分”;
- 这样减少了单一网络的乐观偏差。
-
-
网络结构改进: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)
-
经验回放的改进:优先经验回放(PER)
- 标准回放是均匀采样,但有些 transition 比另一些更“关键”;
- PER 根据 TD 误差大小给样本分配优先级,误差大的样本被采到的概率更高,以更快修正错误估计。(ResearchGate)
-
多步回报与分布式值函数
- 多步回报(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]\),而是预测回报的整个分布,在风险敏感决策等场景中更有用。
-
探索策略改进
- 从简单的 \(\epsilon\)-greedy 发展到:
- Boltzmann / softmax 探索;
- 参数噪声(noisy nets);
- 基于不确定性或预测误差的探索(如随机网络蒸馏 RND,后续章节会提)。(ApX Machine Learning)
- 对于机器人具身智能,探索必须与安全约束 结合,这在后面章节(5.4、10.3)会进一步讨论。
- 从简单的 \(\epsilon\)-greedy 发展到:
【图 5-3 占位:DQN 改进家族示意图:从基础 DQN 出发,分叉出 Double DQN、Dueling DQN、PER、Distributional RL 等分支,形成“演化树”。】
5.2.2 策略梯度与 REINFORCE
值函数法从“状态–动作值”间接得到策略,而** 策略梯度(Policy Gradient)则是“ 直接把策略当成一个可微函数,显式对它做梯度上升**”。这在连续动作空间或需要随机策略时尤为重要。(维基百科)
5.2.2.1 策略直接优化
-
策略参数化 用参数 \(\theta\) 表示一个可微的随机策略:
\[ \pi_\theta(a|s) \]
例如:
- 离散动作:\(\pi_\theta(a|s)\) 是 softmax 输出的类别分布;
- 连续动作:\(\pi_\theta(\cdot|s)\) 是高斯分布 \(\mathcal{N}(\mu_\theta(s), \Sigma_\theta(s))\)。
-
目标函数:最大化期望回报
\[ J(\theta) = \mathbb{E}_{\tau \sim \pi_\theta}\Big[ \sum_{t=0}^{T-1} \gamma^t r_{t+1} \Big] \]
其中 \(\tau\) 是一条由策略 \(\pi_\theta\) 生成的轨迹。
-
策略梯度定理(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)\) 表示“这次选择的长期收益”;
- 两者相乘,相当于:如果某个动作带来高回报,就把它在该状态的概率往上推;如果回报差,就往下拉 。
- 直觉:
-
优点与缺点
- 优点:
- 可以自然处理连续动作和复杂策略结构;
- 可以直接优化“想要的指标”(期望回报)。
- 缺点:
- 梯度估计通常方差较大;
- 需要大量样本,往往是on-policy(每次更新都要采集新数据)。
- 优点:
5.2.2.2 REINFORCE 算法
REINFORCE 是最经典、最直接的 Monte Carlo 策略梯度算法,由 Williams 在 1992 年提出。(维基百科)
-
算法核心公式 对于一条完整轨迹 \(\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 时刻开始的总回报 。
-
基本算法流程(单策略网络)
- 初始化策略参数 \(\theta\);
- 循环直到收敛:
-
在当前策略 \(\pi_\theta\) 下采样若干条完整轨迹;
-
对每条轨迹、每个时间步计算回报 \((G_t)\);(wikidocs.net)
-
聚合梯度:
\[ g = \frac{1}{N}\sum_{\tau}\sum_t \nabla_\theta \log \pi_\theta(a_t|s_t), G_t \]
-
沿梯度上升:\(\theta \leftarrow \theta + \alpha g\)。
-
-
特点与局限
- 优点:
- 推导简单、实现方便,是理解策略梯度的最好入口;
- 不依赖价值函数估计,适用于任意可微策略参数化。
- 缺点:
- 需要完整轨迹(Monte Carlo),不能实时更新;
- 梯度估计方差非常大,收敛通常较慢;
- 对机器人任务(特别是长时间操作)来说,样本效率偏低。
- 优点:
5.2.2.3 减少方差
策略梯度的一个核心实际问题是梯度估计方差太大,会导致训练过程震荡、收敛缓慢。以下是最常用的方差减少技巧。
-
基线(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 中会系统化为优势函数。
- 直观理解:
-
Reward-to-go 与截断回报
- 原始 REINFORCE 若用整条轨迹总回报 \((G_0)\) 作为每一个时间步的权重,会引入不必要的噪声;
- 更常见做法是reward-to-go:每个时间步只用从该步往后的回报 \((G_t)\),已经是对方差的一种显著减少。(维基百科)
-
回报 / 优势的归一化 在实践中,人们常对每个 batch 内的 \((G_t)\) 或优势 \((A_t)\) 做:
- 减去均值;
- 除以标准差。 这样能使梯度步长更稳定,也算一种简单的“数值层面”降方差策略。
-
广义优势估计(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
- 核心构成
- Actor(策略网络):参数 \(\theta\),输出 \(\pi_\theta(a|s)\) 或确定性动作 \(\mu_\theta(s)\);
- Critic(价值网络):参数 \(\displaystyle w\),估计 \(V_w(s)\) 或 \(Q_w(s,a)\)。
- 基本思想
- Critic 根据环境给出的奖励和下一个状态,使用 TD 方法学习“这个状态/动作的好坏”;
- Actor 使用 Critic 给出的信号(通常是优势或 TD 误差)更新策略参数,让“好动作的概率变大,坏动作的概率变小”。
- 典型 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\) 可以理解为“当前动作的即时优势估计”。
-
- 与纯 REINFORCE 的区别
- REINFORCE 使用完整回报 \((G_t)\),高方差;
- Actor–Critic 使用 TD 误差(或价值函数/优势函数),可以边交互边更新,更样本高效,方差更小 。
【图 5-5 占位:Actor-Critic 结构图:左侧环境,右侧两张网络:Actor 输出动作,Critic 评估状态或动作价值;Critic 的评估结果反馈给 Actor 更新策略。】
5.2.3.2 优势函数
优势函数在策略梯度与 Actor–Critic 中扮演统一角色,是理解“为什么要减 baseline”的标准形式。
-
定义 在策略 \(\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\):说明“比平均水平差”。
-
优势函数与策略梯度 策略梯度理论告诉我们:
\[ \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)\),从而在不引入偏差的前提下降低方差。(维基百科)
-
优势函数的近似方式 在实际算法中,我们无法精确求得 \(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 模板上添加不同的估计方式、并行方式或约束方式”。
- 同步优势 Actor–Critic(A2C)
- 多个并行环境同时使用同一策略 \(\pi_\theta\) 采集数据;
- 每隔若干步把所有环境的数据合并起来,计算优势(通常用 GAE);
- 使用统一的 Critic 和 Actor 做一次同步更新;
- A2C 通过并行环境降低样本方差、提高训练利用率。(ApX Machine Learning)
- 异步优势 Actor–Critic(A3C)
- 多个线程(或进程)各自与环境交互,维护本地网络副本;
- 每个线程定期将本地梯度推送到全局网络,异步更新参数;
- 异步探索可以自然增加策略多样性,同时减少样本间相关性。(Medium)
- TRPO / PPO:在 Actor–Critic 上加入“安全步长约束”
- 朴素策略梯度/Actor–Critic 容易因为一步更新过大而“策略崩溃”;
- TRPO(Trust Region Policy Optimization) 显式约束新旧策略的 KL 距离不超过某个阈值;
- PPO 用更简单的“剪切(clipping)”目标近似 TRPO 的信任域思想(PPO 在 5.2.4.3 专门详述)。(arXiv)
- 值函数型与策略型 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)
-
策略与 Critic 的形式
- Actor:确定性策略 \(\mu_\theta(s)\),直接输出连续动作,如关节角速度向量;
- Critic:Q 网络 \(Q_w(s,a)\),输入状态和动作,输出对应的 Q 值。
-
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。
-
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 再通过链式法则更新参数,使输出动作朝“价值更高的方向”变化。
-
探索策略:动作空间加噪声 因为 Actor 输出的是确定性动作,探索需要通过在执行时加入噪声:
\[ a_t = \mu_\theta(s_t) + \mathcal{N}_t \]
- 经典做法使用 Ornstein–Uhlenbeck 过程噪声,模拟物理系统中带惯性的随机扰动。(arXiv)
-
特点与局限
- 优点:
- 可以利用 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)
-
最大熵目标 标准 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\) 是温度系数;
- 直觉:在获得类似回报的策略中,更偏好“动作更随机”的策略,因为它们通常探索更充分、对模型误差更鲁棒 。
-
结构:随机 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’)\)。
-
-
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\) 项推动策略保持一定随机性。
-
温度 \(\alpha\) 的自动调节 实践中,SAC 通常自动学习 \(\alpha\),使策略的熵接近一个目标值(例如期望熵)。
- 这避免了人工手动调温度的困难,使算法更加稳健。(arXiv)
-
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)
-
问题:普通策略梯度更新太“凶猛”
- Vanilla Policy Gradient 或基础 Actor–Critic 在一次更新中如果步长过大,可能导致新策略与旧策略差别过大,性能骤降;
- TRPO 通过显式 KL 约束解决,但实现复杂、计算开销较高。
-
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}\) 会“拉回”,使得 过大的变化不会继续被鼓励 。
-
-
完整损失函数 实际上,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] \]
-
第一项:策略更新(剪切目标);
-
第二项:价值函数回归损失;
-
第三项:熵正则(鼓励一定探索)。
-
-
训练流程特点
- 与 vanilla PG 不同,PPO 会对同一批轨迹做多轮小批量梯度更新,提高样本利用率;
- 常搭配 GAE 估计优势;
- 一般使用并行环境(多进程采样)提升效率。
-
在机器人任务中的角色
- 优点:
- 实现简单、稳定性好,成为许多 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 预训练等内容,构建真正能在现实世界中“看、听、动”的具身智能系统。