MSGNet: Learning Multi-Scale Inter-Series Correlations for Multivariate Time Series Forecasting

张开发
2026/4/12 11:19:00 15 分钟阅读

分享文章

MSGNet: Learning Multi-Scale Inter-Series Correlations for Multivariate Time Series Forecasting
对于topk5找5个scale有5对param(7,10)一个scale对应一个邻接矩阵建模序列间关系意味着不同尺寸下序列间关系是不同的mixprop源代码经典解决GCN过平滑问题classmixprop(nn.Module):def__init__(self,c_in,c_out,gdep,dropout,alpha):super(mixprop,self).__init__()self.nconvnconv()self.mlplinear((gdep1)*c_in,c_out)self.gdepgdep self.dropoutdropout self.alphaalphadefforward(self,x,adj):adjadjtorch.eye(adj.size(0)).to(x.device)dadj.sum(1)hx out[h]aadj/d.view(-1,1)foriinrange(self.gdep):hself.alpha*x(1-self.alpha)*self.nconv(h,a)out.append(h)hotorch.cat(out,dim1)hoself.mlp(ho)returnhoQA作者为什么为每一个周期模式scale都设计了一对(7,10)向量来学习变量间关系作者认为不同周期下变量间关系是不同的如在天周期下两变量是正相关但周周期下可能就是负相关。虽然GraphBlock并没有涉及到scale但是scale在后面的注意力操作处用到。学习邻接矩阵的过程设计我不是很理解我认为有一个方案是直接设计一个(cout,cout)的张量来直接学习邻接矩阵也就是序列间关系还有一个方案是设计一个(cout,nodedim)的张量代表各个节点的表示向量之后自乘来学习到邻接矩阵。这两种方案都更符合逻辑但是为什么作者设计了(cout,nodedim)和(node_dim, c_out)两个张量来学习邻接矩阵且第二个张量意义不明。直接学习邻接矩阵参数量巨大: 参数数量是 c_out²。如果变量数 c_out 很大例如几百上千这个矩阵会变得非常大难以优化且容易过拟合。缺乏泛化性: 模型学习到的是一个“写死”的图结构。它没有学习到节点本身的“属性”只是学习了节点间的“关系”。如果新增一个节点整个模型需要重新训练。单个嵌入自乘强制对称不能表示有向图而实际上变量间的影响并不是双向的可能是单向的。两个嵌入相乘可以表示有向图非对称性。邻接矩阵学习到后还要加上一个单位矩阵后归一化这个加单位矩阵的含义是什么图卷积中常用操作为了解决图神经网络中的“过平滑”问题如果GCN的层数很深经过多轮邻居信息混合后图中所有节点的特征表示会变得越来越相似最终收敛到同一个值失去了所有节点的独特性。加上单位矩阵能够保存本身的信息因为用邻接矩阵更新节点信息图卷积的目标是根据一个人的朋友们的特点来更新这个人的特征比如兴趣爱好。我们可以注意到ho torch.cat(out, dim1)后得到融合各个层级的特征shape为(16,96,96,7)之后linear将第一维的96映射到32。再之后 out self.end_conv(out).squeeze()endconv将shape由(16,32,96,7)变为(16,96,1,7)。我想知道这么操作的意义在哪里为什么先降维96到32endconv由升维到96作为时间维度这不多此一举么我们省去降维操作直接用一个(96,96)的endconv岂不是更符合逻辑为了解耦第一步linear是为了特征融合操作因为原本特征维度就是32因此将三个层次的特征融合到32。第二步是一个纯粹的事件聚合操作将时间聚合到第一个维度。GraphBlock中首先将特征由512维度降到cout7维度这一步的操作是为了与邻接矩阵shape匹配方便更新节点信息。但是我疑惑的点是self.start_conv nn.Conv2d(1, conv_channel, (d_model - c_out 1, 1))为什么kernelsize设计为(d_model - c_out 1, 1))而不是(dmodel//cout)并将stride设计为(dmodel//cout)这样也能得到最终的cout(Strided Convolution)是一种局部聚合和下采样。作者的方案 (Large Kernel Convolution)是一种全局聚合其效果等价于一个线性层 (全连接层)。我们注意到经过图卷积初步处理特征后假设shape为(16,96,512)之后scale48特征reshape为(32,48,512)之后经过attnblock在48维度运用注意力机制相当于作者设定了一个尺度并在尺度内做注意力操作这样设计的目的在哪这样设计学到的 (周期内/Intra-period): 模型非常擅长学习重复出现的模式。它会精通在一个48小时的周期内各个时间点是如何相互影响的。例如它会知道每天上午8点的高峰和下午6点的另一个高峰之间的关系。失去的 (周期间/Inter-period): 模型直接捕捉“周期与周期之间演化”的能力被大大削弱了。它很难学习到“上一个周期的整体状态是如何影响下一个周期的整体状态的”这种趋势性或演化性的信息。例如它很难建模“因为本周整体用电量偏高导致下周的初始用电水平也会被抬高”这样的规律。因此没有尺度间操作不是很合理。既然GraphBlock没有涉及到scale那么作者怎么保证第一个GraphBlock学习到的是第一个scale下的变量间关系呢因为每一个GraphBlock的下游任务是时间维度的attnblock这个attnblock是在分尺度scale之后进行的周期内注意力如果GraphBlock按照其它周期去学习变量间关系那么更新后的变量就不是很符合当前周期后续的attnblock效果很差。

更多文章