Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning学习笔记

  • 论文简介
  • 背景
  • 问题定义
  • 模型框架
    • 边流量预测
    • 节点流量预测
    • 融合外部因素
    • 损失函数设计
  • 实验部分
  • 论文总结

论文简介

论文是郑宇团队2020年发表在TDKE上的文章,主要是对节点的流量预测和边的流量预测做了多任务学习。
文章在ST-ResNet的基础上做了一些改进,ST-ResNet也是郑宇老师他们在2017年发表出来的一篇文章,该文章主要预测了节点的流量。
论文链接:
Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning.
ST-ResNet 论文链接.

背景

流量预测在时空数据方向是比较典型的一个问题,对于时空数据中的流量,主要分成两部分:
1. 节点流量(NodeNET),即一个点的出流量和入流量
2. 边流量(EdgeNet),即两个节点之间的流量转移
对于流量预测问题,需要考虑不同的相关性,即空间相关性(节点A的流量可能与节点B的流量有关系)、时间相关性(比如对于节点A,今天早上八点的流量和昨天早上八点的流量有关)、节点的流量与边流量的相关性(比如节点A的出流量和A的出度是相等的).
作者的目的就是同时预测节点流量和边流量。

问题定义

1.节点
将数据看成2维I * J网格,每个区域作为一个点,所以每个点都会带有经纬坐标,每一个位置用(τ,x,y)表示,τ为时间。一个人的移动轨迹用(s,e)点对表示,s=(τs,xs,ysτ_{s},x_{s},y_{s}τs​,xs​,ys​),e=(τe,xe,yeτ_{e},x_{e},y_{e}τe​,xe​,ye​)

2.出入流量
在每一时刻都定义一个节点出入流量的矩阵,矩阵维度是2 * I * J,其中第0维表示节点的出流量,第1维表示节点的入流量。数学化定义如下

3.边的转移流量
也是在任意时刻都定义一个边的转移流量矩阵S,Si,jS_{i,j}Si,j​代表节点iii到节点jjj的转移流量数

模型框架

我们先来看一下整篇模型的框架,从外表上看挺复杂,但是理解之后并不是很难。主要将模型分成了四部分,第一部分是将用户的轨迹图转成能够接受的张量形式,第二部分是对节点和边进行预测,第三部分是将节点的预测结果和边的预测结果建立相关性,最后一部分加入了外部的一些信息(如天气 、事故等)。

边流量预测

首先对边流量进行预测,需要将用户轨迹转换成张量形式,即图中的2a,2b。
先以一个例子作为切入点,对下图中为例。

每一时刻都对应一个边流量转移矩阵,首先将用户转移轨迹图(图3a)分成相邻时间间隔的有向图,即图b(我认为这里的图b应该就是非常非常稀疏了,因为人的轨迹从s到e,他们之间的使用的时间恰好落在t−1t-1t−1时刻到ttt时刻的概率就很小),然后将图b的有向图变成图c所示的张量形式,其中前4列代表每一个区域向其他区域转移的边流量,后四列代表其他区域转移到这个区域的边流量,然后可以将它看成8维的一个通道(8=2*4),考虑所有的节点n,可以得到边转移矩阵的维度是2n∗I∗J2n * I * J2n∗I∗J,但是刚才提到就是相邻时刻转移发生的概率是非常小的,所以转移得到的张量就变得很稀疏,因此作者在这里做了一个降维,将2n2n2n维降成了k维

此时得到的ZZZ矩阵就是降维后的边的转移流量矩阵,MMM是降维之前的,因为MMM中已经有了每个节点与其他节点的交互信息,所以此时ZZZ也具有了空间信息(即空间相似性),下面就来谈一下如何加入时间相关性的。
每个节点的流量可能和之前几个小时、一天前的同一时间、一周前的同一时间有关,因此要考虑不同的时间对当前时间的影响。作者这里使用closeness,period,trendcloseness, period,trendcloseness,period,trend表示不同类型的时间,那么对于时间相关性可以用如下式子来进行表示


以MtcloseM_{t}^{close}Mtclose​为例,作者这里直接使用残差卷积进行的操作,直接得到相邻时刻的影响。

