学习笔记:AutoSTG

AutoSTG: Neural Architecture Search for Predictions of Spatio-Temporal Graph
期刊会议:WWW2021
论文地址: https://dl.acm.org/doi/10.1145/3442381.3449816
代码地址: https://github.com/panzheyi/AutoSTG

总结

AutoSTG不仅自学网络权重,还自学网络结构。网络结构的学习采用Darts(2018)方法,而参数学习采用元学习方法。模型效果感觉还是不错的(虽然和去年的PDFormer之类的没法比...)。

然而我感觉这里的元学习方法依然不正宗,和ST-MetaNet一样的问题:这里的元学习只是用来学习更好的嵌入罢了,它的更新方式应该是和普通网络参数不一样的。

模型

网络结构学习
AutoSTG的主干由一系列Cell和Pooling层组成,其中每个Cell有四个中间变量H0到H3(见下图a中的Cell search space),H0是Cell的输入,其余的H由前面的各个H经过候选网络的加权平均计算得到,最后Cell的输出是四个H的和。这个模式来源于Darts(2018)这篇论文。

一个Cell中的H计算方法,以及这个模型的架构图如下。

\[\mathcal{H}^j=\sum_{i<j}\sum_{o\in\mathbb{O}}\frac{\exp\left(\alpha_o^{(i,j)}\right)}{\sum_{o^{\prime}\in\mathbb{O}}\exp\left(\alpha_{o^{\prime}}^{(i,j)}\right)}o\left(\mathcal{H}^i\right). \]

图1:AutoSTG的架构图。左边是架构学习,右边是SC和TC的参数学习。

网络参数学习
候选网络结构中包含空间卷积和时间卷积,这两种网络的参数用元学习得到。

论文认为,ST-MetaNet的元学习器由FC层构成,这忽略了图结构,因此提出了图元知识学习,通过聚合邻居信息来获得点和边的表征。

元学习依旧分为点和边两类。点学习使用扩散卷积,其中邻接矩阵A是由边表征计算得到的:

\[\mathbf{V}^{(m)}=\mathrm{ReLU}\left(\mathrm{DC}\left(\mathbf{V}^{(m-1)},\mathcal{A},\mathbb{W}^{(m)}\right)\right), \]

边学习使用两个顶点的表征和前一次迭代的表征通过FC层得到:

\[\boldsymbol{e}_{ij}^{(m)}=\mathrm{ReLU}\left(\mathbf{W}^{(m)}\left(\boldsymbol{\upsilon}_{i}^{(m-1)}\parallel\boldsymbol{\upsilon}_{j}^{(m-1)}\parallel\boldsymbol{e}_{ij}^{(m-1)}\right)+b^{(m)}\right), \]

元学习有m次迭代,最后一次的输出作为元知识,用作时空关系的建模。接收域会随着超参数m的增长进行指数级增长。

将元知识转换为网络参数的模块叫做元学习器。空间卷积-元学习器将边元知识用FC层得到边表征,进而得到邻接矩阵;时间卷积-元学习器将点元知识用FC得到卷积核。

图2:元知识学习过程

参数更新

在参数更新上,元学习模块的参数和普通网络的参数作为一个整体一起更新。不一样的是架构参数,即调整不同候选网络的权重参数。整体的更新方式与Darts一致:

  1. 固定架构参数,用训练数据集训练模型参数;
  2. 固定模型参数,用验证数据集训练架构参数。
    重复此过程。

对比试验结果如下,可以看出效果还是不错的。

表1:PEMS-BAY和PEMS-LA上的对比实验结果

只是...感觉不算元学习

posted @ 2024-03-05 16:27  white514  阅读(80)  评论(3编辑  收藏  举报