ASTGNN:transformer攻入城市计算时空图网络
The following article is from Agent的潜意识
Author 樱园的玻尔兹曼机
时空城市计算的业务问题是这样的:城市中的交通流量,人流量,地铁乘客量这些峰值预估对城市治理很有帮助。包括道路的规划,地铁线路的开拔等等。这是一个天然的图网络,这张图网络呢,从人流量来说,每个时间节点都有人流量值,他是一个序列数据,因而需要用到时间维度的图卷积;从道路连通性来说,图上的节点之间有连线意味着他们的物理世界中有道路,但道路有远近有大小,因而需要空间维度的图卷积。这就是目前解决城市计算的经典做法:时空图网络。 最近在做图算法。有一个21年综述文章,把时下最流行的时空图网络来做城市计算的算法用pytorch geometirc重写了一遍。很有意思的(见附录2)。在这个基础上,我跟同事合计了一下,如果从问题的响应变量的角度来看,我们要预测的就是一个节点上,接下来n个时间片,他的流量是多少,这是一个序列数据,天然具有自回归特性,白话一点讲就是第n个时间片的流量和1到n-1过去时刻的流量强相关。因此适合用transformer搞;从时空特性来说,时空这一特点可以当做transformer的position encoding的模块run进模型。Idea一定,我在ASTGCN(附录3、4)的基础上,重构了一把代码,发现效果还真不错。准备按这路子投篇论文出去了。结果当天一摸,发现这个idea已经有论文被发了。 细看一下,文章做的还不错。这两天把它全摸明白了。整理一下,对自己也是一个加深理解。
一、前言 论文:Learning Dynamics and Heterogeneity of Spatial-Temporal Graph Datafor Traffic Forecasting 会议:TKDE2021
二、算法模型接下来我们直接从模型入手吧。先整揽整个pipeline,然后再搞点细节吧。
整个架构跟经典的transformer是一样的。区别在三个地方:从输入到输出开始算,1)position embedding他有两个,时空两个维度。2)多头注意力机制模块他重构成了自己的Tr-multihead-SelfAttention.3)Feed-forward模块被替换成了动态空间图卷积。 先讲最核心的Tr-multihead-SelfAttention。他这个模块的直观效果如下:
左边是传统自注意力机制学到的效果,只要是个波峰就认为是相似的;他重构的模块呢,可以学习一个区间的趋势变动情况,从而把B和C这种走势图相似的点找出来。 这个是直观感受。他具体是怎么做的呢?
代码在上面,第一个块是做了一个卷积操作,第二块是一个concat。第三个就是算注意力机制。 其实就是把趋势算出来。这里做卷积网络大伙可能不太理解。其实他就是一个1D卷积。我把它打印出来了,一个1*3的卷积核。其实说白了就是一个12维的向量,3个3个一组来求趋势。
1、 PyTorchGeometric Temporal: Spatiotemporal Signal Processing with Neural MachineLearning Models (CIKM 2021) 2、 https://github.com/benedekrozemberczki/pytorch_geometric_temporal3、Attention Based Spatial-Temporal GraphConvolutional Networks for Traffic Flow Forecasting, AAAI 20194、 https://github.com/Davidham3/ASTGCN
AINLP 一个有趣有AI的自然语言处理公众号:关注AI、NLP、机器学习、推荐系统、计算广告等相关技术。公众号可直接对话双语聊天机器人,尝试自动对联、作诗机、藏头诗生成器,调戏夸夸机器人、彩虹屁生成器,使用中英翻译,查询相似词,测试NLP相关工具包。
342篇原创内容
Official Account
进技术交流群请添加AINLP小助手微信(id: ainlper)
请备注具体方向+所用到的相关技术点
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLPer(id:ainlper),备注工作/研究方向+加群目的。
阅读至此了,分享、点赞、在看三选一吧🙏