Advertisement

强化学习与自动驾驶-Safe, Multi-Agent, Reinforcement Learning for Autonomous Driving

阅读量:

读了一篇文章 “Safe, Multi-Agent, Reinforcement Learning for Autonomous Driving”,因为我本人不是做强化学习的,所以读的路上磕磕绊绊…除了阅读原文,还借鉴了一些他人的理解,链接也贴在下面了,有细节不懂的强烈建议看看!之后才对文章有个大概认识,我用自己的理解顺序来给大家介绍,如有问题欢迎批评指正。

原文链接:https://arxiv.org/pdf/1610.03295.pdf
参考链接1:https://zhuanlan.zhihu.com/p/31147349?from_voters_page=true
参考链接2:https://zhuanlan.zhihu.com/p/25673276?from=timeline

背景

主车在超车、让路、合并、左右转弯和向前推进等情况,需要与其他道路使用者开展技巧谈判。本文应用深度强化学习于长期驾驶策略的形成问题。自动驾驶区别其他任务在于需要确保功能安全以及不能用马尔可夫决策过程(MDP)模型,因为它不可预测其他智能体的行为。这篇文章的贡献有三:

  • 交代了如何使用策略梯度迭代,从而避免使用马尔可夫决策;
  • 把整个分析自动驾驶的过程分解为愿望政策 Desires (需要学习)和有硬约束的轨迹规划(不需要学习);
  • 引入一个分层的时间抽象,称为 Option Graph

第一个贡献点

本文中,作者通过一系列数学推导发现,使用策略梯度法,马尔科夫假设是不必要的,因为在推导奖励函数期望的梯度时,带有马尔科夫假设的概率项总是积分为1,即对最后的表达结果不构成影响。
使用策略梯度法进行增强学习,对奖励函数的估计总会有方差过大的问题。作者用在奖励函数上直接减去一个baseline系数来解决。
在这里插入图片描述经过一些对比实验,证明其能解决累积奖励估计的方差过大问题。

第二个贡献点

强化学习中,针对高维输入状态空间,想学习到绝对禁止的某个低概率事件状态的策略,在目前reward设计理论下,难以做到。在reward设计中,假如针对这种非常偶发的边际事件,比如事故,给予一个惩罚,负的奖励。一般我们希望事故概率p非常小,比如p=10e-9,那么惩罚r就必须非常的大(r >> 10e+9),这也符合直观的想象,但是,若这样,因为R(s)的方差与p乘以r平方成正比(如下式3),这比 r 还要更加巨大,这会导致策略reward目标函值都很难计算,更别说梯度估计了,如下式中,奖励函数R(s)的方差实际还大于p乘以r平方:
在这里插入图片描述通过上面讨论可知,在不引起策略梯度估计严重的方差问题情形下,通过强化学习的奖励函数是无法确保功能安全的,作者通过一系列解释证明了即使用减去梯度baseline的方法也没有帮助。于是文章提出了以下政策公式。
在这里插入图片描述安全硬约束不通过学习框架来实现, 将整个驾驶策略分为不可学习的前一项 和可学习的后一项

前一项:确保安全

将某期望动作映射到一个车小范围内运动轨迹,首先,期望动作转化为驾驶轨迹的cost函数,然后,查找一个能最小化cost函数并满足安全硬约束的策略(车的位置不能在车道外、两车的位置不能在同一时刻位置过近而碰撞、符合车辆运动动力学),这部分不是通过学习实现的。
在这里插入图片描述这两张图均来源于参考链接1上面的两张图片均来自参考链接1,我看论文看的头疼,这个解释让人恍然大悟,就跟着这个走了。

后一项:确保舒适

强化学习从人类驾驶员经验中学习,将状态空间映射到一个期望动作集合。这一部分负责做宏观行为决策(是否需要超车、确定目标车道等)。怎么能让这个行为决策过程提高效率呢,就要用到接下来的第三个贡献点。

第三个贡献点

引入先验知识到模型中可提升解释性。这里的先验知识就是使用有向无环图(DAG图),系统存在很多个这样的选择图,针对不同场景进行行为决策,用传统或深度学习方式,根据环境信息判断是否进入某个选择图的root节点。为了便于理解,文章中也举了一个例子。
在这里插入图片描述关于例子的描述我先看的中文翻译竟然没看懂,然后直接看英文原文就懂了…所以这里直接贴原文的表述。

A possible option graph for the double merge scenario is depicted in Figure 2. The root node first decides if we are within the merging area or if we are approaching it and need to prepare for it. In both cases, we need to decide whether to change lane (to left or right side) or to stay in lane. If we have decided to change lane we need to decide if we can go on and perform the lane change maneuver (the “go” node). If it is not possible, we can try to “push” our way (by aiming at being on the lane mark) or to “stay” in the same lane. This determines the desired lateral position in a natural way — for example, if we change lane from lane 2 to lane 3, “go” sets the desire lateral position to 3, “stay” sets the desire lateral position to 2, and “push” sets the desire lateral position to 2.5. Next, we should decide whether to keep the “same” speed, “accelerate” or “decelerate”. Finally, we enter a “chain like” structure that goes over all the vehicles and sets their semantic meaning to a value in {g, t, o}. This sets the desires for the semantic meaning of vehicles in an obvious way. Note that we share the parameters of all the nodes in this chain (similarly to Recurrent Neural Networks).

最后讨论了选择图的训练过程。完成模仿学习初始化之后,策略的进一步更新是在模拟器中通过 self-play 完成,即将agents分为A和B两组,让它们轮流做主车、他车,每一轮训练收敛后交替角色,这样反复训练约10轮。

全部评论 (0)

还没有任何评论哟~