1. 背景

这是一篇发表在 WSDM 2018上的文章,其所要解决的问题同前篇文章介绍的一样,都是解决流量预测的问题。只是这篇论文是预测接下来几个时刻的流量(Multi-step)。而为什么作者要提出Multi-step demand prediction呢?

作者认为,Multi-step demand prediction不仅能够体现流量变化的趋势,而且能够表达处全局的变化,从而能够避免因临时突发的需求变化而导致整体预测失误。什么意思呢? 比如t1,t2,t3,t4t_1,t_2,t_3,t_4时刻需求分别为5,10,20,305,10,20,30:如果是按照单步(next-step)预测,由于在t1t_1时刻时需求量很小,则会把多余的资源分配到其它地方去,而又由于接下来的几个时刻需求量直线上升,又需要重其它地方紧急的分配资源过来;而如果是按照多步预测的话,在t1t_1时刻就能知道后续几个时刻的需求变化趋势,在t1t_1时刻分配资源时就尽可能的保留一些(若有多余资源尽可能保留),因为t2,t3,t4t_2,t_3,t_4时刻马上就要用到,而单步预测做不到这一点。

同时,作者还认为需求量(pickup demands)同dropoff demands时紧密相关的,因此需要将两者结合起来构成两个通道。(注:pickup demands 指的是从A地出发的流量,dropoff demands 指的是到达A地的流量;

1.1 数据预处理

作者在这篇文章中使用的是出租车和单车数据,首先仍旧是将整个城市划分为若干个m×nm\times n的方格,且通过一个超参数λ\lambda来控制方格的宽度。如图p0110所示,A、B、C分别表示三个区域,红色的通道表示pickup demand,蓝色部分表示dropoff demand。从表©中可以看出上一时刻的dropoff demand 会影响到下一时刻的pickup demand。

Predicting Multi-step Citywide Passenger Demands Using Atention-based Neural Networks

1.2 问题定义

作者在论文的第三部分给出了三个定义,分别是Grid Map, Pickup/Dropff Demand Maps, Multi-step Citywide Demands Precition。简单来说,这三个定义分别做了如下工作:

  • Grid Map: 定义网格,将整个城市划分为若干个格子,且有一个能够控制网格宽度的参数λ\lambda ,同时将所有的原始数据都映射到网格中;

    Predicting Multi-step Citywide Passenger Demands Using Atention-based Neural Networks
  • 统计每个时间间隔内,各个网格中的pickup/dropoff demand;

  • 定义需要解决的问题;

    若对数据的处理有疑惑可参考这篇论文中类似的处理方式

2. 网络模型

2.1 idea

作者在论文的摘要部分的第一段主要提到说单步预测不如多步预测,多步预测更能从全局的角度来考虑问题,使得从长远来看有着更优解而不是短期的一步(有点类似于强化学习的理念);然后第二段就介绍了论文中所用到的模型: Seq2Seq,Attention 和ConvLSTM。(若不熟悉这三个模型,可简单参考此处Seq2Seq, Attention,ConvLSTM)我们知道在Seq2Seq中使用注意力机制的话,需要用到所谓的’thought vector’,也就是根据编码时候各个时刻的输出和当前解码时刻的输出所计算出来的一个向量。 但是在这篇论文中,作者使用的却是 由"representative demand tensors"(下文称作 AA )计算出的向量。那这个AA又是何方神圣呢?

我们都知道,对于任何(个人目前所知)场景下的流量预测问题,如某地区的订单量、人流量、车流量等等都是存在若干种规律的。在论文中,作者的观点认为对于某个任务来说,假如其存在KK种潜在规律,那么在解码预测的时候给输入作用上某种规律,则结果应该会更好。值得一提的是,在翻译模型的Seq2Seq模型种,注意力是作用在记忆单元的输出上的,而在这篇论文种却是作用在输入上的。

2.2 模型

Predicting Multi-step Citywide Passenger Demands Using Atention-based Neural Networks

整体的网络结构图如p0111所示,其中:

  • (1)编码: 对于Encoder部分主要包括了两个部分:CNN和ConvLSTM。对于输入的demand tesors {M1,MN}\{\mathcal{M}_1,\cdots\mathcal{M}_N\},首先每一个demand tensorMt\mathcal{M}_t都通过LL层的卷积处理得到It,LeI^e_{t,L}(,因此对于NN个demand tesors来说将得到{It,Le}t=1N\{I^e_{t,L}\}^N_{t=1};接着,将{It,Le}t=1N\{I^e_{t,L}\}^N_{t=1}喂给多层的ConvLSTM网络。

  • (2)注意力: 为了能更清楚的说明解码部分,我们先来谈注意力;

    Predicting Multi-step Citywide Passenger Demands Using Atention-based Neural Networks

    如图p0112所示为整个注意力计算的结构图;首先需要说明的就是这个demand tensors {Ak}k=1K\{A_k\}^K_{k=1},没错这也就是我们在idea部分说到”representative demand tensor“,它也是一个3维的张量,其中(Ak)ij(A_k)_{ij} 反映了区域gijg_{ij}受某种潜在规律作用后的pickup 和dropoff demands。什么意思呢?个人的理解是:由于每种流量数据都可能暗含着KK种潜在的变化规律,而{Ak}k=1K\{A_k\}^K_{k=1}KK个张量是最直接最能体现这KK种规律的张量。根据论文种的介绍,{Ak}k=1K\{A_k\}^K_{k=1} 就是将原始数据集聚类后的KK个簇中心。可能熟悉聚类算法的同学会问,那KK是怎么来的呢?原文中的实验部分提到,一个恰当的KK值应该满足较低的簇间距离(下图的distortion)和较高的轮廓系数(下图中的Silhouette);基于这样的原则作者在两个数据集上的KK分别是16和32.

    Predicting Multi-step Citywide Passenger Demands Using Atention-based Neural Networks

    在有了{A}k\{A\}_k之后,进一步对其进行卷积操作得到aka_k;接着将编码部分最后一时刻的隐含状态HtdH^d_t分别同aka_k通过一个2层神经网络进行相似度计算得到αt1,αt2,αtk\alpha_{t1},\alpha_{t2},\cdots\alpha_{tk},最后再进一步得到注意力向量ztz_t。(具体计算公式如下:)
    htka=f(WhaHt1d+Waak+bha),k[1,K]stka=f(Wsahtka),k[1,K]atk=exp(stka)k=1Kexp(stka),k[1,K]zt=k=1Katkak \begin{aligned} h^a_{tk}&=f(W^a_h\overline{H^d_{t-1}}+W_a\overline{a_k}+b^a_h),\forall k\in[1,K]\\[2ex] s^a_{tk}&=f(W_s^ah^a_{tk}),\forall k \in[1,K]\\[2ex] a_{tk}&=\frac{exp(s^a_{tk})}{\sum^K_{k=1}exp(s^a_{tk})},\forall k \in[1,K]\\[2ex] z_t&=\sum^K_{k=1}a_{tk}a_k \end{aligned}

  • (3)解码:清楚了注意力部分后,对于解码部分就容易得多了,计算公式如下:
    itd=σ(Wzidzt+WhidHt1d+bid)ftd=σ(Wzfdzt+WhfdHt1d+bfd)otd=σ(Wzodzt+WhodHt1d+bod)Ctd=ftdCt1d+itdtanh(Wzcdzt+WhcdHt1d+bcd)Htd=otdtanh(Ctd) \begin{aligned} i^d_t&=\sigma(W^d_{zi}*z_t+W^d_{hi}*H^d_{t-1}+b^d_i)\\[2ex] f^d_t&=\sigma(W^d_{zf}*z_t+W^d_{hf}*H^d_{t-1}+b^d_f)\\[2ex] o^d_t&=\sigma(W^d_{zo}*z_t+W^d_{ho}*H^d_{t-1}+b^d_o)\\[2ex] C^d_t&=f^d_t\circ C^d_{t-1}+i^d_t\circ tanh(W^d_{zc}*z_t+W^d_{hc}*H^d_{t-1}+b^d_c)\\[2ex] H^d_t&=o^d_t\circ tanh(C^d_t) \end{aligned}
    从公式中可以看到,ConvLSTM的输入除了上一时刻的Ht1dCt1dH^d_{t-1},C^d_{t-1}之外,还有的就是当前时刻的注意力向量。在得到多个时刻的输出HtdH^d_t 后,再经过多层(同编码部分的CNN一样)的卷积作为整个模型的输出。

3. 总结

对于论文中的需求预测问题,首先作者认为pickup demands应该是与收到dropoff demands影响的,应该将两者进行结合;其次作者认为对于流量预测问题应该从全局最优的角度来进行考虑,故而提出了multi-step;最后作者还认为每种流量数据都可能存在多种潜在的规律(latent mobility patterns),并且可以将这种潜在的规律作用于解码时的输入来提高预测结果。

Predicting Multi-step Citywide Passenger Demands Using Atention-based Neural Networks

相关文章:

  • 2021-05-20
  • 2021-11-15
  • 2021-05-11
  • 2021-08-29
  • 2022-01-22
  • 2021-10-10
  • 2021-10-07
猜你喜欢
  • 2021-04-09
  • 2021-12-12
  • 2021-07-27
  • 2021-10-31
  • 2021-05-22
  • 2021-08-31
相关资源
相似解决方案