3. 强化学习核心概念

在灵巧手操作任务中,强化学习并不是“让机械手自己乱试”这么简单。它依赖一套严格的数学框架来描述“手在什么情况下、做什么动作、得到什么反馈、以后会怎样”。这套框架的核心就是马尔可夫决策过程(MDP)。理解 MDP 及其五个关键要素——状态空间、动作空间、奖励函数、策略、价值函数——是后续设计抓取、旋转、插拔等操作策略的基础。

一、核心原理:MDP 把操作任务变成可计算问题

MDP 用五元组 (S, A, P, R, γ) 描述一个序贯决策问题。在灵巧手场景中:

  • S(状态空间):描述当前手、物体和环境的全部可观测信息,例如 24 个关节角、6 维指尖力、物体位姿、接触点集合。
  • A(动作空间):每个控制周期可执行的动作,例如 24 维关节目标位置增量、或 6 维手腕位姿增量。
  • P(转移概率):执行动作后环境如何变化,通常由物理仿真器或真实世界决定,智能体无法直接控制。
  • R(奖励函数):每一步给出的标量反馈,告诉智能体“刚才做得好不好”。
  • γ(折扣因子):0 到 1 之间的数,决定智能体更看重眼前奖励还是长远回报。

MDP 的关键假设是马尔可夫性:下一状态只取决于当前状态和当前动作,与更早的历史无关。因此,状态设计必须尽量包含决策所需的信息;如果状态漏掉了物体速度或接触力,策略就可能“看起来能抓,实际一碰就掉”。

灵巧手操作任务的 MDP 闭环 状态 sₜ 关节角·指尖力·物体位姿 接触点·视觉特征 策略 π(a|s) 神经网络/规则映射 输出动作分布或确定动作 动作 aₜ 24维关节增量 或6维手腕位姿增量 环境/仿真器 物理引擎·接触动力学 状态转移 P(sₜ₊₁|sₜ,aₜ) 奖励 rₜ 抓取成功·距离缩小 掉落惩罚·力过大惩罚 观测 决策 执行 转移 反馈 新状态

二、状态空间与动作空间:灵巧手的“输入”和“输出”

状态空间设计直接决定策略能否学到有效操作。以 24 自由度灵巧手抓取一个杯子为例,状态通常包含:

  • 本体状态:24 个关节角度、关节速度、当前电流或力矩。
  • 触觉状态:指尖六维力/力矩、接触点位置、接触面积。
  • 物体状态:杯子位姿、线速度、角速度、是否滑动。
  • 任务状态:目标位姿、剩余时间、阶段标志(接近/接触/抓稳/抬起)。

动作空间则分为连续动作和离散动作。灵巧手精细操作通常使用连续动作,例如每个关节的目标角度增量;而高层技能选择(抓、转、放)可以用离散动作。动作空间过大或过小都会带来问题:过大导致探索困难,过小则无法完成精细操作。

状态设计口诀:决策需要什么,状态就包含什么。如果策略需要判断“是否滑动”,状态里就必须有触觉或物体速度信息,否则再强的网络也无法凭空推断。

三、奖励函数:把“会抓”翻译成数字

奖励函数是强化学习中最需要工程经验的部分。灵巧手抓取任务常用奖励由多项组成:

r_t = w1 * 接近奖励
    + w2 * 接触奖励
    + w3 * 抓取稳定奖励
    + w4 * 抬起高度奖励
    - w5 * 掉落惩罚
    - w6 * 关节力矩惩罚
    - w7 * 动作平滑惩罚

其中,接近奖励常用指尖到目标点的负距离;抓取稳定奖励可基于接触力是否在合理区间;掉落惩罚在物体高度骤降或接触丢失时触发。奖励设计要避免“奖励黑客”:例如只奖励抬起高度,智能体可能把杯子甩到空中,而不是稳定抓取。

四、策略与价值函数:从“怎么做”到“值不值得”

策略 π(a|s) 是智能体的行为规则,输入状态,输出动作或动作分布。它分为随机策略和确定性策略。随机策略便于探索,确定性策略便于部署。

价值函数衡量“从当前状态出发,按某策略走下去,长期能拿多少回报”。状态价值函数 Vπ(s) 表示从状态 s 开始的期望折扣回报;动作价值函数 Qπ(s,a) 表示在状态 s 执行动作 a 后的期望回报。二者关系为:

Vπ(s) = Σ_a π(a|s) * Qπ(s,a)
Qπ(s,a) = R(s,a) + γ * Σ_s' P(s'|s,a) * Vπ(s')

在灵巧手训练中,价值函数帮助智能体判断“现在这个手型离成功还有多远”,从而在探索时优先选择更有希望的动作。常见算法如 PPO、SAC、DDPG 都围绕策略和价值函数进行迭代更新。

五、案例与误区复盘

要素 灵巧手抓取示例 常见误区
状态空间 关节角+指尖力+物体位姿 遗漏接触力,导致无法判断滑动
动作空间 24维关节增量,限幅±0.05rad 动作范围过大,机械手抖动剧烈
奖励函数 接近+接触+稳定-掉落-力矩 只奖励抬起,导致甩飞物体
策略 PPO随机策略,训练后转确定性 训练与部署动作分布不一致
价值函数 Q值引导探索,V值评估状态 折扣因子过小,只看眼前奖励
复盘时优先检查三件事:状态是否满足马尔可夫性、奖励是否与任务目标一致、动作空间是否与硬件安全约束匹配。多数“训练不收敛”并非算法问题,而是 MDP 建模问题。