网站使用培训方案,江西南昌小程序开发,网页设计页面布局模板,网络设计公司经营范围一、注意力机制 注意力机制与传统的卷积神经网络不同的是#xff0c;前者擅长捕获全局依赖和长程关系#xff0c;权重会动态调整。而后者对于所有特征都使用同一个卷积核。关于更多注意力机制内容#xff0c;详见#xff1a; 注意力机制、自注意力机制、多头注意力机制、通…一、注意力机制 注意力机制与传统的卷积神经网络不同的是前者擅长捕获全局依赖和长程关系权重会动态调整。而后者对于所有特征都使用同一个卷积核。关于更多注意力机制内容详见 注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解-CSDN博客 而本论文基于空间注意力机制提出了空间和时间注意力机制以建模动态的时空相关性。
二、GMAN 模型 1. 时空嵌入Sptio-Tempoal EmbeddingSTE STE 的作用是将图结构和时间信息融入多注意力机制中。 空间嵌入采用Node2Vec方法将N个顶点编码为保留图结构信息的向量然后将其输入两层全连接神经网络中以进行联合训练。从而可以得到一个 RD 的向量。 时间嵌入而是将每个时间步编码为向量。首先将将一天划分为 T 个时间步并对每个时间步的“周几”和“时间段”进行独热编码。然后通过两层全连接网络将时间特征也转换为一个 RD 的向量。 最后对于顶点 vi 和时间步 tj STE定义为 2. 时空注意力模块ST-Attention Block
2.1 空间注意力Spatial Attention 在传统图卷积GCN中隐藏状态通过以下方式计算 其中A代表图的邻接矩阵W代表权重。但在实际场景中不同邻居对目标节点的重要性可能不同。因此在注意力机制中通过一个注意力分数 α 表示顶点 v 对顶点 vi 的重要性。那么加入注意力机制后的隐藏状态计算方式如下 注意力分数 α 的计算方式如下所示 式中|| 表示拼接 表示左右两个元素点乘。e 也就是上一步的时空嵌入STE。 其代码如下所示
X tf.concat((X, STE), axis -1)query FC(X, units D, activations tf.nn.relu, bn bn, bn_decay bn_decay, is_training is_training)
key FC(X, units D, activations tf.nn.relu, bn bn, bn_decay bn_decay, is_training is_training)# 多头分解K代表有几个头
query tf.concat(tf.split(query, K, axis -1), axis 0)
key tf.concat(tf.split(key, K, axis -1), axis 0)# 计算注意力分数
attention tf.matmul(query, key, transpose_b True)
attention / (d ** 0.5)
attention tf.nn.softmax(attention, axis -1)
2.2 时间注意力Temporal Attention 时间注意力和空间注意力的实现方法类似。只有一点不同空间注意力在空间维度N中捕捉节点间的依赖。而时间注意力在时间维度num_step中捕捉时间步间的依赖。 作者在这一块的代码部分加入了可选的掩码mask。它与因果卷积的作用相同都是为了解决时间序列建模中的因果性问题防止未来信息泄露。不同点如下所示 2.3 门控融合Gated Fusion 在某些情况下交通状况可能主要受空间因素影响如附近道路拥堵。在另一些情况下时间因素可能更为关键如高峰期的规律性变化。为了平衡空间和时间注意力的贡献使得模型可以在不同时空条件下动态调整两者的重要性作者在这里使用了门控机制。Hs 代表空间注意力机制Ht 代表时间注意力机制。 z 是一个门控权重z 越接近 1模型越依赖空间注意力输出。反之越接近 0 模型越依赖时间注意力输出。其中 z 通过以下公式计算 其算法代码如下
XS FC(HS, units D, activations None,bn bn, bn_decay bn_decay,is_training is_training, use_bias False)
XT FC(HT, units D, activations None,bn bn, bn_decay bn_decay,is_training is_training, use_bias True)
z tf.nn.sigmoid(tf.add(XS, XT))
H tf.add(tf.multiply(z, HS), tf.multiply(1 - z, HT))3. 编码器-解码器结构 编码器会接收历史交通数据比如过去 1 小时的交通流量将这些时间序列的信息“浓缩”为一个隐藏表示这个表示概括了所有历史时间步的信息。解码器接收编码器生成的隐藏表示结合目标预测的要求比如未来 1 小时的交通流量逐步生成未来时间步的预测值。
4. 转换注意力Transform Attention 在长时间交通预测中我们不仅需要知道历史的交通状况还要明白历史的哪些时刻对未来的影响更重要。而转换注意力的作用就是把历史信息直接“映射”到未来建立一种历史时间步和未来时间步之间的直接联系。比如要想预测明天早上的交通状况就要先知道今天早上的交通状况和昨天晚上的交通状况。如果昨天晚上有交通事故那么一定会影响今天早上的交通状况。最后就可以建立映射关系 昨天晚上——今天早上那么今天晚上——明天早上。 转换注意力会计算每个历史时间步和每个未来时间步之间的“相关性分数”。这个分数告诉我们某个历史时刻对未来有多重要。然后根据计算出的相关性分数为未来时间步选择最重要的历史时间步提取它们的特征信息。最后把这些选出来的历史特征送到解码器直接生成未来的预测值。 在代码上transformAttention 和 temporalAttention、spatialAttention 的写法类似只不过传入的参数有所不同。具体来说也就是 Query、Key、Value 不同。transformAttention 使用历史时间步STE_P和预测时间步STE_Q 构建 Query-Key 机制实现时间序列的转换。