连载文章,长期更新,欢迎关注:
写在前面
第1章-ROS入门必备知识
第2章-C++编程范式
第3章-OpenCV图像处理
第4章-机器人传感器
第5章-机器人主机
第6章-机器人底盘
第7章-SLAM中的数学基础
第8章-激光SLAM系统
第9章-视觉SLAM系统
第10章-其他SLAM系统
第11章-自主导航中的数学基础
11.1 自主导航发展简史
11.2 环境感知
11.3 路径规划
11.4 运动控制
11.5 强化学习与自主导航
第12章-典型自主导航系统
第13章-机器人SLAM导航综合实战
强化学习(Reinforcement Learning,RL)[21]属于机器学习领域的一个分支,其学习目标是获得最大回报。在10.3.1节中已经讨论过,机器学习过程主要涉及四个要素:数据、模型、学习策略和学习算法,有监督学习、无监督学习和强化学习都是指学习策略。有监督学习以最小化误差为学习目标,也就是让预测值尽量逼近于训练样本监督标签,这样预测与样本监督标签之间的误差才会越小。虽然无监督学习不像有监督学习那样有明确的学习目标,但无监督学习也有指导其学习的评价准则,比如让系统趋于平衡态、让系统组织最简化等。强化学习以最大化回报为学习目标,是一种不断试错并追求长期回报的算法。
拿有监督学习和强化学习对比,前者解决的是逼近问题,而后者解决的是决策问题。比如在车牌识别问题中,有监督学习关心输入图片中的数字是否能被准确识别,输入与输出之间有明确对应关系(正确答案唯一)。而在围棋问题中,强化学习关心当前棋局下采取什么落子方式能最终赢得比赛,输入与输出之间没有唯一对应关系(正确答案不唯一),你可以采用多种落子方式只要能争取到更多获胜机会就可以了。不过强化学习与其他学习之间并没有绝对的界限,反而是在不断融合走向统一的趋势,比如深度强化学习就是很好的例子。
强化学习特别适合用于解决决策问题,比如复杂控制、人机对话、无人驾驶、打游戏等决策场景。更准确点说应该是解决序贯决策问题,就是需要持续不断做出决策以便能实现最终目标的问题。机器人自主导航是典型的序贯决策问题,通过单次决策仅能让机器人移动一小段距离,要持续不断做决策才能让机器人一步一步逐渐抵达指定地点。基于强化学习的方法不需要构建具有确定物理意义的模型也不需要设计专门的控制器,只需要构建一个强化学习算法让算法自动在环境交互中学习,学成后强化学习算法就获得了控制机器人自动移动到指定地点的自主导航能力。
强化学习的过程,如图11-35所示。其中智能体就是承载强化学习算法的主体,比如机器人。智能体与环境之间通过状态和行动实现交互,同时环境会对智能体的每次行动给予回报。假设智能体为机器人,智能体的任务是完成在地图中自主导航,那么状态就代表机器人在地图中的位置以及周围障碍情况,行动就代表机器人的线速度和角速度。回报则是对机器人当前行动表现好坏的评价,比如行动执行后使得机器人处于不利状态(靠近障碍物、与障碍物发生碰撞、远离导航目标点等)时回报为负数值,而行动执行后使得机器人处于有利状态(远离障碍物、靠近导航目标点等)时回报为正数值。当然定义回报的形式并不唯一,可以根据实际任务及需求来定义。连接状态与行动关系的就是策略,连接行动与状态关系的则是状态转移。在没有学习之前,策略对环境一无所知(比如无论状态是什么,它都输出控制机器人向前移动的相同行动)。现在让机器人与环境进行交互来学习,交互过程可以用式(11-27)这条状态-行动链条表示,交互过程直到终止条件(比如机器人抵达目标点、机器人与障碍物发生碰撞)发生时为止,式中状态下的数值为回报。
由于此时策略对环境一无所知,依照此策略产生的状态-行动链条获得总回报极低,因为这种盲目行动很容易碰撞到障碍物而获得负数值回报的惩罚。那么就必须要利于本次交互的回报数据对策略进行调整,也就是调整到的映射关系。可能最容易想到的调整方法是将那些表现不利的映射关系改变一下,但下文即将介绍的实际方法要复杂得多,这也是强化学习中各种算法讨论的重点。当策略经过调整后,继续进行交互学习,得到如式(11-28)所示的状态-行动链条。
可以发现式(11-28)的总回报(-1+1+1-1 = 0)比式(11-27)的总回报(-1+1-1 = -1)有所提高,当然用更新后的策略做交互试验产生的回报也可能会降低。不管单次交互试验回报提高还是降低,经过大量交互试验后回报一般会收敛到某个较高的值,而此次对应的策略就是强化学习学到的东西。因为每步动作都获得最大回报,那么整个交互链条的总回报也必然最大。反过来,能使交互链条总回报最大化的策略必然也能使每步动作回报最大化,到这里应该就不难理解为什么说强化学习的学习目标是获得最大回报了吧。由于交互试验次数的限制和策略更新方法的缺陷等因素,强化学习实际上只求取了局部最优解。当然很多场合利用局部最优解策略就已经能工作起来了,此时可以利用工作产生的交互数据继续改进策略或者改进策略更新方法。
图11-35 强化学习的过程
1.马尔可夫决策过程
上面只是用非常通俗的语言对强化学习的过程进行了描述,但要设计具体算法时就必须借助数学语言进行描述了。强化学习主要用来解决序贯决策问题,而序贯决策问题通常用马尔可夫决策过程(Markov Decision Process,MDP)来描述,下面对马尔可夫决策过程的数学形式进行介绍。
(1)马尔可夫性、马尔可夫过程和马尔可夫决策过程
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(2)价值函数
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(3)贝尔曼方程
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(4)贝尔曼最优方程
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(5)马尔可夫决策过程求解方法
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
2.动态规划方法
通过上面的内容已经知道马尔可夫决策过程根据不同的讨论维度可以分为不同类别的具体问题。有限状态空间、有限动作空间、有模型的问题是马尔可夫决策过程最简单的一种形式,虽然这种形式的求解方法在实际中用处并不大,但透过它可以帮助我们很好地理解强化学习算法的工作原理,这正是首先要介绍这种形式的求解方法的原因。
对于有限状态空间、有限动作空间、有模型的马尔可夫决策过程普遍采用动态规划来求解,动态规划具体分为策略迭代和价值迭代,策略迭代和价值迭代又包含同步和异步两种算法,如图11-41所示。这里解释一下有限状态空间和有限动作空间中“有限”的含义。对于包含离散且个数可数状态的状态空间(比如)就称为有限状态空间,包含离散但个数不可数状态或者连续状态的状态空间称为非有限状态空间。类似地,对于包含离散且个数可数动作的动作空间(比如)就称为有限动作空间,包含离散但个数不可数动作或者连续动作的动作空间称为非有限动作空间。有模型就不多说了,是指环境状态概率转移模型已知。另外动态规划包含两大要素,一个要素是整个优化问题可以分解成多个子优化问题,另一个要素是子优化问题的解可以存储下来并能被重复利用,这两个要素将在下面所介绍的具体算法中体现出来。
图11-41 动态规划方法
(1)策略迭代
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(2)价值迭代
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(3)广义策略迭代
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
3.采样方法
在环境状态概率转移模型已知时,动态规划方法中可以直接用贝尔曼方程来求解策略的价值函数。但真实应用场景的环境状态概率转移模型往往是未知的,那么就不能直接用贝尔曼方程来求解策略的价值函数了。采样方法其实是用采样所得统计样本的平均回报来近似期望回报,可以说采样方法采用统计学来计算价值函数,而动态规划方法采用概率学来计算价值函数。这里以求解随机变量的期望值来说明概率学期望与统计学平均的关系,对于随机变量的概率分布已知的情况,可以直接用式(11-57)期望的定义来求的期望值;当随机变量的概率分布未知时,只能通过反复测量得到多个样本,并用式(11-58)求这些样本的平均值。根据大数定律,在样本足够多时平均值能逼近期望值。除了计算价值函数的方法不同外,采样方法与动态规划方法基本一样,也包括策略评估和策略改进两个步骤。
动态规划方法用于求解有限状态空间、有限动作空间、有模型的马尔可夫决策过程这种理想形式,虽然动态规划方法实际用处不大,但动态规划方法是后面各种实用强化学习方法的理论基石。而采样方法用于求解有限状态空间、有限动作空间、无模型的马尔可夫决策过程这种更实际形式,采样方法具体分为蒙特卡洛和时间差分,蒙特卡洛和时间差分又包含同策略和异策略两种算法,如图11-43所示。
图11-43 采样方法
(1)蒙特卡洛
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
(2)时间差分
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
4.价值函数逼近
无论是动态规划还是采样方法,所解决问题的前提条件都是有限状态空间和有限动作空间。也就是说算法中出现的价值函数实际是以表格的形式呈现,而并非函数解析式的形式呈现,因此动态规划方法和采样方法也被称为表格型方法。假如包含5个状态的有限状态空间为,包含3个动作的有限动作空间为。那么的函数映射实际上是用如表11-2所示的一张维大小的表格来记录的,表格的索引是状态,表格的取值是状态的价值。同样地,的函数映射实际上是用如表11-3所示的一张维大小的表格来记录的,表格的索引是状态与动作,表格的取值是状态-行动的价值。从表11-2和11-3展示的价值函数与的呈现形式,就应该理解为何要将动态规划方法和采样方法也被称为表格型方法了吧。
表11-2 状态的价值函数
表11-3 状态-行动的价值函数的表格记录
...
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
...
5.策略搜索
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
接下来就以论文[29,30,31]给出的三种算法(AutoRL、PRM-RL和AutoRL+PRM-RL)为例,来介绍用强化学习实现自主导航的大致思路。当然基于机器学习(特别是强化学习)的自主导航算法有很多优秀例子,感兴趣的话可以阅读相关文献[32,33,34,35,36],由于篇幅限制就不一一介绍了。
1.AutoRL
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
2.PRM-RL
(先占个坑,有时间再来补充详细内容,大家可以直接看文后的参考文献)
Github下载:github.com/xiihoo/Books_Robot_SLAM_Navigation
Gitee下载(国内访问速度快):gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation
【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.