2、强化学习基础:马尔可夫决策过程、状态/动作/奖励、策略与价值函数、折扣因子、探索与利用

在机器人技能训练中,无论是PPO(近端策略优化)还是SAC(软演员-评论家),其底层逻辑都建立在强化学习的标准数学框架之上。理解这一框架,是设计奖励函数、诊断训练不收敛、以及调整超参数的前提。本章将围绕马尔可夫决策过程(MDP)这一核心建模工具,系统拆解状态、动作、奖励、策略、价值函数、折扣因子以及探索与利用的权衡关系。这些概念不是孤立的定义,而是构成一个闭环决策系统的有机组件。

强化学习闭环决策系统(MDP视角) 智能体(Agent) 策略 π(a|s) 价值函数 V(s), Q(s,a) 经验回放缓冲区 PPO / SAC 更新器 环境(Environment) 机器人动力学模型 关节角度/力矩限制 接触力/碰撞检测 任务目标(如抓取点) 状态 s_t, 奖励 r_t 动作 a_t(关节力矩/目标位置) 折扣因子 γ 与回报计算 G_t = r_t + γ·r_{t+1} + γ²·r_{t+2} + ... γ→0:短视,只关心当前奖励 γ→1:远视,考虑长期累积回报 机器人任务常用 γ = 0.95 ~ 0.995 探索与利用(Exploration vs Exploitation) 利用:选择当前最优动作(贪心) 探索:尝试未知动作(随机采样) PPO:熵正则项控制探索程度 SAC:最大化熵 + 奖励,自适应温度 图:MDP四元组 (S, A, P, R) 与智能体-环境交互闭环

2.1 马尔可夫决策过程:机器人任务的标准建模语言

核心原理

马尔可夫决策过程(MDP)由五元组 (S, A, P, R, γ) 定义。其中 S 是状态空间,A 是动作空间,P(s'|s,a) 是状态转移概率,R(s,a,s') 是奖励函数,γ 是折扣因子。MDP 的核心假设是马尔可夫性质:下一时刻的状态只依赖于当前状态和动作,与更早的历史无关。对于机器人任务,这意味着我们需要将关节角度、角速度、末端执行器位置等关键信息压缩进当前状态向量中,使得该向量足以预测未来的动力学演化。

在机器人技能训练中,状态设计往往是最具挑战性的环节。例如,对于一个机械臂抓取任务,状态可能包括:7个关节角度、7个关节角速度、末端执行器的三维位置与姿态、目标物体的三维位置与朝向、以及夹爪的开合度。这些信息共同构成一个高维状态向量,满足马尔可夫性质的程度直接决定了训练的上限。

判断方法或操作流程

判断一个状态表示是否满足马尔可夫性质,可以采用以下三步验证法:

  1. 信息充分性检查:列出任务中所有影响未来决策的物理量,确认状态向量是否包含这些量。例如,若忽略物体速度,则无法准确预测下一时刻物体位置。
  2. 历史依赖性测试:在仿真环境中,分别用"仅当前状态"和"当前状态+最近N步历史"训练一个简单策略,比较收敛速度与最终性能。若两者差异很小,则说明当前状态表示已足够。
  3. 部分可观测处理:若存在无法直接测量的隐藏变量(如摩擦力系数),需引入循环神经网络或状态估计器,将POMDP问题转化为近似MDP。

案例拆解:四足机器人步态学习中的状态设计

假设我们要训练一个四足机器人学习小跑步态。初始状态向量仅包含12个关节角度和12个关节角速度。训练时发现策略收敛缓慢且步态不对称。分析后发现,缺少机身姿态(横滚角、俯仰角、偏航角)和线速度信息,导致策略无法感知身体倾斜趋势。加入这些状态后,训练速度提升约40%,且步态对称性显著改善。这个案例说明,状态向量的完备性比网络结构更基础。

常见误区:初学者常将原始传感器数据直接作为状态,而不进行归一化或特征工程。例如,将关节力矩(范围±100Nm)与关节角度(范围±3rad)直接拼接,会导致梯度更新被大数值特征主导。建议对每个状态维度进行标准化(均值为0,方差为1),或至少缩放到[-1,1]区间。

2.2 策略与价值函数:决策的"行动指南"与"评估标尺"

核心原理

策略 π(a|s) 定义了在状态 s 下选择动作 a 的概率分布。在PPO中,策略通常由高斯分布表示,输出动作均值 μ(s) 和标准差 σ(s);在SAC中,策略被建模为可重参数化的高斯分布或双曲正切变换后的分布,以支持梯度下降。价值函数则回答"当前状态或状态-动作对有多好":状态价值 V(s) 是从状态 s 出发,遵循策略 π 所能获得的期望折扣回报;动作价值 Q(s,a) 则是在状态 s 执行动作 a 后,继续遵循策略 π 的期望回报。

