目录
题目
Deep Spatio-Temporal Residual Networks for Citywide Crowd Flows Prediction
(深度时空残留网络全市人群流动的预测)
论文背景
2017年AAAI大会的一篇会议论文,作者是微软研究院的张俊波、郑宇。
论文摘要
预测交通流量对交通管理和公共安全非常重要,而且非常具有挑战性,因为它受到许多复杂因素的影响,如地区间交通、事件和天气。论文提出了一种基于深度学习的方法,称为时空残差网络ST-ResNet,用于同时预测城市每个区域的流入和流出客流量。
基于时空数据的独特性质,设计了一个端到端的时空数据网结构。更具体地说,使用残差神经网络框架对人群流量的时间邻近性、周期和趋势属性建模。对于每个属性,设计了一个残差网路分支,每个分支分别对人群流量的空间属性建模。ST-ResNet动态整合三个残差神经网络的输出,为不同的分支和区域分配不同的权重。整合结果进一步与外部因素相结合,如天气和一周中的某一天,以预测每个地区最终的人群流量。
在北京和纽约两种人群流上的实验表明,该方法优于六种著名的方法。
论文主要内容
人群流动概念
论文预测两种类型的人群流动:流入 和 流出
如图1 (a)所示。流入是指在一定时间间隔内从其他地方进入某一地区的人群的总流量。流出是指在给定的时间间隔内,从一个区域前往其他地方的人群的总流量。
图1 (b)给出了两种人群流入流出客流量的例子。用移动电话信号来测量行人的数量,显示进出
r
2
r_2
r2的人数分别为
(
3
,
1
)
( 3,1)
(3,1) 。同样,使用车辆的GPS轨迹,进出流分别为
(
0
,
3
)
(0,3)
(0,3) 。
影响因素
预测一个指定区域的流入流和流出流是一个具有挑战性的任务,主要被影响通过下面复杂的因素:
-
空间依赖性:区域的流入受到附近区域和远处区域流出的影响。同样,区域流出也会影响其他区域的流入。区域的流入也会影响其本身的流出。
-
时间依赖性:一个地区的人群流动受到最近时间间隔的影响,无论是近的还是远的。例如,上午8点发生的交通拥堵会影响到上午9点。此外,早高峰时间的交通状况可能在连续工作日相似,每24小时重复一次。此外,随着冬天到来,早高峰时间可能会逐渐推迟。当气温逐渐下降,太阳升起时间越来越晚,人们起床时间也越晚。
-
外部的影响:一些外部因素,如天气条件和事件可能会极大地改变城市不同区域的人群流动。
论文创新点及四点内容
-
ST-ResNet 利用基于卷积的残差网络来模拟城市中任意两个区域之间的远近空间依赖关系,同时确保模型的预测精度不受神经网络的深层结构的影响。
-
我们将人群流动的时间特性归纳为三种类型,即时间邻近性、周期和趋势。ST-ResNet 分别使用三个残差网络对这些性质进行建模。
-
ST-ResNet 动态聚合上述三个网络的输出,并为不同的分支和地区分配不同的权值。这种聚集进一步与外部因素(如天气)结合。
-
使用北京出租车的轨迹和气象数据,以及纽约自行车的轨迹数据来评估我们的方法。
人群流动问题及深度残差学习问题定义
定义一:人群流动问题的公式:
根据不同的粒度和语义含义,有许多位置定义。在论文中,根据经度和纬度将城市划分为
I
×
J
I×J
I×J 网格地图,网格表示区域,如图2 (a)所示。
定义二:流入流和流出流
在时间间隔
t
t
t 时人群的流入和流出分别定义为:
x
t
i
n
,
i
,
j
=
∑
T
r
∈
P
∣
{
k
>
1
∣
g
k
−
1
∉
(
i
,
j
)
∧
g
k
∈
(
i
,
j
)
}
∣
x
t
out
,
i
,
j
=
∑
T
r
∈
P
∣
{
k
≥
1
∣
g
k
∈
(
i
,
j
)
∧
g
k
+
1
∉
(
i
,
j
)
}
∣
\begin{aligned} x_t^{i n, i, j} & =\sum_{T r \in \mathbb{P}}\left|\left\{k>1 \mid g_{k-1} \notin(i, j) \wedge g_k \in(i, j)\right\}\right| \\ x_t^{\text {out }, i, j} & =\sum_{T r \in \mathbb{P}}\left|\left\{k \geq 1 \mid g_k \in(i, j) \wedge g_{k+1} \notin(i, j)\right\}\right| \end{aligned}
xtin,i,jxtout ,i,j=Tr∈P∑∣{k>1∣gk−1∈/(i,j)∧gk∈(i,j)}∣=Tr∈P∑∣{k≥1∣gk∈(i,j)∧gk+1∈/(i,j)}∣
其中,
T
r
Tr
Tr:
g
1
,
g
2
,
…
,
g
∣
T
r
∣
g1,g2,…,g|Tr|
g1,g2,…,g∣Tr∣ 是
P
P
P 中的一条轨迹,
g
k
g_k
gk是空间坐标,
g
k
∈
(
i
,
j
)
g_k∈(i,j)
gk∈(i,j) 表示
g
k
g_k
gk 在网格
(
i
,
j
)
(i,j)
(i,j) 中。
∣
.
∣
| .|
∣.∣表示集合的基数。
例:
上图为 4 × 4 4×4 4×4 区域代表在某时间片内 t t t 时俩个车辆的运动轨迹,则 x t i n , 3 , 2 = 1 x_t^{in,3,2}=1 xtin,3,2=1, x t o u t , 3 , 2 = 2 x_t^{out,3,2}=2 xtout,3,2=2,统计规则为:
在 t t t 时间内,车辆A的移动轨迹(蓝色)历经了4个区域 g 1 g_1 g1、 g 2 g_2 g2、 g 3 g_3 g3、 g 4 g_4 g4,车辆B移动轨迹经历了3个区域计算in-flow:对于A来说(i=2,3,4)此时有: g 2 ∉ ( 3 , 2 ) g_2∉(3,2) g2∈/(3,2), g 3 ∈ ( 3 , 2 ) g_3∈(3,2) g3∈(3,2);对于B来说(i=2,3),但此时不满足公式,所以 x t i n , 3 , 2 = 1 x_t^{in,3,2}=1 xtin,3,2=1
计算out-flow:对于A来说(i=2,3,4)此时有: g 3 ∈ ( 3 , 2 ) g_3∈(3,2) g3∈(3,2), g 4 ∉ ( 3 , 2 ) g_4∉(3,2) g4∈/(3,2);对于B来说(i=2,3), g 1 ∈ ( 3 , 2 ) g_1∈(3,2) g1∈(3,2), g 2 ∉ ( 3 , 2 ) g_2∉(3,2) g2∈/(3,2),所以 x t o u t , 3 , 2 = 2 x_t^{out,3,2}=2 xtout,3,2=2
在时间间隔
t
t
t 中,在所有的
I
×
J
I×J
I×J 区域的流入流和流出流可以表示为一个张量:
X
t
∈
R
2
×
I
×
J
,
其中:
(
X
t
)
0
,
i
,
j
=
x
t
i
n
,
i
,
j
,
(
X
t
)
1
,
i
,
j
=
x
t
o
u
t
,
i
,
j
X_t∈\mathbb{R}^{2×I×J} ,其中:\\ (X_t)_{0,i,j}=x_t^{in,i,j},(X_t)_{1,i,j}=x_t^{out,i,j}
Xt∈R2×I×J,其中:(Xt)0,i,j=xtin,i,j,(Xt)1,i,j=xtout,i,j
进入流矩阵展示在上图 2(b)中。
对于每个网格,有两种类型的流量,任何时间的交通流量都能表示成上述张量的形式。
问题一:依据历史的观测,
{
X
t
∣
t
=
0
,
…
,
n
−
1
}
\{X_t|t=0,…,n-1\}
{Xt∣t=0,…,n−1},预测
X
n
X_n
Xn
深度残差学习:
深度残差学习允许卷积神经网络具有100层的超深层结构,甚至超过1000层。在形式上,具有恒等映射的残差单元被定义为:
X
(
l
+
1
)
=
X
(
l
)
+
F
(
X
(
l
)
)
\mathbf{X}^{(l+1)}=\mathbf{X}^{(l)}+\mathcal{F}\left(\mathbf{X}^{(l)}\right)
X(l+1)=X(l)+F(X(l))
X
(
l
)
X^{(l)}
X(l),
X
(
l
+
1
)
X^{(l+1)}
X(l+1) 是第
l
l
l 个残差单元的输入和输出,
F
\mathcal{F}
F是残差函数,残差学习的关键是学习残差函数
F
\mathcal{F}
F
数据集
出租车数据TaxiBJ:轨迹数据是TaxiBJ由北京地区出租车GPS数据和气象数据组成,有四个时间间隔:2013年7月1日-30日Otc.2013年,2014年3月1日至2014年6月30日,2015年3月1日至2015年6月30日,2015年11月1日至2016年4月10日。利用定义2,我们得到了两种类型的人群流动。我们选择最近四周的数据作为测试数据,之前的所有数据作为训练数据。
自行车数据BikeNYC:轨道数据取自2014年4月1日至9月30日纽约市自行车系统。行程数据包括:行程持续时间、起止站号、起止时间。其中,最后10天作为测试数据,其余10天作为训练数据。
数据预处理
将每个时间间隔的流入流出映射到
I
×
J
I×J
I×J 的网格地图,这样就将某个时间间隔的人流轨迹转换为一个2通道类似图像的矩阵,多个时间间隔的矩阵就形成时间序列,类似视频流,再结合对应时间下面的外部因素如天气事件等,就能在保留时空信息的前提下完成数据转换,形成输入数据。
最原始的数据集已经将整个北京市划分成了一个
32
×
32
32 × 32
32×32 的小区域,并且也已经统计出了每个小区域每隔半小时(一个时间片)的进出流量,即已经表示成了
[
2
,
32
,
32
]
[ 2 , 32 , 32 ]
[2,32,32] 的格式。同时论文在实现时候,采用的是用当前时刻的前3个时间片来模拟邻近性(Closeness),用当前时刻前一天的相同时刻的一个时间片来模拟周期性(Period),用当前时刻前一周的相同时刻的一个时间片来模拟趋势性(Trend),即代码中的 len_closeness=3,len_period=1,len_trend=1
作为三个超参数。也就是用这三个部分来预测
t
i
t_i
ti 时刻的流量。
同时除了车流量数据之外,论文中还引入了其它额外的气象等数据,分别是:time_feature,holiday_feature,meteorol_feature
最终将这三个部分拼成一个向量meta_feature
对于每个时间片来说:
time_feature
有8维度,前面7个维度为 one-hot 形式,最后以为表示当天是否为工作日;例如上图中的含义为,该时间片对应为星期四且为工作日。
holiday_feature
有1个维度,0表示时间片所在的当天为工作日,1表示假期。
meteorol_feature
有19个维度,前面17个也为 one-hot 形式,表示天气类型中的一种,后面2个维度分别表示风速和温度
最后将这个3个向量拼接成了一个28维度的向量。也就是说,现在已经知道了整个网络输入数据的形式了。对于数据预处理的这部分,直接调用下面函数即可获取:
X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = \
load_data(len_closeness=3, len_period=1, len_trend=1, len_test=4*7* 48)
在 ST-ResNet 的输出中,使用 t a n h tanh tanh 作为激活函数,其范围在-1到1之间。这里,使用 M i n − M a x Min-Max Min−Max(最小-最大) 归一化方法将数据扩展到范围 [ − 1 , 1 ] [−1,1] [−1,1]。在评估中,将预测值与真实值进行对比,重新缩放到正常值,并与ground truth进行比较。对于外部因素,使用 o n e h o t onehot onehot 编码将元数据 (即, Day Of Week, Weekend/Weekday)、假日和天气条件转换为二进制向量,并使用 M i n − M a x Min-Max Min−Max归一化将温度和风速缩放到范围 [ 0 , 1 ] [0,1] [0,1]。
深度时空残差网络结构
图 3 展示了 ST-ResNet 的体系结构,它由四个主要部分组成,分别对时间邻近性、周期性、趋势性和外部影响进行建模。网络构建定义了网络的输入部分,笔者将其分成了5个placeholder
,其含义如变量名,然后接着就是定义网络的部分,即Closeness,Period,Trend这三个部分和天气模块。
首先如图 3 右上方所示:
- 首先使用概念介绍中的方法,将一个城市中每个时间间隔的流入和流出分别转换成一个两通道的图像矩阵,使用定义一和定义二的方法。
- 然后将时间轴划分为三个片段,分别表示最近的时间、较近的时间和较远的时间。
- 然后将每个时间片段的时间间隔的 2 通道矩阵分别输入到前三个组件(三个网络) 中,分别建模上述三个时间属性:时间邻近性、周期性和趋势性。
- 前三个部分与卷积神经网络和残差单元序列共享相同的网络结构(卷积网络+残差网络)。这种结构捕获了附近区域和远处区域之间的空间依赖性。
- 在最左侧的一部分,从额外的数据集中提取出额外的特征,例如天气情况和突发事件,然后把这些额外的特征输入两层的全连接神经网络。
- 对前三个分量的输出结果赋予不同的权重,并基于参数矩阵进行融合。然后将融合的结果与外部组件的结果聚合。右边三部分的输出被融合为 X R e s X_{Res} XRes,左侧网络的输出为 X E x t X_{Ext} XExt。
- 最后,两部分通过一个 T a n h Tanh Tanh 函数进行聚集,映射为 [ − 1 , 1 ] [-1,1] [−1,1] 之内的数值。在反向传播学习过程中,这比标准逻辑函数的收敛速度更快。
前三个组成部分
将最近几帧的数据输入时空残差网络的 Closeness 模块,模拟相邻时间区间的人流变化;将对应关键帧(对应的时间间隔)的昨天、前天、大前天的数据输入 Period 模块,模拟周期性;将过去几周的数据输入Trend模块,模拟趋势性;三个模块输出结果后进行融合。
前三个分量 Closeness、Period、Trend 三个模块(邻近性、周期性、趋势性) 具有相同的网络结构(三部分的卷积残差网络共享相同的架构),网络结构由卷积和残差单元两个部分组成,如图4所示。
如图4 (a) 所示,有三个多层次的特征图,它们通过一些卷积连接在一起。
对于一个城市,通常包含较大的面积,邻近区域的流量相互影响,可以利用卷积网络捕捉较近的空间依赖。但是由于地铁和高速公路的连接,较远的两个地方的人流量也可能相互影响,为了捕捉任何两个区域的空间依赖性,论文设计一个CNN结构,它具有多层。
但是由于卷积的影响,每一层的输出都会比输入减少。这导致不能构进行多次卷积。在以前的做法中,使用下采样来处理这个问题。在论文中,仅仅使用卷积,为了保持输入和输出的一致性,允许卷积核移动到图片之外。
在上图(a)中,我们发现,在高水平的一个节点依赖于中水平的9个节点,中水平的节点依赖于低水平的所有输入节点 (即输入)。这意味着一个卷积自然地捕捉空间上的邻近相关性,而一堆卷积可以进一步捕捉远处甚至全市的相关性,这显示了多层卷积网络可以捕捉空间上较远距离的依赖。
对于捕捉时间邻近性的网络部分,输入是:
[
X
t
−
l
c
,
X
t
−
(
l
c
−
1
)
,
⋅
⋅
⋅
,
X
t
−
1
]
[X_{t-l_c},X_{t-(l_c-1)},···, X_{t-1}]
[Xt−lc,Xt−(lc−1),⋅⋅⋅,Xt−1]
然后按照时间轴进行连接:
X
c
(
0
)
∈
R
2
l
c
×
I
×
J
X_c^{(0)}∈\mathbb{R}^{2l_c×I×J}
Xc(0)∈R2lc×I×J
然后进行卷积:
X
c
(
1
)
=
f
(
W
c
(
1
)
∗
X
c
(
0
)
+
b
c
(
1
)
)
X_c^{(1)}=f(W_c^{(1)}*X_c^{(0)}+b_c^{(1)})
Xc(1)=f(Wc(1)∗Xc(0)+bc(1))
要对全市范围的依赖关系建模 (即高层的每个节点都依赖于输入的所有节点),则需要15个以上连续的卷积层。众所周知,非常深的网络不易于训练。为了解决这个问题,引入残差单元。
在图3 中,在 Conv1 上堆叠
L
L
L 层的残差单元,残差单元的结构如下:
X
c
(
l
+
1
)
=
X
c
(
l
)
+
F
(
X
c
(
l
)
;
θ
c
(
l
)
)
,
l
=
1
,
.
.
.
,
L
X_c^{(l+1)}=X_c^{(l)}+\mathcal{F}(X_c^{(l)};\theta_c^{(l)}),l=1,...,L
Xc(l+1)=Xc(l)+F(Xc(l);θc(l)),l=1,...,L
F
\mathcal{F}
F 是残差函数,是 ReLU + Convolution 的联合。
在
L
L
L 层残差单元的顶端,加入一个卷积层 Conv2 。对于建模时间邻近性的网络的输出是
X
c
(
L
+
2
)
X_c^{(L+2)}
Xc(L+2)。
与上述建模时间邻近性的操作相同,建模时间的周期性和趋势性。对于时间的周期性,网络的输入是:
[
X
t
−
l
p
⋅
p
,
X
t
−
(
l
p
−
1
)
⋅
p
,
⋅
⋅
⋅
,
X
t
−
p
]
[X_{t-l_p·p},X_{t-(l_p-1)·p},···, X_{t-p}]
[Xt−lp⋅p,Xt−(lp−1)⋅p,⋅⋅⋅,Xt−p]
l
p
l_p
lp 是时间间隔,
p
p
p 是周期,输出是
X
p
(
L
+
2
)
X_p^{(L+2)}
Xp(L+2)
对于时间的趋势性,输入是:
[
X
t
−
l
q
⋅
q
,
X
t
−
(
l
q
−
1
)
⋅
q
,
⋅
⋅
⋅
,
X
t
−
q
]
[X_{t-l_q·q},X_{t-(l_q-1)·q},···, X_{t-q}]
[Xt−lq⋅q,Xt−(lq−1)⋅q,⋅⋅⋅,Xt−q]
l
q
l_q
lq是时间间隔,
q
q
q是周期性的跨度,输出是
X
q
(
L
+
2
)
X_q^{(L+2)}
Xq(L+2)
外部组件的结构
交通流可能受到许多复杂的外部因素的影响,如天气、假日事件和元数据(即每周日、工作日/周末)
从图5 (a) 可以看出,节假日期间 (中国春节期间) 的人流量与平时有显著差异。图5 (b) 显示,与后一周的同一天相比,暴雨使办公区的人流量大幅减少。
融合部分
这里提出基于参数矩阵的模型融合方法,即 Fusion 模块。
融合图3 中的四个组件:
首先采用基于参数矩阵的融合方法对前三个分量进行融合,然后再与外部分量进行融合。
将图3 的前三个组成部分(即接近度、周期、趋势)融合如下:
X
Res
=
W
c
∘
X
c
(
L
+
2
)
+
W
p
∘
X
p
(
L
+
2
)
+
W
q
∘
X
q
(
L
+
2
)
\mathbf{X}_{\text {Res }}=\mathbf{W}_c \circ \mathbf{X}_c^{(L+2)}+\mathbf{W}_p \circ \mathbf{X}_p^{(L+2)}+\mathbf{W}_q \circ \mathbf{X}_q^{(L+2)}
XRes =Wc∘Xc(L+2)+Wp∘Xp(L+2)+Wq∘Xq(L+2)
其中
◦
◦
◦ 表示 哈达玛积 (Hadamard product,即元素乘法),
W
c
W_c
Wc,
W
p
W_p
Wp 和
W
q
W_q
Wq分别是调整邻近性、周期性、趋势性影响程度的超参数,通过学习获取。
从通过参数矩阵融合方法的权重可视化可以看出:
- 邻近性可视化:四环主路上,时间邻近性的重要程度不如周期性和趋势性明显;
- 周期性可视化:朝阳公园的周期性很强,周末或者晚上去的多,所以周期明显;医院门口的周期性很不明显;
- 趋势性可视化:中关村的趋势性不明显;北京动物园的趋势性明显,比如天气暖和了动物园的人就会越来越多。
融合外部因素这里,直接将前三个组件的输出与外部组件的输出合并,使用
T
a
n
h
Tanh
Tanh函数映射到
[
−
1
,
1
]
[-1,1]
[−1,1]的值,再rescale回去
X
^
t
=
tanh
(
X
Res
+
X
E
x
t
)
\widehat{\mathbf{X}}_t=\tanh \left(\mathbf{X}_{\text {Res }}+\mathbf{X}_{E x t}\right)
X
t=tanh(XRes +XExt)
ST-ResNet 可以通过最小化预测的流矩阵和真实流矩阵之间的均方误差来训练从三个流矩阵序列和外部因素特征来预测
X
t
X_t
Xt (模型训练的目标是最小化预测值和真值之间的 MSE)
L
(
θ
)
=
∥
X
t
−
X
^
t
∥
2
2
\mathcal{L}(\theta)=\left\|\mathbf{X}_t-\widehat{\mathbf{X}}_t\right\|_2^2
L(θ)=
Xt−X
t
22
ST-ResNet训练过程
首先从原始序列数据构造训练实例(1 - 6行)。然后ST-ResNet通过反向传播训练和Adam优化(7 - 11行)。
实验结果
基线模型
HA、ARIMA、SARIMA、V AR、ST-ANN、DeepST
模型超参数
Conv1 和所有剩余单元的卷积使用大小为 3 × 3 3 × 3 3×3 的 64 个滤波器,而 Conv2 使用大小为 3 × 3 3 × 3 3×3 的 2个滤波器的卷积。批量大小为32。选择90%的训练数据来训练每个模型,剩下的10%作为验证集,根据最佳验证的分数来提前停止我们对每个模型的训练算法。然后,我们继续在完整的训练数据上训练模型,训练一个固定数量的epoch (例如10、100个epoch)。其中 p p p 和 q q q 分别被经验固定为一天和一周。对于这三个相关序列的长度,设它们为: l c ∈ { 3 , 4 , 5 } l_c∈\{3,4,5\} lc∈{3,4,5}, l p ∈ { 1 , 2 , 3 , 4 } l_p∈\{1,2,3,4\} lp∈{1,2,3,4}, l q ∈ { 1 , 2 , 3 , 4 } l_q∈\{1,2,3,4\} lq∈{1,2,3,4}。考虑前一天和上一周的数据。评价指标RMSE。
评价指标
使用均方根误差 R M S E RMSE RMSE
R M S E = 1 z ∑ i ( x i − x i ^ ) RMSE = \sqrt{\frac{1}{z}\sum_{i}(x_i-\hat{x_i})} RMSE=z1∑i(xi−xi^)
数据集实验结果
出租车数据集的结果
首先与其他6个模型进行比较,如表2 所示,给出了7种不同层次、不同因素的 ST-ResNet 变量。以 L12-E 为例,它考虑了所有可用的外部因素,有12个残差单元,每个残差单元由两个卷积层组成。我们观察到这7个模型都比6个基线好。与之前最先进的模型相比,L12-E-BN 将误差减少到16.69,显著提高了精度。
自行车数据集的结果
表3 显示了模型和其他基线的结果。采用共4个残基 ST-ResNet,将元数据视为 DeepST 等外部特征。ST-ResNet 相对于这些基线的
R
M
S
E
RMSE
RMSE 低14.8%到37.1%,表明提出的模型在其他流量预测任务上具有良好的泛化性能。
论文其他
郑宇老师团队所设计的STResNet网络考虑了时空特性。
这个模型是通用的,可以换成手机信号、摩拜单车数据,滴滴打车数据、饿了么等数据,预测各个区域有多少人拿着手机进出,多少人骑车、还车,有多少出租车会进出,多少人点餐完餐等。
CCF看下郑宇博士基于深度学习的主题报告《深度学习在时空数据中的应用》:探讨时空数据(区别于文本、语音和视频数据)的特性,以及深度学习技术在时空大数据上的使用和设计方法,并分享基于深度学习的城市人流量预测的实战案例是开源网站中对论文的讲解
郑宇:深度学习在时空数据中的应用