外观
8.6 遥操作、人类在环与 SERL
一次抓取失败后,人可能只需把物体放回原位;机器人系统却还要检测失败、复位机械臂、检查碰撞并重新开始。真实交互的瓶颈不只是一秒能执行多少动作,还包括复位、安全监控和硬件维护。

图 8.6-1:HIL-SERL 在插接、装配和精细操作任务中让人类干预直接修补真实机器人探索。 出处:Lawrence Yunliang Chen et al.,HIL-SERL: Precise and Dexterous Robotic Manipulation via Human-in-the-Loop Reinforcement Learning(2024),Figure 1。
一种做法是先用遥操作收集成功示范,再让策略在线练习;当机器人将要进入危险或无效状态时,人类可以接管并补充纠正数据。[Argall et al., 2009] 总结了机器人示范学习,SERL 则把示范增强的 off-policy 强化学习、并行数据采集和训练工具组织为真实机器人学习流程 [Luo et al., 2024]。

图 8.6-2:HACO 的人机共驾图展示人类在危险动作出现时接管,并把干预反馈用于安全策略学习。 出处:Zhizheng Liu et al.,Human-AI Copilot Optimization for Safe Reinforcement Learning(2022),Figure 1。
本节先讨论遥操作中的空间映射,再分析 DAgger 如何通过在线聚合数据缓解模仿学习的分布偏移 [Ross et al., 2011]。随后以 AWAC 为例,说明如何用优势加权把离线数据与在线强化学习结合 [Nair et al., 2020]。SERL 是软件与训练流程框架,并不等同于 AWAC;它的公开实现主要围绕示范增强的 off-policy 强化学习 [Luo et al., 2024]。

图 8.6-3:SERL 在多种真实机械臂任务中复用示范、奖励分类器与在线强化学习组件。 出处:Jianlan Luo et al.,SERL: A Software Suite for Sample-Efficient Robotic Reinforcement Learning(2024),Figure 1。
8.6.1 遥操作的几何映射:主从机器人的空间同构
遥操作把主控设备的运动转换为机器人目标位姿。这里先用二维增量建立直觉,再扩展到三维刚体变换。
我们可以从高中最基础的二维平面几何谈起。假设在一个二维笛卡尔坐标系中,主控设备的末端点位置为
在最简单的情况下,增量映射可以通过一个标量缩放因子
然而,机器人的实际姿态不仅仅包含平移。当操作员施加旋转时,二维平面上的旋转可以通过一个
为了将旋转和平移统一在一个代数结构中,我们在数学上引入齐次坐标(Homogeneous Coordinates),将
在三维空间中,位姿属于特殊欧几里得群
8.6.2 人类在环(HIL):从分布偏移到 DAgger
当通过遥操作收集了大量的人类状态-动作轨迹
BC 在机器人序列决策中会面临分布偏移(Distribution Shift)。训练时,策略只在专家访问的
Ross 等人提出数据集聚合(DAgger, Dataset Aggregation)算法 [Ross et al., 2011]。DAgger 反复让当前策略访问状态、由专家给这些状态标注动作,再把新样本聚合进训练集;论文用在线学习中的无悔分析说明其性能界。它属于交互式模仿学习,但不等同于所有形式的人类在环控制。
在 DAgger 的第

图 8.6-4:HIL-SERL 系统图标出策略执行、人类接管、干预数据回流与离策略更新的闭环。 出处:Lawrence Yunliang Chen et al.,HIL-SERL: Precise and Dexterous Robotic Manipulation via Human-in-the-Loop Reinforcement Learning(2024),Figure 2。
8.6.3 优势加权:连接离线数据与在线更新
DAgger 需要专家为策略访问的状态持续标注。另一条路线是先把示范放入回放缓冲区,再用 off-policy 强化学习复用示范和在线数据。下面用 AWAC 解释优势加权;它不是 SERL 的同义词,也不自动提供安全约束。
这种思想可以被严密地形式化为带有 Kullback-Leibler (KL) 散度约束的策略搜索问题。给定一个由人类示范和部分在线交互混合组成的回放缓冲区(Replay Buffer),设其导出的行为分布为
受限于:
以及概率归一化约束
对未知的分布变量
通过代数变换,我们可以解出最优非参数化策略
由于

