1.一种基于变分自动编码器的小样本交通流量预测方法,其特征在于,具体按照以下步骤实施:
步骤1、通过路段摄像头或者检测器采集在道路中运行的真实交通流量x;
步骤2、通过VAE网络将真实交通流量x编码为隐变量z;
步骤3、通过VAE网络将隐变量z解码为重构真实交通流量x';
步骤4、将真实交通流量x与重构真实交通流量x'输入至Encoder‑Decoder端对端框架,得到输入的数据与Encoder‑Decoder端对端框架中Encoder模块中的RNN单元隐藏层结果之间的映射关系;
步骤5、预测未来交通流量;
所述步骤2具体按照以下步骤实施:
步骤2.1、确定真实交通流量x=x1,...,xi,...,xt,其中,i=1,....,t,xi代表时间为i时的真实交通流量大小,t代表总时长;
步骤2.2、定义隐变量z,隐变量z的对应分布为p(z),真实交通流量x的分布为p(x),通过条件概率公式,得到隐变量z分布p(z)与真实交通流量x分布p(x)之间的关系,如公式(1):其中,p(z|x)为真实交通流量x的条件下隐变量z的分布,p(x|z)为隐变量z的条件下真实交通流量x的分布;
步骤2.3、通过神经网络训练真实交通流量x,其中,网络输入为交通流量数据x,网络输
2 2
出为真实交通流量x的均值μ及方差σ,使得真实交通流量x服从正态分布N(μ,σ);通过对该正态分布进行采样,得到真实交通流量x服从于正态分布的条件下隐变量z的分布q(z|x);
步骤2.4、计算真实交通流量x的条件下隐变量z的分布p(z|x)与真实交通流量x服从于正态分布的条件下隐变量z的分布q(z|x)之间的距离KL(q(z|x)||p(z|x)),如公式(2)所示:通过最小化公式(2),得到真实交通流量x的条件下隐变量z的分布p(z|x)与真实交通流量x服从于正态分布的条件下隐变量z的分布q(z|x)之间的最小距离min(KL(q(z|x)||p(z|x))),将最小距离min(KL(q(z|x)||p(z|x)))作为VAE网络中的损失函数,具体如公式(3):其中,KL(q(z|x)||p(z))对应VAE网络中编码过程,Ez~q(z|x)[logp(x|z)]对应VAE网络中解码过程,z~q(z|x)表示隐变量z服从后验分布q(z|x),p(x|z)表示隐变量z服从后验分布q(z|x)的条件下生成的真实交通流量x的分布;
步骤2.5、假设隐变量z服从标准正态分布N(0,1),即p(z)~N(0,1),真实交通流量x服2
从于正态分布的条件下隐变量z的分布q(z|x)服从正态分布,即q(z|x)~N(μ,σ),通过步骤2.4得到计算隐变量z的分布与真实交通流量x服从于正态分布的条件下隐变量z的分布q(z|x)之间的距离KL(q(z|x)||p(z)),得到如下结果:2
其中,均值μ与方差σ通过神经网络训练真实交通流量x得到;利用最小化公式(4)得到真实交通流量x服从于正态分布的条件下隐变量z的分布q(z|x),进一步得到真实交通流量x的条件下隐变量z的分布p(z|x),即将真实交通流量x编码为隐变量z;
所述步骤3具体按照以下步骤实施:
利用神经网络训练编码后的隐变量z,其中,网络的输入为编码后的隐变量z,输出为编码后的隐变量z的均值 及方差 通过采样该正态分布,得到编码后的隐变量z服从正态分布的条件下重构真实交通流量x'的分布p'(x|z),如公式(5)所示:步骤2.4中公式(3)中隐变量z服从后验分布q(z|x)的条件下生成的真实交通流量x的分布p(x|z)等同于隐变量z服从正态分布 的条件下重构真实交通流量x'的分布p'(x|z),因此,公式(3)中的Ez~q(z|x)[logp(x|z)]如公式(6)所示:通过计算后验分布p'(x|z)可得到更逼近于真实交通流量x的结果,即重构交通流量x',由上述过程可知交通流量再生成的过程可利用神经网络逼近训练数据,因此,结合公式(4)与公式(6),通过网络训练过程中的反向传播方法优化公式(3),即优化VAE网络中的损失函数,使得最终得到的重构交通流量x'与真实交通流量x更加相似;
定义重构交通流量x'={x't+1,...,x't+i,....,x'2t},i=1,...,t,x't+i代表当时间为t+i时的重构交通流量大小,t代表真实交通流量x的总时长,重构交通流量x'的起始时刻为t+1,总时长为t;
所述步骤4具体如下:真实交通流量x与重构交通流量x'共同组成输入数据X={X1,...,Xj,...,XT},j=1,...,T,其中,Xj表示j时刻下对应的输入数据大小,T表示输入数据总时长,即T=2t,并将X传送至Encoder‑Decoder端对端框架中,该框架中包括两个模块:Encoder模块和Decoder模块,Encoder模块与Decoder模块均由多个RNN单元组成,RNN单元由输入层、隐藏层、输出层组成;
Encoder模块中的RNN单元接收到输入数据X,传送至隐藏层,得到当前时刻对应的隐藏层结果hj=f(hj‑1,Xj),其中,Xj表示当前时刻j对应的RNN单元的输入数据,hj‑1是上一时刻j‑1对应的RNN隐藏层结果,hj是当前时刻j对应的RNN隐藏结果,函数f表示上一时刻的隐藏层结果以及当前时刻输入数据与当前时刻隐藏层结果之间的映射关系;将不同时刻对应的隐藏层结果汇总压缩为固定的长度,并传送至向量C,向量C则表示输入的交通流量数据XT与不同时刻对应的隐藏层结果hj之间的关系,具体表示为:C=q(h1,h2,...,hT),其中,q为多个不同RNN单元的隐藏层结果与向量C之间的映射关系,该映射关系由多个隐藏层结果的加权和表示,T表示输入数据的总时长,至此,通过Encoder模块得到向量C,即得到输入数据X与RNN单元的隐藏层结果之间的映射关系;
所述步骤5具体如下:
将所述步骤4得到的向量C传送至Encoder‑Decoder框架中的Decoder模块中的RNN单元,通过隐藏层与输出层得到交通流量预测值 其中Tf表示需要预测的时间长度,T表示输入数据X的总时长,具体关系为: 其中, 表示当前时刻T+Tf的交通流量预测值, 表示上一时刻T+Tf‑1的交通流量预测值, 表示在上一时刻T+Tf‑1对应的RNN单元的隐藏层结果,函数g表示当前时刻交通流量预测值与上一时刻交通流量预测值以及Encoder模块输出之间的映射关系,函数g用非线性多层神经网络训练得到,最终的预测结果Y=[YT+1,...,YT+Tf],其中,T表示输入数据X的总时长,Tf表示需要预测的时间长度,Y表示时长为Tf对应的交通流量预测值,如果交通流量预测值Y较大,说明未来在该时刻道路交通将发生拥堵。