对于不同的时间,也是分别使用的同样的方法,然后将三者加权求和得到边流量转移的预测结果。

节点流量预测

节点预测和边的预测使用的方法是完全一样的,唯一不同的是对于边的流量转移矩阵的维度是2n∗I∗J2n * I * J2n∗I∗J,而节点只有出入两维,因此就不需要进行降维的过程,其余的就和边流量转移的过程一样。

节点和边进行合并

到这里作者已经可以预测出节点的流量和边的流量了,而最开始提到节点的流量和边的流量是有关系的,因此作者这里就将两者进行合并,这里提到对于合并有两种方法,一种是直接相加,另一种是拼接起来,作者最后选择的是将他们拼接起来(后续实验环节会有这一方面的证明)

求和方法

拼接方法

融合外部因素

对于每一个区域,都有相应的外部因素(如天气情况、突发事件等),这些都会影响到当前的流量,因此作者将节点和边的流量合并之后又把外部信息加了进来,这里作者对不同的区域使用了注意力机制,流程图如下。

首先对每个区域都选取出来相应的外部因素,然后通过门控注意力分别作用到节点流量和边流量上,这样可以更好地忽略一些外部噪声。

损失函数设计

这里的损失函数使用了三个模块进行了加权,首先前两个比较容易理解的是传统的对节点和边的均方误差损失。


第三个模块算是节点和边的博弈,也就是一个节点的出流量要和从该节点流向其他节点的边流量的和要尽可能的小,同时入流量也是如此。

最终的loss结果就是以上三个loss进行了加权平均

实验部分

数据集
作者这里使用的是TaxiBJ和TaxiNYC数据集,详细信息如下:


(这里我有一个小疑问,其实是感觉作者在这里好像是有一些小错误,对于table3,这两个数据集的时间跨度$TaxiNYC$数据集是$TaxiBJ$数据集的三倍左右,而且时间间隔都是去的一样的,因此时间片同样也应该是$TaxiNYC$是$TaxiBJ$的三倍,但是表2恰好相反)

Baseline

在节点流量预测的实验结果

在边流量预测的实验结果


原本我想看一下作者提出的模型和MRFMRFMRF比较一下的,因为baseline只有MEFMEFMEF有边流量的转移,不过作者这里解释道由于时间复杂性,只能比较这么多。

聚合函数和外部因素的影响
这里作者考虑怎么样将节点和边的流量结合起来、以及如何结合外部信息做了一个实验,其中外部因素中GATINGGATINGGATING为使用注意力机制,SIMPLESIMPLESIMPLE为直接求和,w/ow/ow/o为不加外部因素,加过表明使用拼接+注意力机制模型得到了更好的效果。

论文总结

作者这篇论文可以对节点和边进行多任务预测,确实是一种新颖的方式(可能是我论文读的少,之前有但是我没有见过),但是时空相关性那一块和ST-ResNet做的基本上是一样的 ,最后对比一下ST-ResNet和本文的模型框架图。

ST-ResNet

本文

