
前面聊了监督学习检测、分割、里程计和无监督学习的基础。现在进入一个新的领域强化学习Reinforcement Learning, RL。强化学习和监督学习的根本区别在于监督学习是告诉你答案让你学强化学习是让你自己试错通过奖惩信号来学。机器人领域很多任务天然适合强化学习——走路、抓取、导航这些技能很难用标注数据教会但可以通过试错来掌握。什么是强化学习强化学习的核心设定是这样的一个智能体agent在一个环境environment中通过执行动作action来改变环境的状态state并从环境中获得奖励reward。agent的目标是找到一套行为规则策略policy使得长期累积奖励最大化。用一个机器人的例子来理解。一个四足机器人agent在地面上environment它控制关节电机action改变自身的姿态和位置state目标是往前走。每走一步获得正奖励摔倒获得负奖励。通过大量的尝试机器人逐渐学会怎么协调关节来稳定行走。这个框架的关键要素可以用一个缩写来记忆MDPMarkov Decision Process马尔可夫决策过程。MDP的五元组MDP用五个元素来形式化一个强化学习问题(S, A, P, R, γ)。S是状态空间所有可能的状态的集合。对机器人来说状态可能是关节角度、角速度、IMU数据、相机图像等。状态的定义直接决定了问题的难度——状态选得不好再好的算法也白搭。A是动作空间agent可以执行的所有动作的集合。可以是离散的前进、后退、左转、右转也可以是连续的关节力矩从-10Nm到10Nm的任意值。机器人控制中大多是连续动作空间因为电机的输出是连续量。P是状态转移概率P(s|s,a)表示在状态s执行动作a后转移到状态s的概率。这个概率描述了环境的动态特性。在确定性环境中P是0或1在随机环境中比如有打滑的机器人P是一个概率分布。R是奖励函数R(s,a,s)表示从状态s执行动作a到达状态s后获得的即时奖励。奖励函数的设计是强化学习中最考验功底的部分——设计不好会导致agent钻空子reward hacking。γ是折扣因子取值0到1之间。它决定了未来奖励的权重。γ0.99意味着100步后的奖励权重是0.99^100≈0.37。γ太小agent只看眼前利益γ太大训练会不稳定。机器人控制中一般取0.99到0.999。马尔可夫性质MDP的名字里有个马尔可夫这指的是马尔可夫性质未来只跟当前状态有关跟历史无关。数学表达是P(s_{t1}|s_t, a_t, s_{t-1}, a_{t-1}, ...) P(s_{t1}|s_t, a_t)。这个假设在现实中往往不严格成立。比如机器人的电池电量会影响未来的性能但如果你不把电量包含在状态里当前状态就不包含这个信息。解决办法是把状态定义得足够丰富把所有影响未来的因素都包含进去。在实际项目中马尔可夫性质是否成立取决于你怎么定义状态。如果状态包含了足够的信息充分统计量那马尔可夫假设就是合理的。这也是为什么状态设计是强化学习中最重要的环节之一。策略与价值函数策略π是从状态到动作的映射。确定性策略aπ(s)直接给出动作随机策略π(a|s)给出每个动作的概率。价值函数V(s)表示从状态s出发按照策略π行动能获得的期望累积奖励。它是评估一个状态好不好的指标。比如在下棋的例子中V(s)高的状态意味着当前棋面对你有利。动作价值函数Q(s,a)表示在状态s执行动作a然后按照策略π行动能获得的期望累积奖励。它不仅评估状态还评估在特定状态下采取特定动作的价值。Q函数在离散动作空间中特别有用——你可以比较所有动作的Q值选最大的那个执行这就是ε-greedy策略的基础。优势函数A(s,a) Q(s,a) - V(s)表示动作a相对于平均水平的好坏。A0说明这个动作比平均好A0说明比平均差。优势函数在Actor-Critic方法中非常重要用它来更新策略可以减少方差。# 价值函数的Bellman方程 # V(s) E[R(s,a) γ * V(s)] # Q(s,a) E[R(s,a,s) γ * Q(s, a)] # 其中 a ~ π(·|s)这两个函数之间的关系是强化学习算法的核心。基于价值的方法如DQN学习Q函数从中推导出策略。基于策略的方法如策略梯度直接优化策略。Actor-Critic方法两者结合——Actor是策略网络Critic是价值网络。贝尔曼方程与最优策略贝尔曼方程是强化学习的数学基础。它把价值函数分解为即时奖励加上下一步价值的折扣值形成了一个递归关系。最优策略π是在所有策略中能获得最大累积奖励的那个。对应的最优价值函数V(s)和Q*(s,a)满足贝尔曼最优方程把max操作替代了期望。# 贝尔曼最优方程 # V*(s) max_a { R(s,a) γ * Σ P(s|s,a) V*(s) } # Q*(s,a) R(s,a) γ * Σ P(s|s,a) max_a Q*(s, a) # π*(s) argmax_a Q*(s,a)对于状态空间和动作空间都比较小的离散问题可以用动态规划直接求解最优策略。价值迭代Value Iteration是反复用贝尔曼最优方程更新V值直到收敛。策略迭代Policy Iteration是交替做策略评估计算当前策略的V值和策略改进根据V值贪心更新策略直到策略不再变化。两种方法都能保证收敛到最优策略但计算量随状态空间指数增长。在机器人领域状态空间通常是连续的、高维的想想一个7自由度机械臂的状态空间是14维的7个关节角度7个关节角速度动态规划不可行必须用函数近似比如神经网络来估计价值函数或策略。这就是深度强化学习要解决的问题。面试要点面试中聊强化学习基础有几个点要能讲清楚。MDP和监督学习的区别。监督学习是给定输入-输出对学习映射关系。强化学习没有标注数据agent必须通过与环境交互来学习。奖励信号是稀疏的、延迟的——一个动作的好坏可能要很多步之后才能看出来。这导致了信用分配问题credit assignment怎么把最终的奖励归因到每一步的动作上奖励设计的坑。奖励函数设计不好agent会找漏洞。经典案例在一个跑步机器人任务中agent发现原地转圈比往前跑能获得更高的奖励因为奖励函数只考虑了速度大小没考虑方向。另一个案例是在一个收集硬币的任务中agent发现反复捡起放下同一个硬币能刷更多奖励而不是去收集新的硬币。这种reward hacking问题在实际项目中非常常见。解决办法包括加入约束条件、用多目标奖励组合、或者干脆换用模仿学习让agent看专家怎么做而不是告诉它目标是什么。面试时能举出具体例子会加分。POMDP的问题。现实中很多机器人场景不满足马尔可夫性质——当前观测不包含全部信息。比如机器人在迷宫中导航传感器只能看到局部环境无法看到整个地图。这时候状态不是完全可观测的问题变成了POMDP部分可观测马尔可夫决策过程。解决办法是用RNN/LSTM编码历史观测序列或者用注意力机制维护一个信念状态。这在机器人导航中是非常实际的问题。维数灾难。状态空间维度增加时需要的样本量指数增长。一个10维状态空间用100个网格点离散化就是100^10 10^20个状态根本没法遍历。这就是为什么需要深度强化学习——用神经网络来近似价值函数或策略避免显式遍历所有状态。给你的建议入门强化学习建议先学Sutton和Barto的教材Reinforcement Learning: An Introduction。这本书是RL领域的圣经免费电子版在官网上能下载。前几章把MDP、动态规划、蒙特卡洛方法讲得非常清楚。然后上手跑代码。OpenAI的Gymnasium原Gym是练习RL算法的标准平台。从CartPole这种简单环境开始实现一个DQN跑通之后再做更复杂的任务。机器人相关的可以用MuJoCo或者Isaac Gym。面试时强化学习的考察深度取决于岗位。如果是机器人算法岗MDP、策略梯度、Actor-Critic这些基础概念必须掌握。如果是研究岗还需要了解PPO、SAC等具体算法的细节。上一篇第300篇 Transformer——从注意力机制到机器人应用下一篇预告第302篇 策略梯度——从REINFORCE到现代方法