ASTGNN:transformer攻入城市计算时空图网络


     时空城市计算的业务问题是这样的:城市中的交通流量,人流量,地铁乘客量这些峰值预估对城市治理很有帮助。包括道路的规划,地铁线路的开拔等等。这是一个天然的图网络,这张图网络呢,从人流量来说,每个时间节点都有人流量值,他是一个序列数据,因而需要用到时间维度的图卷积;从道路连通性来说,图上的节点之间有连线意味着他们的物理世界中有道路,但道路有远近有大小,因而需要空间维度的图卷积。这就是目前解决城市计算的经典做法:时空图网络。
     最近在做图算法。有一个21年综述文章,把时下最流行的时空图网络来做城市计算的算法用pytorch geometirc重写了一遍。很有意思的(见附录2)。在这个基础上,我跟同事合计了一下,如果从问题的响应变量的角度来看,我们要预测的就是一个节点上,接下来n个时间片,他的流量是多少,这是一个序列数据,天然具有自回归特性,白话一点讲就是第n个时间片的流量和1n-1过去时刻的流量强相关。因此适合用transformer搞;从时空特性来说,时空这一特点可以当做transformerposition encoding的模块run进模型。Idea一定,我在ASTGCN(附录34)的基础上,重构了一把代码,发现效果还真不错。准备按这路子投篇论文出去了。结果当天一摸,发现这个idea已经有论文被发了。
     细看一下,文章做的还不错。这两天把它全摸明白了。整理一下,对自己也是一个加深理解。
一、前言
 
 论文:Learning Dynamics and Heterogeneity of Spatial-Temporal Graph Datafor Traffic Forecasting

 会议:TKDE2021
 
 
二、算法模型
接下来我们直接从模型入手吧。先整揽整个pipeline,然后再搞点细节吧。

 
      整个架构跟经典的transformer是一样的。区别在三个地方:从输入到输出开始算,1position embedding他有两个,时空两个维度。2)多头注意力机制模块他重构成了自己的Tr-multihead-SelfAttention.3)Feed-forward模块被替换成了动态空间图卷积。
      先讲最核心的Tr-multihead-SelfAttention。他这个模块的直观效果如下:
 


        
 
      左边是传统自注意力机制学到的效果,只要是个波峰就认为是相似的;他重构的模块呢,可以学习一个区间的趋势变动情况,从而把BC这种走势图相似的点找出来。
      这个是直观感受。他具体是怎么做的呢?
        


      代码在上面,第一个块是做了一个卷积操作,第二块是一个concat。第三个就是算注意力机制。
      其实就是把趋势算出来。这里做卷积网络大伙可能不太理解。其实他就是一个1D卷积。我把它打印出来了,一个1*3的卷积核。其实说白了就是一个12维的向量,33个一组来求趋势。

今天太晚了。先到这里。
 疫情偷走的两年-算法从业者的突围
千人千模:基于meta-learning的广告算法新范式
 
附录:
1、 PyTorchGeometric Temporal: Spatiotemporal Signal Processing with Neural MachineLearning Models (CIKM 2021)
2、  https://github.com/benedekrozemberczki/pytorch_geometric_temporal
3、Attention Based Spatial-Temporal GraphConvolutional Networks for Traffic Flow Forecasting, AAAI 2019
4、  https://github.com/Davidham3/ASTGCN




请使用浏览器的分享功能分享到微信等