Flow Prediction in Spatio-Temporal Networks Based on Multitask Deep Learning 学习笔记相关推荐

  1. 【论文笔记】Multi-task deep learning based CT imaging analysis for COVID-19 pneumonia: Classification and

    声明 不定期更新自己精度论文,通俗易懂,初级小白也可以理解 涉及范围:深度学习方向,包括 CV.NLP.Data Fusion.Digital Twin 论文标题:Multi-task deep le ...

  2. 论文阅读——FPGA based Accelerators of Deep Learning Networks for Learning and Classification:A Review

    论文阅读之FPGA硬件加速Review FPGA-based Accelerators of Deep Learning Networks for Learning and Classificatio ...

  3. [论文笔记]Spectrum Sharing in Vehicular Networks Based on Multi-Agent Reinforcement Learning

    本文的研究目标是车在网络中的频谱资源分配问题,具体来讲是如何实现多个V2V链路重用V2I链路的频谱.车载链路中环境的快速变化使传统的在基站处收集CSI信息以进行集中式资源管理成为难题,而本方法将资源共 ...

  4. Neural Networks and Deep Learning读书笔记--神经网络应用:手写数字识别

    神经网络应用于MNIST数据手写数字识别 加载MNIST数据,用下面所描述的一小段辅助程序mnist_loader.py来完成.用于存储MNIST数据的数据结构在文档字符串中进行了描述-它是简单的内容 ...

  5. TGARS 2019: What, Where, and How to Transfer in SAR Target Recognition Based on Deep CNNs ——学习笔记

    1 TGARS-2019论文:What, Where, and How to Transfer in SAR Target Recognition Based on Deep CNNs 链接:http ...

  6. 《U-Net: Convolutional Networks for Biomedical Image Segmentation》学习笔记

    1. 总述 在15年的文章:<U-Net: Convolutional Networks for Biomedical Image Segmentation>中提出了一种基于少量数据进行训 ...

  7. 【Deep Learning】笔记:Understanding the difficulty of training deep feedforward neural networks

    这几天读了这篇论文,在这里将大致内容写在这里. Abstract 介绍这篇论文的主要内容就是尝试更好的理解为什么使用"标准随机初始化"来计算使用标准梯度下降的网络效果通常来讲都不是 ...

  8. Neural Networks and Deep Learning 读书笔记

    1 转载于:https://www.cnblogs.com/jellyj/p/9867103.html

  9. Modularity Based Community Detection with Deep Learning 阅读笔记

    一.创新点   1.提出DNR模型   2.对DNR模型改进,加入节点约束,提出semi-DNR模型   3.第一次将深度学习应用到社区检测 二.研究背景   模块或群落结构的识别对于描述和理解复杂系 ...

  10. Single Image Dehazing via Multi-scale Convolutional Neural Networks with Holistic Edges 2020 个人学习笔记

    摘要 单图像去模糊一直是一个具有挑战性的问题,旨在恢复清晰的图像.现有的图像去模糊方法的性能受到手工设计的特征和先验的限制.在本文中,我们提出了一种多尺度深度神经网络,通过学习模糊图像与其传输映射之间 ...

最新文章

  1. Hibernate,get,load,find方法解析
  2. ​cglib实现动态代理构建带参数的代理实例
  3. 解决 macOS 上 iterm2 使用 rz/sz 卡死的问题
  4. 測试人员的核心能力与素养
  5. DL之DeconvNet:DeconvNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  6. spring boot 菜鸟教程学习:spring是一个超级大工厂能够管理java对象(bean)和他们之间的关系(依赖注入)
  7. OGNL中#和%的用法
  8. Future取消线程执行
  9. 区块链中密码学与安全技术
  10. 2021数据技术嘉年华 • 嘉宾面对面
  11. 一个border引发的血案
  12. Windows下修改hosts文件
  13. 【概率论与数理统计】1.5 独立性
  14. 浅谈Java中try catch 的用法
  15. 报错Content type ‘multipart/form-data;boundary=----WebKitFormBoundaryTz0sivpVO7U0H70m;charset=UTF-8‘ n
  16. Kivy转apk——使用打包虚拟机(亲测~)
  17. matlab中level,Level-1 MATLAB S-Function和Level-2 MATLAB S-Function有何区别?
  18. 什么是net驻场开发
  19. mysql数据库表分区
  20. 分享|GB4943.1-2022标准更新差异测试解读

热门文章

  1. 区块链获得获得华尔街的胜利:“现在我们知道它有用了”
  2. 常用的oracle数据库备份方式
  3. Winform自动升级系统的设计与实现(源码)
  4. html把div做成透明背景,DIV半透明层 CSS来实现网页背景半透明
  5. Linux 学习之路(一)——Linux 发行版本的选择以及opensuse 13.1 安装
  6. 超薄内置DSP数字功放芯片
  7. Linux服务器网卡驱动安装及故障排除
  8. Qt功能优化:Qt 3D画廊
  9. UMD 被淘汰了吗?不考虑的 UMD 的库如何在纯 UMD 前端项目中运行?
  10. kali linux启动盘工具,白话kali linux USB启动盘的制作(快捷版)