在机器人技能训练中,价值函数扮演着"评论家"的角色。PPO使用优势函数 A(s,a) = Q(s,a) - V(s) 来衡量某个动作相对于平均水平的好坏,从而决定策略更新的方向与幅度。SAC则同时学习两个Q网络(双Q技巧)来减少过估计,并使用V网络来稳定训练。

判断方法或操作流程

在训练过程中,如何判断价值函数是否学习正常?以下是常用的诊断指标:

指标正常范围/特征异常表现可能原因
V(s) 预测值与真实折扣回报接近严重偏离(过高或过低)奖励尺度未归一化、网络容量不足
TD误差围绕0小幅波动持续为正或为负学习率过高、奖励延迟过长
Q(s,a) 梯度范数稳定或缓慢下降剧烈震荡目标网络更新过快、批大小过小

案例拆解:SAC训练中Q值过估计的排查

在某次机械臂插孔任务训练中,我们发现策略在200k步后突然退化,动作变得抖动。检查Q值曲线发现,Q(s,a) 的估计值从约50飙升至500,而实际折扣回报仅为30左右。这是典型的Q值过估计现象。我们采取了以下措施:① 将奖励除以10进行尺度缩放;② 将目标网络软更新系数 τ 从0.005降至0.001;③ 增加回放缓冲区容量从100k到500k。调整后,Q值回归正常范围,策略在300k步后稳定收敛。

经验提醒:在机器人任务中,奖励函数的尺度对价值学习影响巨大。建议将单步奖励控制在[-1,1]范围内,或使用奖励归一化技巧(如PopArt)。若任务包含稀疏奖励(如仅在成功时+1),可考虑使用奖励塑形(Potential-Based Reward Shaping)来提供密集的引导信号,但需保证塑形项不改变最优策略。

2.3 折扣因子:平衡短期收益与长期目标

核心原理

折扣因子 γ ∈ [0,1] 决定了智能体对远期奖励的重视程度。在机器人任务中,γ 的选择直接影响策略的行为模式:γ 过小(如0.5)会导致策略短视,只追求即时奖励,可能表现为机械臂快速移动但无法精确到达目标;γ 过大(如0.999)则会使策略过于关注远期,导致训练初期收敛缓慢,因为梯度信号需要传播更长的路径。

从数学角度看,折扣回报 G_t = Σ_{k=0}^{∞} γ^k r_{t+k+1}。当 γ=0 时,智能体只关心当前一步奖励;当 γ→1 时,智能体几乎平等看待所有未来奖励。对于机器人控制任务,由于物理系统存在延迟和惯性,通常需要 γ ≥ 0.95 才能让策略学会"提前规划"。

判断方法或操作流程

选择 γ 的实用方法:

  • 任务时域估计:计算任务的平均完成时间 T(步数),设置 γ ≈ 1 - 1/T。例如,若任务平均需要200步完成,则 γ ≈ 0.995。
  • 有效时域计算:有效时域 H = 1/(1-γ)。当 γ=0.99 时,H=100步;γ=0.995 时,H=200步。确保 H 大于任务所需的最长决策链长度。
  • 敏感性测试:在仿真中分别用 γ=0.9、0.95、0.99 训练,比较学习曲线。选择在验证集上成功率最高且训练稳定的值。

案例拆解:移动机器人导航中的γ调优

我们训练一个轮式机器人从起点导航到目标点,每步奖励为 -0.01(时间惩罚),到达目标时 +1。初始 γ=0.9,训练后机器人倾向于原地打转,因为每步的负奖励被折扣后影响减小,而到达目标的远期奖励被严重折扣。将 γ 调至0.99后,机器人学会了直线走向目标,平均步数从300降至80。进一步将 γ 调至0.999,训练速度变慢但最终路径更优(更接近最短路径)。最终选择 γ=0.995 作为平衡点。

风险说明:γ 过大会导致价值函数的方差增大,因为折扣回报的累积项变多。在PPO中,这可能需要更小的学习率和更大的批大小来稳定训练。同时,γ 过大时,若奖励函数设计不当(如存在正循环),策略可能学会利用环境漏洞无限累积奖励。

2.4 探索与利用:在未知环境中寻找最优策略

核心原理

