前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【时间序列】DA-RNN: 基于双阶段注意力机制的循环神经网络

【时间序列】DA-RNN: 基于双阶段注意力机制的循环神经网络

作者头像
石晓文
发布2020-09-15 15:01:13
1.5K0
发布2020-09-15 15:01:13
举报
文章被收录于专栏:小小挖掘机小小挖掘机

论文题目为《基于双阶段注意力机制的循环神经网络》,文章本质上还是基于Seq2Seq的模型,结合了注意力机制实现的时间序列的预测方法,文章的一大亮点是:不仅在解码器的输入阶段引入注意力机制,还在编码器阶段引入注意力机制,编码器的阶段的注意力机制实现了特征选取和把握时序依赖关系的作用。

分为两个阶段:

  1. 第一阶段:使用注意力机制从而能够自适应提取每个时刻的特征,这是本文的最大亮点
  2. 第二阶段:使用注意力机制选取与之相关的encoder hidden states

1:模型架构图

算法实现流程:

  • 编码器阶段,也就是输入阶段,利用Attention机制,即原始:

利用Attention机制,结合隐层信息,会对每一维特征赋予一定的权重,转变为: 。从而实现自适应提取每个时刻的各个维度特征,使用更新后的作为编码器的输入,这也是本篇文章最大的亮点!

  • 解码器阶段,也就是输出阶段,与传统Attention实现功能相同,使用另一个注意力机制选取与之相关的encoder hidden states

2:输入阶段的Attention

第一阶段输入阶段的编码器Attention机制实现过程如下:

文章中定义为encoder在时刻 t 的hidden state, 其中 m是hidden state的大小。

第一阶段,使用当前时刻的输入:以及上一个时刻编码器的hidden state :来计算当前时刻编码器的hidden state :, 其中m是编码器的size。更新公式可写为:

其中是一个非线性激活函数,我们可以使用通常的循环神经网络vanilla RNN或LSTM以及GRU作为 ,在该文章中,使用的是LSTM来捕获长依赖关系。

这里,为了自适应地选取相关feature(即给每一个特征赋予一定的权重), 作者在此处引入了注意力机制。简单来说,即对每个时刻的输入 为其中的每个影响因子赋予一定的注意力权重(attention weight) ,即:。

衡量了时刻 t 的第 k 个 feature的重要性。更新后的$\tilde{\boldsymbol{x}}_{t$ 计算方式为:

那么如何计算得到?

文章中给出的方法:根据上一个时刻编码器的hidden state和cell state 计算得到:, 其中是hidden state与cell state 的连接(concatenation)。

该式即把第 k 个driving series(文章中的driving series就是特征的含义)与前一个时刻的hidden state 和cell state 线性组合, 再用 tanh激活得到。

计算得到

后,再用softmax函数进行归一化:

然后更新

更新方式为:

作为下一个阶段temporal Attention的输入。

input attention机制,使得编码器能够关注其中输入特征中重要的特征,而不是对所有特征一视同仁,这也是所有attention的本质作用。

3:temporal attention的解码器

第二阶段temporal Attention机制实现过程如下:

为了区别起见,参考罗未萌的建议,与论文中公式略有不同的是,将解码器中的时间序列下标标注为以与编码器中的下标区分。

第二阶段的解码器注意力机制设计类似于传统的seq2seq中的Attention机制,也就是第二阶段temporal attention的机制其实就是传统Attention的机制。

传统Attention解决的问题是:传统的seq2seq模型中, 编码器输出的context vector基于最后时刻的hidden state或对所有 hidden state取平均。这样输出的context vector对所有时刻 t 均相同,没有体现出差异化,就像人一样没有将注意力集中到关键部分,无法起到只选取相关时刻编码器hidden state的功能。

解决问题的思路是在不同时刻采用不同的context vector。类似于 seq2seq, 最简单的办法是对所有时刻的取加权平均, 即:

其中是基于前一个时刻解码器的hidden state

和cell state

计算得到:

根据文章中的模型流程,可以看到解码器的输入是上一个时刻的目标序列和hidden state以及context vector共同组成

即:

然后类似于编码器的最后一个公式, 这里的激活函数还是选择LSTM。

4:预测部分

文章回顾了非线性自回归(Nonlinear autoregressive exogenous, NARX)模型的最终目标,需要建立当前输入与所有时刻的输人以及之前时刻的输出之间的关系,即:

通过之前编码器解码器模型的训练,已经得到了解码器的hidden state 和context vector,

与。

最后再使用一个全连接层对 做回归 即

这样可以得到最终的预测

5:总结

文章是将input Attention 和temporal Attention 分开讲述的,模型架构图是放在一起的,刚开始读完论文些不太理解的地方:

如input attention 中的f1是使用LSTM,接着又作为temporal Attention 中LSTM的输入,接着解码层,又使用LSTM来进行预测,这样的话,不就是共有3个LSTM进行训练吗?

在深入阅读以及查看源代码后,发现之前理解出现偏差,其实总共只有2个阶段LSTM,分别对应input attention阶段用来提取自适应特征的attention模块中的LSTM,解码阶段的LSTM。我重新模型架构图整理了下,并进行箭头标注,表示对应的位置。

左边 input attention一大块计算得到的,实际上只是temporal attention中的一个时刻的输入, 我们从input attention的与temporal attention中的对应的位置可以观察到。

也就是说,坐标的input attention 实际上只是temporal attention将某一个时刻剥离出来的计算过程细节而已。单看右边的temporal attention,实际上就是一个Seq2Seq的attention的实现,并没有不同,作者将temporal attention的输入单独剥离出来,强调其计算过程,也就是input attention的实现机制,目的就是说明文章的亮点:在输入阶段也实现基于attention的自适应特征的提取。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小挖掘机 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1:模型架构图
  • 2:输入阶段的Attention
  • 3:temporal attention的解码器
  • 4:预测部分
  • 5:总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档