深度强化学习基础回顾:从MDP到SAC

各位同学好,我是你们的老朋友。今天咱们来聊聊深度强化学习的基础。说实话,这部分内容我讲过很多次,但每次讲都有新感悟。毕竟在运动控制项目里摸爬滚打这么多年,踩过的坑比走过的路还多。

你可能会问:为什么要在模型压缩课程里先讲这些?我的回答很简单——不懂基础,压缩就是瞎搞。就像修车,你得先知道发动机怎么转,才能谈改装。好,咱们开始。

核心要点:深度强化学习 = 深度学习 + 强化学习。深度学习负责感知,强化学习负责决策。两者结合,才有了今天能打乒乓球、能跑酷的机器人。

马尔可夫决策过程:一切的基础

马尔可夫决策过程,简称MDP。说白了,就是描述智能体与环境交互的数学框架。我习惯把它理解成一个「状态-动作-奖励」的循环游戏。

MDP由五个元素组成:

  • S:状态空间,智能体能感知到的所有情况
  • A:动作空间,智能体能做的所有操作
  • P:状态转移概率,从当前状态到下一个状态的概率
  • R:奖励函数,告诉智能体做得好不好
  • γ:折扣因子,决定智能体是「目光短浅」还是「高瞻远瞩」

这里有个关键性质——马尔可夫性:未来只取决于当前状态,与过去无关。嗯,这个假设在现实中很难完全满足,但足够好用。

我的经验:在机器人运动控制中,状态空间的设计往往比算法更重要。我曾经在一个四足机器人项目里,花了三周调算法效果都不好,最后发现是状态里少加了足底力传感器数据。加上之后,收敛速度快了一倍。

Q-Learning:从表格到神经网络

Q-Learning是最经典的无模型强化学习算法。它的核心思想很简单:学习一个Q函数,告诉你「在状态s下做动作a,未来能拿多少总奖励」

Q-Learning的更新公式:

Q(s,a) ← Q(s,a) + α [r + γ max Q(s',a') - Q(s,a)]

这个公式看着简单,但蕴含了强化学习的核心思想——时序差分学习。用当前奖励加上未来最优估计,来更新当前估计。

但传统Q-Learning有个致命问题:状态空间太大时,表格存不下。比如机器人关节角度是连续值,你怎么建表?

这时候深度学习登场了。用神经网络来近似Q函数,就是Deep Q-Network,简称DQN。2013年DeepMind用DQN打Atari游戏,震惊了全世界。

注意:DQN虽然厉害,但只适用于离散动作空间。你想让机器人连续地调整关节角度?不好意思,DQN做不到。这也是为什么后来有了策略梯度方法。

策略梯度:直接优化策略

策略梯度方法不走Q函数那条路,而是直接优化策略本身。策略π(a|s)就是一个条件概率分布,告诉你「在状态s下,选动作a的概率是多少」。

策略梯度的核心公式:

∇J(θ) = E[∇log π(a|s) * Q(s,a)]

这个公式的直观理解:如果某个动作的Q值高,就增加它的概率;如果Q值低,就减少它的概率。简单粗暴,但有效。

我记得第一次在仿真环境里跑策略梯度,看着机器人从乱抖到学会走路,那种成就感至今难忘。不过策略梯度也有缺点——方差大,收敛慢。你想想看,每次更新都靠采样,采样噪声一大,梯度方向就歪了。

Actor-Critic架构:两全其美

既然Q-Learning和策略梯度各有优缺点,那能不能把它们结合起来?当然可以。这就是Actor-Critic架构

Actor-Critic包含两个网络:

  • Actor(演员):负责输出动作,就是策略网络
  • Critic(评论家):负责评估动作好坏,就是价值网络

演员根据评论家的反馈来改进自己的表演,评论家则根据实际结果来调整自己的评价标准。两者互相促进,共同进步。

这种架构的好处很明显:既保留了策略梯度的连续性,又利用了Q-Learning的低方差特性。现在主流的深度强化学习算法,几乎都基于Actor-Critic架构。

避坑指南:我曾经在训练一个机械臂抓取任务时,Actor和Critic的学习率没调好,导致训练震荡严重。后来我习惯把Critic的学习率设得比Actor低一些,大概1:0.5的比例,效果会稳定很多。

PPO:稳定可靠的冠军算法

PPO,全称Proximal Policy Optimization,是目前最流行的策略梯度算法之一。它的核心思想是:每次更新不要走太大步,免得摔跤

PPO的损失函数:

L = min(ratio * A, clip(ratio, 1-ε, 1+ε) * A)

其中ratio是新旧策略的概率比,A是优势函数。clip操作限制了ratio的范围,确保更新步长不会太大。

为什么PPO这么受欢迎?我个人觉得有几点:

  • 实现简单:相比TRPO,PPO的代码量少很多
  • 超参数鲁棒:默认参数在大多数任务上都能工作
  • 样本效率高:能重复使用采样数据

我在多个运动控制项目里都用PPO作为基线算法。说实话,它虽然不是最快的,但绝对是最稳的。对于工业应用来说,稳定比什么都重要。

SAC:最大熵的优雅解法

SAC,全称Soft Actor-Critic,是另一种主流算法。它的独特之处在于引入了最大熵的概念。

传统强化学习的目标是最大化累积奖励,而SAC在此基础上还要最大化策略的熵。说白了,就是既要赚钱,又要保持多样性

SAC的优化目标:

J = E[ r + α * H(π) ]

其中H(π)是策略的熵,α是温度系数,控制探索与利用的平衡。

SAC的优势很明显:

  • 探索能力强:因为鼓励策略随机性,不容易陷入局部最优
  • 样本效率高:比PPO更擅长利用数据
  • 收敛稳定:最大熵项起到了正则化作用

我的建议:如果你的任务需要精细控制,比如机器人灵巧手操作,SAC往往比PPO表现更好。但要注意,SAC对温度系数α很敏感,我一般会用自动调节α的版本,省去手动调参的麻烦。

知识体系总览

为了让大家更直观地理解这些算法之间的关系,我画了一张图:

深度强化学习算法演进图 马尔可夫决策过程 (MDP) 值函数方法 策略梯度方法 Q-Learning / DQN REINFORCE / PG Actor-Critic 架构 PPO SAC

从这张图可以清楚看到,MDP是所有算法的基础。值函数方法和策略梯度方法各自发展,最终在Actor-Critic架构中汇合。而PPO和SAC,则是当前最优秀的两个代表。

小结

好了,今天的内容就到这里。我们回顾了MDP、Q-Learning、策略梯度、Actor-Critic、PPO和SAC。这些是深度强化学习的核心基础,也是后续模型压缩的起点。

记住一句话:没有最好的算法,只有最合适的算法。PPO适合稳定可靠的场景,SAC适合需要精细探索的任务。具体选哪个,取决于你的运动控制需求。

下一章,我们会深入讨论模型压缩的必要性和挑战。到时候见。


专注资料整理