图 8.6-5:AWAC 用指数优势放大高价值数据动作、压低低价值动作,再通过同一个配分函数把所有权重归一化为概率分布。
温度
由于真实应用中我们需要拟合一个参数化的神经网络策略
将这个策略形式代入上式,并忽略与动作无关的
在 AWAC 的推导与近似下,策略更新可写成带有
8.6.4 代码实现
在实际的工程落地中,我们需要维护一个缓冲区,并同时训练 Actor(策略网络)和 Critic(价值网络)。下面我们将展示优势加权演员-评论家(AWAC)在核心网络更新步骤的 PyTorch 实现。
(初始化包含优势加权机制的更新步骤)
python
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
class AWACUpdate:
def __init__(self, actor, critic, actor_lr=3e-4, critic_lr=3e-4, lambda_weight=1.0):
self.actor = actor
self.critic = critic
self.actor_optimizer = optim.Adam(self.actor.parameters(), lr=actor_lr)
self.critic_optimizer = optim.Adam(self.critic.parameters(), lr=critic_lr)
self.lambda_weight = lambda_weight
def update_step(self, states, actions, rewards, next_states, dones):
"""
执行一次 AWAC 的单步梯度更新。
所有的输入张量形状为 (batch_size, dim)
"""
# 1. 更新 Critic (标准 TD-Learning 过程)
with torch.no_grad():
# 采样下一个动作并计算目标 Q 值
next_actions = self.actor(next_states).sample()
target_q = rewards + (1 - dones) * 0.99 * self.critic(next_states, next_actions)
current_q = self.critic(states, actions)
critic_loss = F.mse_loss(current_q, target_q)
self.critic_optimizer.zero_grad()
critic_loss.backward()
self.critic_optimizer.step()
# 2. 更新 Actor (带有优势加权机制)
# 估算状态价值 V(s): 通常通过多次采样动作取 Q 值的平均来实现
with torch.no_grad():
num_samples = 4
sampled_actions = [self.actor(states).sample() for _ in range(num_samples)]
# 计算多个采样动作的 Q 值并取平均作为基线 V(s)
q_values = torch.stack([self.critic(states, a) for a in sampled_actions], dim=0)
v_s = q_values.mean(dim=0)
# Critic 已更新,因此重新计算数据动作的 Q 值
data_q = self.critic(states, actions)
advantage = data_q - v_s
# 计算加权系数 exp(A/lambda) 并截断以防数值爆炸
weights = torch.clamp(torch.exp(advantage / self.lambda_weight), max=100.0)
# 获取当前策略对数据集动作的对数概率
log_probs = self.actor(states).log_prob(actions).sum(dim=-1, keepdim=True)
# 乘以常数权重,实现加权的最大似然估计 (等价于最小化加权负对数似然)
actor_loss = -(weights * log_probs).mean()
self.actor_optimizer.zero_grad()
actor_loss.backward()
self.actor_optimizer.step()
return critic_loss.item(), actor_loss.item()代码用 exp(advantage / lambda_weight) 给数据动作加权,并截断过大的权重。这里假定 actor 返回逐动作维的分布,因而先沿动作维求和得到每个样本的对数概率。
8.6.5 小结
- 遥操作需要位姿映射,也需要标定、约束、逆运动学和延迟处理。
- 行为克隆只在专家状态分布上训练;DAgger 通过让专家标注当前策略访问的状态来缓解分布偏移。
- AWAC 用指数化优势给回放数据中的动作加权,从而连接离线数据与在线价值估计。
- SERL 是更完整的真实机器人训练流程,不等同于 AWAC,也不因使用示范就自动获得安全保证。
8.6.6 练习
- 在二维平面遥操作的该公式中,如果我们希望从动机器人的响应不仅仅包含缩放,还在末端施加一个固定的位置偏置
,变换矩阵应如何修改? - 提示:回忆齐次坐标系中平移向量在矩阵中的位置。
- 试证明在推导 DAgger 算法的分布偏移时,如果在每一步策略产生错误的概率为
,那么在 步之后产生偏离状态的总概率上界是 。 - 提示:可以采用数学归纳法或者直接通过联合概率分解证明。
- 在 AWAC 算法中,如果
,该公式中的最优策略 会退化成什么?对应的 Actor 损失函数代表了哪种经典的模仿学习算法? - 提示:计算
,并回顾该公式。
- 提示:计算
- 检查代码实现中计算基线状态价值
的方式。为何我们通过对 sampled_actions求平均来逼近,而不是在代码中再定义一个单独的价值网络去训练它? - 提示:思考
和 在定义上的数学关系: 。
- 提示:思考

