本文整理一下个人对基于POMDP深度强化学习的方法做自动驾驶决策算法的一些理解。
一、Alpha Go & Alpha Zero中的决策
在EUDM和MPDM等自动驾驶决策算法中,都提到了Forward Simulation前向搜索的过程,该过程可以在Alpha Go & Alpha Zero中的MCTS蒙特卡洛树搜索算法中获得启发。
前向搜索过程每一步都要罗列出全部的可能的决策,即使某种决策的概率很小。
而MCTS可以通过减小搜索广度和深度,来有效降低前向搜索的复杂度。MCTS中评价动作 a 好坏的公式为
其中,表示动作 a 被访问过的次数,表示动作 a 在过去次访问后的平均动作价值,表示由神经网络NN训练后在状态 state 下决策采取动作 a 的概率。
每到一个状态 state 而触发MCTS时,首先需要将和都初始为0,后续遍历到动作 a 时,就会加一,而一次前向搜索到底结束之后,即在采取动作 a 之后,根据交互的多种可能情况,计算状态价值, 即根据策略 预测对方将采取何种动作 a 之后到达的状态,后续继续根据状态 和策略 选择己方和预测对方选择的交互动作 ,到达新状态 后继续交互动作 ,依次递推一直进行到底,形成多条对局情况,推到最后分出胜负,会给出一个reward,赢为正输为负。可以将在当前状态下可选择的动作视为主分支,而后续前向搜索的过程都是基于某个主分支继续往后进行的,因此被遍历到的动作 a 会增加一条状态价值记录,计算公式为
其中是由NN训练出来的价值网络。接下来在动作 a 被遍历到而有新的状态价值记录进来之后,会更新为所有的状态价值记录的均值。
MCTS的搜索广度是逐渐收敛的,可以根据动作评分公式定位到几个好的动作作为主分支再进行前向搜索。初始时和都为0,此时NN模型输出的概率高的动作的评分更高,因此MCTS会定位到它们这几个动作,作为主分支进行前向搜索;之后随着遍历次数增多,变得很小,此时动作评分更青睐于,因此MCTS会定位到高的几个动作,此时之前的一些概率比较高但是可能动作价值低的动作就会被抛弃;之后MCTS继续进行,此时之前动作价值可能比较高的动作,随着现在被更精准的定位而更多次的被遍历,可能会显现出不足,这些动作又会被进一步抛弃;最终MCTS会选择被遍历次数最高的动作作为下一步决策,这是因为MCTS一直在选择淘汰而定位评分高的动作,评分低的动作逐渐就会被放弃,而评分高的动作会被精准定位从而更多次的被遍历到,闭环逻辑。
需要注意的是,Alpha Go & Alpha Zero中进行MCTS的目的,是想通过多次仿真棋局到结尾,计算此步下选择不同动作 a 最后能够获胜的概率,从而选择获胜概率最大的那个动作,也就是说,Alpha Go & Alpha Zero的MCTS仅仅是确定了未来一步的决策,MPDM中也是有同样的问题,只能够做接下来的一步决策。然而在自动驾驶中,驾驶员正常会根据局面进行多步的考量,比如在超车的场景,驾驶员至少会做三步决策,即lane keep→lane change→lane keep,在EUDM论文中也提出了这个问题。
得到MCTS的启发,下面将POMDP应用到自动驾驶时的场景做一下分析。