2、强化学习基础:马尔可夫决策过程、状态/动作/奖励、策略与价值函数、折扣因子、探索与利用
在机器人技能训练中,无论是PPO(近端策略优化)还是SAC(软演员-评论家),其底层逻辑都建立在强化学习的标准数学框架之上。理解这一框架,是设计奖励函数、诊断训练不收敛、以及调整超参数的前提。本章将围绕马尔可夫决策过程(MDP)这一核心建模工具,系统拆解状态、动作、奖励、策略、价值函数、折扣因子以及探索与利用的权衡关系。这些概念不是孤立的定义,而是构成一个闭环决策系统的有机组件。
2.1 马尔可夫决策过程:机器人任务的标准建模语言
核心原理
马尔可夫决策过程(MDP)由五元组 (S, A, P, R, γ) 定义。其中 S 是状态空间,A 是动作空间,P(s'|s,a) 是状态转移概率,R(s,a,s') 是奖励函数,γ 是折扣因子。MDP 的核心假设是马尔可夫性质:下一时刻的状态只依赖于当前状态和动作,与更早的历史无关。对于机器人任务,这意味着我们需要将关节角度、角速度、末端执行器位置等关键信息压缩进当前状态向量中,使得该向量足以预测未来的动力学演化。
在机器人技能训练中,状态设计往往是最具挑战性的环节。例如,对于一个机械臂抓取任务,状态可能包括:7个关节角度、7个关节角速度、末端执行器的三维位置与姿态、目标物体的三维位置与朝向、以及夹爪的开合度。这些信息共同构成一个高维状态向量,满足马尔可夫性质的程度直接决定了训练的上限。
判断方法或操作流程
判断一个状态表示是否满足马尔可夫性质,可以采用以下三步验证法:
- 信息充分性检查:列出任务中所有影响未来决策的物理量,确认状态向量是否包含这些量。例如,若忽略物体速度,则无法准确预测下一时刻物体位置。
- 历史依赖性测试:在仿真环境中,分别用"仅当前状态"和"当前状态+最近N步历史"训练一个简单策略,比较收敛速度与最终性能。若两者差异很小,则说明当前状态表示已足够。
- 部分可观测处理:若存在无法直接测量的隐藏变量(如摩擦力系数),需引入循环神经网络或状态估计器,将POMDP问题转化为近似MDP。
案例拆解:四足机器人步态学习中的状态设计
假设我们要训练一个四足机器人学习小跑步态。初始状态向量仅包含12个关节角度和12个关节角速度。训练时发现策略收敛缓慢且步态不对称。分析后发现,缺少机身姿态(横滚角、俯仰角、偏航角)和线速度信息,导致策略无法感知身体倾斜趋势。加入这些状态后,训练速度提升约40%,且步态对称性显著改善。这个案例说明,状态向量的完备性比网络结构更基础。
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步后稳定收敛。
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 作为平衡点。
2.4 探索与利用:在未知环境中寻找最优策略
核心原理
探索(Exploration)是指尝试未执行过的动作以获取新信息,利用(Exploitation)是指选择当前已知最优的动作以最大化回报。两者之间存在根本性矛盾:过度探索导致样本效率低下,过度利用则可能陷入局部最优。在机器人任务中,探索尤为重要,因为动作空间连续且高维,且物理系统存在安全约束。
PPO通过策略熵正则项控制探索:在损失函数中加入 -β·H(π(·|s)),其中 H 是策略熵,β 是系数。当 β 较大时,策略更随机,探索更强;β 较小时,策略更确定性。SAC则采用最大熵框架,将熵项直接纳入奖励:r_total = r + α·H(π(·|s)),其中 α 是温度参数,可自动调节。SAC的目标是同时最大化累积奖励和策略熵,这使得它在探索方面通常比PPO更高效。
判断方法或操作流程
如何判断当前探索程度是否合适?
- 熵值监控:记录策略熵随训练步数的变化。若熵值过早降至接近0,说明策略过早确定性,可能陷入局部最优;若熵值长期不降,说明探索过度,策略无法收敛。
- 动作分布检查:在固定状态下,采样100个动作,绘制直方图。若分布过于集中(方差接近0),则探索不足;若分布过于分散(方差接近动作范围上限),则探索过度。
- 回放缓冲区多样性:计算缓冲区中状态-动作对的覆盖率。若大量样本集中在少数状态区域,则探索不足。
案例拆解:PPO训练中探索不足的修复
在训练机械臂推箱子任务时,PPO策略在50k步后熵值从2.5骤降至0.3,策略几乎变成确定性策略,但成功率仅15%。分析发现,初始策略标准差 σ 被设置为0.2,但训练中 σ 被优化器快速压小。我们采取了以下措施:① 将初始 σ 增大至0.5;② 在损失函数中将熵系数 β 从0.01提升至0.05;③ 添加动作噪声(在采样动作时叠加高斯噪声,标准差为0.1)。调整后,熵值稳定在1.0左右,策略在120k步后成功率达到75%。
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各组件如何协同工作:状态设计决定了信息完备性,奖励函数引导了策略的优化方向,折扣因子平衡了短期与长期目标,而探索机制则保证了策略不会过早陷入局部最优。在实际工程中,这些组件需要反复调整,没有一劳永逸的配置。