基于深度Q-Learning的信号灯配时优化研究
2021-08-27董小明
赵 纯,董小明
(安庆师范大学 计算机与信息学院,安徽 安庆 246000)
0 引 言
随着机动车数量的不断增长,道路交叉口的拥堵问题迫在眉睫,想要更好地处理交通拥堵问题,就必须从根源出发。传统的交通信号控制时间固定,导致绿灯阶段的不必要等待,造成了极大的资源浪费,而且也需要大量的人力物力资源[1]。因此通过交通信号控制,能够很好地缓解拥堵压力,减少交通事故的发生,使系统更加效率化和合理化。
交叉口路网系统具有一定的不确定性和实时性,因此需要设计一个能够感知状态变化、选择最优时间的控制器。由于近年来交通控制系统的目标是通过预测未来的交通状态提前制定适当的控制方案[2],这一方案突出了智能交通的重要性和艰巨性。但是随着强化学习和深度学习的不断发展进步,有许多学者把深度学习和强化学习结合为深度强化学习应用到交通控制上[3]。机器学习是目前快速发展的理论方向,包含了众多的研究方向,而强化学习是机器学习的一个领域,使得强化学习成为时下研究的热点问题之一[4-5]。
强化学习是一种自适应生成控制策略,其中一个或多个Agent学习如何利用Agent和环境本身之间的交互产生的经验来解决环境中的任务。早期阶段的交通信号强化学习控制对手动特征提取有着很大的依赖性,需要极大的人力资源,而且状态非常不稳定,很容易就丢失最主要的状态信息。强化学习由于近年来AlphaGo[6]等的成功而越来越吸引人们的关注和研究兴趣。
文中提出的方法主要优势在于:
(1)通过采用密集采样策略和改进后的奖励函数相结合的方式对Agent模型进行修改,这种方式在一定程度上提高了控制的性能。
(2)所有的仿真实验都是使用现在国际主流的交通模拟软件(simulation of urban mobility,SUMO)来完成的,大大提高了实验的可靠性和稳定性。
(3)参数设置合理,通过多次实验减少偶然性,提高了控制系统的稳定性。
1 交通信号配时的深度Q-Learning算法
文中的Agent通过与环境进行交互学习如何制定一个最优策略[7]。交互由微型交通模拟器进行处理,模拟器能够让智能体体验多种情况,并在模拟过程中学习哪些因素影响并激活了错误的信号灯相位。在强化学习框架[8]中,Agent被定义为三个基本属性:状态表示、一组可能的行为和奖励函数。
1.1 状态表示
近年来有关交通信号灯控制器的研究工作提出了信息丰富的状态,但在现实中,由于这种表示中所使用的信息很难收集,所以很难实现。而Agent感知到某一时刻t的环境状态,这里使用一种简单并且易于应用的状态表示方法来增加获得良好结果的可能性。在交叉口的每一条臂上,进入的车辆在单元中被离散化,这些单元可以识别其中是否有车辆。环境状况被表现为路面的离散化,目的是告知Agent车辆在特定时间内的位置。
1.2 动作行为
动作集确定了Agent可用的交互方式,它被定义为一个交通灯的配置,执行一个操作就意味着在一组车道上将一些交通灯变绿,并保持固定的时间。以下表示Agent可以采取的所有可能的操作:
·东西向前进:绿色阶段适用于位于东西向且想要直行或右转的车辆。
·东西向左转:绿色阶段适用于处于东西向并希望左转的车辆。
·南北前进:绿色阶段适用于位于南北向并希望直行或右转的车辆。
·南北向左转:绿色阶段适用于位于南北向并希望左转的车辆。
1.3 奖 励
根据Agent选择的动作行为,从环境中产生反馈给Agent,以评估其选择的行动。Agent通过收到的奖励来改进其将来的行为选择策略,积极的奖励是好的行动的反馈结果,而消极的奖励是在选择坏的行动之后得到的。在此实验中,目标是最大化通过交叉口的交通流量。为了达到这个目标,奖励应该从一些绩效指标中获得确信的流量效率,因此Agent能够理解是否采取了合理的行动来提高或降低交叉口效率。
1.4 传统的Q学习
Q-Learning是无模型强化学习的一种形式,它包括为从特定状态执行的操作并分配一个称为Q-value的值。Q-value的目的是量化一个行动的优缺点,使用即时奖励和最大预期未来回报相结合,这样Agent就知道哪些行动将导致最佳的总体策略[9]。然后,该状态与该状态的动作值之间的映射被一个深层神经网络逼近。
传统的Q学习算法[10-11]更新式如下:
Q(st,at)=Q(st,at)+α(rt+1+γ.maxAQ(st+1,at+1)-Q(st,at))
(1)
该方程使用学习率α来更新当前的Q值。rt+1表示与在状态st处采取行动相关的奖励,Q(st+1,at)表示近期未来的Q值,st+1是环境在状态st选择动作后演化的下一个状态,γ是假设值介于0和1之间的折扣因子,通过这个折扣因子可以降低未来奖励的重要性。
1.5 Q-Learning更新公式
文中使用了改进后的公式,如下:
Q(st,at)=rt+1+γ.maxAQ'(st+1,at+1)
(2)
奖励rt+1是在st采取行动之后才收到的奖励,Q(st,at)是st+1采取相关行动后有关的Q值,也就是采取行动后的下一个状态,折扣因子γ表示和即时奖励相比,未来奖励的惩罚相对较小。这个公式是通过即时奖励和未来动作的折扣Q值来更新状态st中当前行动Q值的规则。所以,表示未来动作隐含价值的Q'(st+1,at+1)是持有st+1之后的最大折扣回报,即Q''(st+2,at+2)。同样,它也拥有下一个状态的最大折扣回报,即Q'''(st+3,at+3)。这就说明不管Agent如何选择动作,不仅仅基于即时奖励,而且也基于未来预期折扣奖励。在模拟过程中,Agent迭代地获得关于动作序列值的知识。最后,希望它能够选择动作序列,从而获得更高的累积回报以获得最佳性能。
1.6 奖励函数
文中涉及的奖励函数:
文献奖励函数:当Agent选择一个错误的动作时,就给它返回一个负值,当它选择一个好的动作时,就给它返回一个正值。不良行为可以表示为在当前时间步骤t中,与前一时间步骤t-1中的情况相比,在队列中添加更多车辆的操作,导致与上一时间步骤相比等待时间更长。
文献奖励函数的等式如下:
rt=Swt-1-Swt
(3)
其中,rt表示在时间步骤t的奖励,Swt-1和Swt是在时刻t-1和t时所有车辆的总等待时间。
将上面这个等式进行了改进,表示如下:
rt=0.8·Swt-1-Swt
(4)
等式符号与式(3)基本相同,唯一的不同就在于系数为0.8,修改这个系数的主要原因是增加所获得奖励的幅度。这种变化的效果是,Agent对行动的后果有更强的代表性,训练的有效性得到了提高。
1.7 深度神经网络
文中使用了深度Q-Learning算法,将观察到的环境状态st映射到与动作相关的Q值,并搭建一个深度神经网络[12]。它的输入是时间步长为t时的IDR(环境状态向量),深度神经网络的输出是来自状态st的作用Q值。
一般地,神经网络的输入nin被定义为:
(5)
(6)
神经网络是基于感知机的扩展,而深度神经网络(DNN)可以理解为有很多隐藏层的神经网络。多层神经网络和深度神经网络DNN其实也是指的一个东西,DNN有时也叫做多层感知机,它是一种具有校正线性单位激活函数和完全连接的深层神经网络。图1清楚地展示了神经网络的层与层之间的联系。
图1 神经网络训练机制
从图1可以看出,作为深度神经网络的输入,输入了n个IDR向量,并传输给神经网络层进行训练,训练结束后输出与时间步t相关的Q-Value值。
2 仿真实验
本实验所使用的实验环境是国际通用的交通模拟软件SUMO[13](simulation of urban mobility),它是一种开源,微观,多模态的交通模拟,具体到道路上每一辆车的运行路线都可以单独规划,允许模拟由单个车辆组成的给定交通需求。如何在给定的道路网络中移动,示意图如图2所示。使用可视化编辑器NetEdit设计交叉口的静态元素,环境由一个4方向的交叉口来表示,每个臂有4条驶入的车道和4条驶出的车道,每条臂长700米,车辆接近交叉口的时候,有三个方向的车道可以选择,真实地还原了十字交叉口的车辆情况。通过这个软件,用户可以随心所欲地设计道路基础设施的每一个元素,包括道路特性、交叉口的车道连接等,实现交通流的微观控制。环境中的交通灯系统由每个入口车道的停车线上的颜色表示,该颜色表示车道在精确时间步长上的交通灯状态。环境中的每个红绿灯都是按照以下规则工作的:
图2 交通路网
(1)颜色的相位变化总是这样的:红绿黄红。
(2)每个红绿灯相位的持续时间是固定的。绿色时间始终为10秒,黄色时间始终为4秒。因此,红色相位的持续时间被定义为自上次相位变化以来的时间量。
(3)对于每个时间步,至少有一个红绿灯处于黄色或绿色相位。
(4)不可能所有的红绿灯同时处于红灯状态。
为了比较Agent的性能差异,引入了静态交通系统[14]作为比较的基线。静态交通系统具有相同的红绿灯相位集,以相同的顺序遍历每个红绿灯相位,并且具有固定的预定义持续时间。
在交通量特别少的情况下,交通灯固定循环不是一个好的策略,因为许多车辆都会等待大量的时间,并且会亮起空车道的相位灯。但是在交通量大的情况下,来自四面八方的车辆很多,因此静态交通灯的政策可以说是最有效的。在南北向交通和东西向交通场景中,需要更多绿灯时间的车道但没有优先次序,因为有一个固定的周期,这将使得排队时间较长的车辆等待的时间超过必要时间,从而导致系统的性能平庸。静态交通灯的评价结果如表1所示,此数据将作为对比Agent性能的重要指标之一。
表1 静态交通灯评价结果
Traci(traffic control interface)是SUMO给出的连接到交通仿真的一个接口,使得人们可以获取仿真中的参数还有实时控制仿真。Traci使用基于TCP的客户端/服务器体系结构,将SUMO作为服务器,可以将车辆的特性、类型和外观进行定义,还可以与运行中的模拟进行交互操作,在每个时间步长里检索交叉口的实时状态。模拟训练过程如图3所示,用户通过SUMO-GUI工具观看图形化模拟过程,可用于检查Agent的性能。
图3 训练过程
模型实验使用了以下的超参数进行模拟训练:
神经网络:5层,每层包含400个神经元。
γ值:0.25。
奖励函数:文献奖励。
采样策略:通过这种方式,代理将尝试更多地考虑其对环境演化的预测,从而选择当前的操作,使接下来的几个操作的预期回报最大化。这种方式有很长的前瞻性,并且每一步都试图寻找最佳的策略来获得最佳绩效,但是缺乏一定的稳定性,具体表现通过下面的实验结果体现。
文中对实验的策略进行了改进,通过结合密集采样策略和改进后的奖励函数对Ag ent模型进行训练,超参数如下:
神经网络:5层,每层包含400个神经元。
γ值:0.75。
奖励函数:改进后的奖励函数。
采样策略:密集采样策略。通过强化该模型的实施和测试,从而提高γ值较高的时候Agent在训练阶段的性能,这种新的奖励函数和抽样策略的结合有利于解决Q值不稳定的问题,减少了未来最佳行为误导的可能性。Agent的培训阶段包括在给定的环境状态下找到最有价值的行动。尽管如此,在训练的早期阶段,并不知道哪些动作是最有价值的。为了克服这一问题,在培训开始时,Agent应发现行动的后果,而不必担心其性能表现。因此,在任务中发现最有价值的行为和行为的频率应该增加。
经验回放机制:
文中实验所使用的经验回放机制[15]是在训练阶段为提高Agent的性能和学习效率而采用的一种技术。它包括以称为批处理的随机样本组的形式向Agent提交学习所需的信息,而不是立即提交Agent在模拟过程中收集的信息(通常称为在线学习)。批处理来自一个直观地称为内存的数据结构,它存储在训练阶段收集的每个样本。样本m定义为四种元素。m={st,at,rt+1,st+1},其中rt+1是在从状态st采取动作之后得到的奖励,它将环境演变成下一个状态st+1。
训练实例包括从记忆中收集一组样本,并使用上述样本进行神经网络训练。图4显示了与内存交互的表示。如前所述,经验回放技术需要一个内存,其特征是内存大小和批处理大小。内存大小表示内存可以存储多少个样本,并设置为40 000个样本,批大小定义为在一个训练实例中从内存中检索的样本数。如果在某个时间步进记忆填充时,将移除最旧的样本,以便为新样本留出空间。因此,如果在每个时间步将一个样本插入存储器,则单个样本在其消除之前仍存储在存储器中的片段数约为150,为训练实例收集样本的次数取决于批大小和训练实例的频率。
图4 内存交互示意图
使用经验回放,培训阶段有两个主要优势:
(1)消除了观察序列中的相关性。
(2)刷新Agent的体验。
在这种环境中,两个连续的状态是自然相关的,因为环境st+1的状态是状态st的直接演化。状态st+1中包含的大多数信息不是由于Agent的行为而派生的,但是,作为当前情况的自发转变,因此已经实现了经验回放,以避免在智能体的神经网络中引入误导性关联。其次,在训练过程中,神经网络有可能会忘记在训练的早期阶段所获得的关于某个情境的知识。通过使用经验回放,代理偶尔会收到以前在旧状态下所学内容的“刷新”。
3 实验结果分析
在此次的实验中,将γ设置为较高的0.75,设置这么高的γ值意味着使Agent的预期累积回报能够达到最大化,保持真实性的同时提高效率。因为未来几次行动的预期回报会显著影响在某一步选择的行动的价值。这种方法与环境的性质却恰恰相反:在一个确定的环境中,每次Agent从状态st采取动作时,环境总是在特定的状态st+1中演化。图5是在训练结束后获得的累积奖励值,从图中可以很清楚地看到,快要结束的时候,Agent表现很不稳定,严重影响了代理的稳定性,从而导致性能的下降。因为在训练快要结束的时候,基本上不可能采取随机行动,大多数的还是选择剥削行为,最终导致其中车辆的高等待排队时间。
图5 改进前的累计奖励值
再来看看结合了密集采样策略和新奖励函数的这种方式,如图6所示。在训练快要结束的时候,累积奖励值的稳定性有着显著的提升,这是对于好的行动选择策略的极好信号。通过这种新的结合方式能够很好地解决Q值不稳定的问题,因为新奖励函数增强了对错误行为选择的惩罚,并且大大减少了对未来最佳行为误导的可能性。
图6 改进后的累计奖励值
这种密集采样策略实际上大大增加了Agent训练的数据集,使得动作值更加稳定和渐进。图5的采样方法收集了大约250万个样本,用于1 600次的训练。但是在这种密集采样策略下,减少到只有300次迭代,但是采集的样本总数高达6 000万多个,由此可见数据集采样呈现一个质的提升。
将训练好的两种网络模型进行测试,从图7可以明显看出,改进后的平均排队长度显著提高,说明这种新的结合策略使Agent性能得到了显著的提升,并提高了系统的稳定性。
图7 算法测试结果对比
下面将具体的实验数据列了一张表格进行对比,如表2所示。改进后的平均累积负奖励值相比于静态交通灯系统非常低,奖励值提高了将近42%以上,车辆的平均排队长度也大大地减少了。性能也优于使用传统策略的深度强化学习算法,总体效率提升了29%左右。
表2 三种算法测试结果反馈
实验结果表明,文中所提出的新奖励函数和密集采样策略的结合对解决交通拥堵问题起到了很好的改善作用,说明这种方法是可取的。
4 结束语
交通智能化、数据化、复杂化已经是现在社会的一种潮流和趋势。文中将深度强化学习应用到交通灯信号配时当中,显著地减少了交叉口的拥堵状况,大大地节约了能源的消耗,在效率和性能的提升上起到了很大的作用。在现实世界中,驾驶员还可以利用本系统提供的策略模式,在交叉口进行不同的驾驶行为,最终达到提高交叉口效率的目的。文中提出一种采用密集采样策略和改进后的新奖励函数相结合的新控制方法,在一定程度上提高了控制的性能。
在未来的工作中,笔者将对更加复杂的路口进行研究,为交通系统开辟更多高效率的算法,应该更多地从单个车辆的角度分析和优化Agent策略的公平性,而不是仅仅通过最小化延误或最大化吞吐量来提高交叉口的整体性能。在过去的几年中,交通信号控制的强化学习技术已经明显成熟,特别是随着深度学习的普及。对于实际设备,强化学习交通信号控制器的假设部署应接受在线和离线数据方面的培训,以便在学习标准交通效率政策后能够适应特定场景。由于该文只是仿真实验,未来还将应用到实际的场景中,使交通行业迎来更加智能化的时代。