1. 背景
这是一篇发表在 WSDM 2018上的文章,其所要解决的问题同前篇文章介绍的一样,都是解决流量预测的问题。只是这篇论文是预测接下来几个时刻的流量(Multi-step)。而为什么作者要提出Multi-step demand prediction呢?
作者认为,Multi-step demand prediction不仅能够体现流量变化的趋势,而且能够表达处全局的变化,从而能够避免因临时突发的需求变化而导致整体预测失误。什么意思呢? 比如 t 1 , t 2 , t 3 , t 4 t_1,t_2,t_3,t_4 t1,t2,t3,t4时刻需求分别为 5 , 10 , 20 , 30 5,10,20,30 5,10,20,30:如果是按照单步(next-step)预测,由于在 t 1 t_1 t1时刻时需求量很小,则会把多余的资源分配到其它地方去,而又由于接下来的几个时刻需求量直线上升,又需要重其它地方紧急的分配资源过来;而如果是按照多步预测的话,在 t 1 t_1 t1时刻就能知道后续几个时刻的需求变化趋势,在 t 1 t_1 t1时刻分配资源时就尽可能的保留一些(若有多余资源尽可能保留),因为 t 2 , t 3 , t 4 t_2,t_3,t_4 t2,t3,t4时刻马上就要用到,而单步预测做不到这一点。
同时,作者还认为需求量(pickup demands)同dropoff demands时紧密相关的,因此需要将两者结合起来构成两个通道。(注:pickup demands 指的是从A地出发的流量,dropoff demands 指的是到达A地的流量;)
1.1 数据预处理
作者在这篇文章中使用的是出租车和单车数据,首先仍旧是将整个城市划分为若干个 m × n m\times n m×n的方格,且通过一个超参数 λ \lambda λ来控制方格的宽度。如图p0110所示,A、B、C分别表示三个区域,红色的通道表示pickup demand,蓝色部分表示dropoff demand。从表©中可以看出上一时刻的dropoff demand 会影响到下一时刻的pickup demand。
1.2 问题定义
作者在论文的第三部分给出了三个定义,分别是Grid Map, Pickup/Dropff Demand Maps, Multi-step Citywide Demands Precition。简单来说,这三个定义分别做了如下工作:
- Grid Map: 定义网格,将整个城市划分为若干个格子,且有一个能够控制网格宽度的参数 λ \lambda λ ,同时将所有的原始数据都映射到网格中;
-
统计每个时间间隔内,各个网格中的pickup/dropoff demand;
-
定义需要解决的问题;
若对数据的处理有疑惑可参考这篇论文中类似的处理方式
2. 网络模型
2.1 idea
作者在论文的摘要部分的第一段主要提到说单步预测不如多步预测,多步预测更能从全局的角度来考虑问题,使得从长远来看有着更优解而不是短期的一步(有点类似于强化学习的理念);然后第二段就介绍了论文中所用到的模型: Seq2Seq,Attention 和ConvLSTM。(若不熟悉这三个模型,可简单参考此处Seq2Seq, Attention,ConvLSTM)我们知道在Seq2Seq中使用注意力机制的话,需要用到所谓的’thought vector’,也就是根据编码时候各个时刻的输出和当前解码时刻的输出所计算出来的一个向量。 但是在这篇论文中,作者使用的却是 由"representative demand tensors"(下文称作 A A A )计算出的向量。那这个 A A A又是何方神圣呢?
我们都知道,对于任何(个人目前所知)场景下的流量预测问题,如某地区的订单量、人流量、车流量等等都是存在若干种规律的。在论文中,作者的观点认为对于某个任务来说,假如其存在 K K K种潜在规律,那么在解码预测的时候给输入作用上某种规律,则结果应该会更好。值得一提的是,在翻译模型的Seq2Seq模型种,注意力是作用在记忆单元的输出上的,而在这篇论文种却是作用在输入上的。
2.2 模型
整体的网络结构图如p0111所示,其中:
-
(1)编码: 对于Encoder部分主要包括了两个部分:CNN和ConvLSTM。对于输入的demand tesors { M 1 , ⋯ M N } \{\mathcal{M}_1,\cdots\mathcal{M}_N\} { M1,⋯MN},首先每一个demand tensor M t \mathcal{M}_t Mt都通过 L L L层的卷积处理得到 I t , L e I^e_{t,L} It,Le(,因此对于 N N N个demand tesors来说将得到 { I t , L e } t = 1 N \{I^e_{t,L}\}^N_{t=1} { It,Le}t=1N;接着,将 { I t , L e } t = 1 N \{I^e_{t,L}\}^N_{t=1} { It,Le}t=1N喂给多层的ConvLSTM网络。
-
(2)注意力: 为了能更清楚的说明解码部分,我们先来谈注意力;
如图p0112所示为整个注意力计算的结构图