探索(Exploration)是指尝试未执行过的动作以获取新信息,利用(Exploitation)是指选择当前已知最优的动作以最大化回报。两者之间存在根本性矛盾:过度探索导致样本效率低下,过度利用则可能陷入局部最优。在机器人任务中,探索尤为重要,因为动作空间连续且高维,且物理系统存在安全约束。

PPO通过策略熵正则项控制探索:在损失函数中加入 -β·H(π(·|s)),其中 H 是策略熵,β 是系数。当 β 较大时,策略更随机,探索更强;β 较小时,策略更确定性。SAC则采用最大熵框架,将熵项直接纳入奖励:r_total = r + α·H(π(·|s)),其中 α 是温度参数,可自动调节。SAC的目标是同时最大化累积奖励和策略熵,这使得它在探索方面通常比PPO更高效。

判断方法或操作流程

如何判断当前探索程度是否合适?

  1. 熵值监控:记录策略熵随训练步数的变化。若熵值过早降至接近0,说明策略过早确定性,可能陷入局部最优;若熵值长期不降,说明探索过度,策略无法收敛。
  2. 动作分布检查:在固定状态下,采样100个动作,绘制直方图。若分布过于集中(方差接近0),则探索不足;若分布过于分散(方差接近动作范围上限),则探索过度。
  3. 回放缓冲区多样性:计算缓冲区中状态-动作对的覆盖率。若大量样本集中在少数状态区域,则探索不足。

案例拆解:PPO训练中探索不足的修复

在训练机械臂推箱子任务时,PPO策略在50k步后熵值从2.5骤降至0.3,策略几乎变成确定性策略,但成功率仅15%。分析发现,初始策略标准差 σ 被设置为0.2,但训练中 σ 被优化器快速压小。我们采取了以下措施:① 将初始 σ 增大至0.5;② 在损失函数中将熵系数 β 从0.01提升至0.05;③ 添加动作噪声(在采样动作时叠加高斯噪声,标准差为0.1)。调整后,熵值稳定在1.0左右,策略在120k步后成功率达到75%。

总结复盘:探索与利用的平衡不是静态的,而是随训练阶段动态变化的。在训练初期,应鼓励探索以覆盖状态空间;在训练后期,应逐渐减少探索以精细利用已学知识。PPO和SAC都提供了相应的机制:PPO通过裁剪项限制策略更新幅度,间接控制探索变化速度;SAC通过自动调节温度 α,在奖励尺度变化时自适应调整探索强度。建议在训练脚本中定期记录熵值和动作标准差,作为判断探索状态的依据。

2.5 综合案例:基于SAC的机械臂插孔任务全流程分析

为了将上述概念串联起来,我们设计一个完整的案例。任务:6自由度机械臂将圆柱形销钉插入孔径为5mm的孔中,孔位固定但存在±2mm的位置误差。状态空间:18维(6个关节角度、6个关节角速度、末端执行器位置3维、销钉与孔的中心偏差2维、接触力1维)。动作空间:6维(关节力矩指令,范围±10Nm)。奖励函数:每步 -0.1(时间惩罚)+ 距离惩罚(末端与孔口的欧氏距离×0.5)+ 成功奖励 +10(当插入深度超过20mm时)。折扣因子 γ=0.98,SAC温度 α 初始为0.2,自动调节。

训练过程中,我们观察到以下现象:

  • 前20k步:策略熵较高(约3.0),动作随机,机械臂在空间中乱动,偶尔碰触孔口。
  • 20k-80k步:熵逐渐降至1.5,策略开始学会将销钉移动到孔口附近,但插入动作不精确。
  • 80k-150k步:熵稳定在0.8,策略学会微调姿态,成功率从10%提升至60%。
  • 150k步后:熵降至0.5,成功率缓慢提升至75%,但出现震荡。

针对震荡问题,我们检查了Q值曲线,发现Q(s,a) 的估计方差增大。将目标网络更新系数 τ 从0.005降至0.002,并将批大小从256增至512,震荡明显缓解。最终在200k步时成功率达到82%。

这个案例展示了MDP各组件如何协同工作:状态设计决定了信息完备性,奖励函数引导了策略的优化方向,折扣因子平衡了短期与长期目标,而探索机制则保证了策略不会过早陷入局部最优。在实际工程中,这些组件需要反复调整,没有一劳永逸的配置。

工程建议:在开始大规模训练前,先在小规模仿真中验证MDP设计的合理性。可以简化状态维度(如忽略接触力),使用较少的训练步数(如50k)快速测试奖励函数是否可学习。待确认基本框架可行后,再逐步增加状态复杂度和训练规模。这能显著节省调试时间。