强化学习通过与环境交互,用任务回报改进策略。首先应定义时间步、状态或观测、动作空间、转移、奖励与终止。机器人系统的动作可能是力矩,也可能是发送给底层控制器的位置目标;选择不同接口,学习面对的动态和频率也会变化。

状态、观测和终止

MDP中的状态应包含预测未来转移所需的信息。只给一个位置而省略速度,对有惯性的系统通常不满足这个要求。部分可观测时可以使用历史、滤波信念或循环模型,但需要重新评估数据和推理开销。

任务成功、碰撞或设备故障可能是环境终止;训练设定的最大步数可能只是截断。价值估计是否应在结尾继续bootstrap,取决于它是任务真正终止,还是采样窗口结束。混淆两者会改变学习目标。Sutton与Barto教材提供MDP、价值与策略梯度的基础。

奖励要与完成目标一致。只奖励“离目标近”可能使机器人停在边缘,避免失败惩罚的策略也可能选择永不行动。记录实际成功判据、步数和约束违反,不应只看总奖励上涨。

REINFORCE的更新

对有限episode的无折扣总回报,策略梯度可以通过每步log π(a|s)乘该步之后的回报来估计。减少高回报行为的负对数概率损失,会提高这些行为的采样概率:

G_t = r_t + r_(t+1) + ... + r_(T-1)
loss = - Σ_t log π(a_t|s_t) · (G_t - b(s_t))

基线b(s)减少方差,不能依赖当前采样动作来任意更改相对回报。自动求导时,作为策略权重的回报或优势通常需要与策略梯度图正确分离。回报折扣、归一化和熵奖励应明确记录,不能当作无影响的实现细节。

例如一次动作的概率0.2、优势为+0.5,对应损失项约0.8047。更新应提高该动作的概率;若优势为负,则降低。softmax/categorical分布的采样与log_prob接口见PyTorch官方分布文档。

从教学算法到工程方法

REINFORCE容易理解,但样本方差可能很大。Actor-critic用价值估计构造优势,PPO限制策略更新幅度,SAC强调带熵目标的离策略学习;它们有不同数据使用方式与超参数,不能混用on-policy和旧回放数据而忽略修正。PPO原论文说明其代理目标;本专区的小实验没有实现PPO或SAC。

机器人还需要考虑执行器限幅、控制周期、延迟、接触和状态约束。对策略动作简单裁剪后,应理解训练分布与实际动作分布的差异。随机探索、环境重置和失败成本让真实设备训练比仿真更复杂,不能将仿真动作直接发送给硬件。

可运行检查

学习项目提供NumPy版REINFORCE和未执行的PyTorch对照,在一个有限一维控制环境中从零训练。它明确使用gamma=1、有限20步episode、状态基线和固定训练预算,并与经典策略、BC、随机策略比较。这个小环境省略惯性、视觉和接触,只验证学习循环。

练习:将成功奖励改成零,仅保留步数惩罚,观察策略是否仍能学会到达;把动作无效概率调大,对比训练与测试分布。面试自查:离线数据、离策略和离线强化学习是同一概念吗?为什么训练平均回报上升而固定测试任务可能变差?