3、强化学习基础:马尔可夫决策过程、策略、值函数与基本算法分类

各位同学,欢迎来到第三讲。前面我们聊了数字孪生怎么建、怎么同步,但说实话,光有孪生体还不够。你得让它动起来,而且得动得聪明。这就是强化学习登场的地方了。

我个人习惯把强化学习看作「试错的艺术」。你想想看,一个机器人刚开始啥也不会,它得自己摸索着走路、抓东西。这个过程,跟我们小时候学骑自行车其实差不多——摔几跤,就知道怎么保持平衡了。

好,咱们今天就把强化学习的几个核心概念掰开揉碎。别怕,我会用运动控制的例子来讲,保证接地气。

3.1 马尔可夫决策过程——强化学习的数学骨架

先说马尔可夫决策过程,简称 MDP。这东西说白了,就是给强化学习搭了个数学框架。我在做电机控制项目时,发现很多问题都能套进这个框架里。

MDP 由五个要素组成,我习惯记成「S、A、P、R、γ」:

  • S(状态):系统当前的情况。比如电机当前转速、位置、温度。
  • A(动作):你能施加的控制量。比如给多大电压、PWM 占空比多少。
  • P(状态转移概率):执行动作后,系统会变成什么状态。注意,这里有个概率,因为现实世界有噪声。
  • R(奖励函数):这一步做得好不好。比如转速误差小了就给正奖励,超调了就给负奖励。
  • γ(折扣因子):未来的奖励值多少钱。γ 接近 1,说明你很有远见;γ 接近 0,说明你只顾眼前。

这里有个关键性质叫马尔可夫性——未来的状态只取决于当前状态和动作,跟历史无关。嗯,这其实是个很强的假设。我在实际项目中遇到过,有些系统有记忆效应,比如液压系统,这时候纯 MDP 就不太够用了,得用 POMDP(部分可观测 MDP)。不过那是后话,咱们先把基础打牢。

核心要点:MDP 把运动控制问题抽象成了「状态→动作→奖励→新状态」的循环。你设计的奖励函数,直接决定了智能体学成什么样。

3.2 策略——智能体的行为准则

策略,就是智能体在某个状态下该做什么动作。用数学话说,策略 π 是从状态到动作的映射。

策略分两种:

  • 确定性策略:给定状态,动作是确定的。比如「转速误差 100 rpm,就给 50% 占空比」。简单粗暴。
  • 随机性策略:给定状态,动作是一个概率分布。比如「转速误差 100 rpm,有 80% 概率给 50% 占空比,20% 概率给 45%」。为什么要随机?因为探索需要。

我刚开始做强化学习时,总喜欢用确定性策略,觉得这样稳定。后来发现,在探索阶段,随机性策略能帮你发现更好的控制方式。说白了,你得允许智能体「犯点错」,才能找到最优解。

实战建议:在数字孪生环境中,先用随机性策略做探索,等模型收敛后再切换到确定性策略用于实际控制。这叫「探索-利用权衡」。

3.3 值函数——给状态和动作打分

值函数,就是评估「当前状态有多好」或者「当前动作有多好」。这是强化学习的核心,也是我花时间最多的地方。

主要有两种值函数:

名称 符号 含义 运动控制例子
状态值函数 V(s) 从状态 s 开始,按策略 π 行动,能获得的累计奖励期望 当前电机位置下,按当前控制策略跑完,预计总误差多小
动作值函数 Q(s, a) 在状态 s 执行动作 a,之后按策略 π 行动,能获得的累计奖励期望 当前转速下,给某个 PWM 值,之后按策略控制,预计效果如何

你可能会问:为什么要搞两个?我个人的理解是:V 函数评估「状态好不好」,Q 函数评估「在这个状态下做这个动作好不好」。做决策时,Q 函数更直接——比较不同动作的 Q 值,选最大的就行。

我曾经在调一个倒立摆项目时,发现 Q 函数收敛特别慢。后来排查发现,是奖励函数设计有问题——奖励太稀疏,智能体半天得不到反馈。后来改成连续奖励,Q 函数就正常了。嗯,这里要注意,奖励函数的设计是个细活。

3.4 基本算法分类——三大流派

强化学习算法很多,但万变不离其宗,主要分三大类。我画了张图,帮你理清脉络:

强化学习算法三大分类 强化学习算法 基于值函数 基于策略梯度 Actor-Critic Q-Learning DQN REINFORCE PPO A2C / A3C SAC 适用场景: 离散动作空间 连续动作空间 两者结合,效果最好

三大流派各有特点:

  • 基于值函数的方法:核心是学 Q 函数,然后根据 Q 值选动作。DQN 是代表。适合离散动作,比如控制一个开关阀。优点是稳定,缺点是处理连续动作时比较吃力。
  • 基于策略梯度的方法:直接学策略,不用经过值函数。适合连续动作,比如调节电机转速。PPO 是当前工业界用得最多的。我最近几个项目都在用 PPO,效果确实不错。
  • Actor-Critic 方法:结合了前两者的优点。Actor 负责学策略,Critic 负责评估。SAC、A3C 都属于这一类。说白了,就是让两个网络互相促进,一个负责「做」,一个负责「评」。

避坑指南:我曾经在数字孪生环境中用 DQN 控制一个连续动作的机械臂,结果 Q 值怎么都收敛不了。后来才意识到,DQN 天生不适合连续动作空间。换成 SAC 后,问题迎刃而解。所以选算法前,先搞清楚你的动作空间是离散还是连续的。

3.5 小结

今天的内容,说白了就是三件事:

  1. MDP 是框架,把运动控制问题数学化。
  2. 策略和值函数 是核心,一个负责决策,一个负责评估。
  3. 算法分三类,选哪个取决于你的问题特点。

这些概念看着抽象,但你在数字孪生环境里跑一遍就全明白了。下一节我们会把这些东西串起来,讲怎么在数字孪生里搭建强化学习训练环境。到时候,你会看到这些概念是怎么落地的。


专注资料整理