Higher Order Recurrent Neural Networks
添加链接描述
​ 上篇的TTRNN那篇文章中,对RNN的结构描述非常抽象,不是很明白,找到了与之相关的HORNN这篇文章,继续研究一下。

​ 之前看的TTRNN这种方法,就是提出了一种高阶的马尔科夫RNN以解决长时间依赖问题。其实这种方法就是借鉴于HORNN这篇文章,HORNN这篇文章2016就在arxiv上了,但是至今都没发出去。

​ 与TTRNN那篇文章一样,将正常的RNN模型看作是一种一阶模型。

TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)

​ 而与之相对应的则是高阶RNN模型,这篇文章给出的定义感觉更加清晰一些。HORNN的作者提出,其实这种高阶模型只是在原始的RNN模型中增加了几个记忆单元(h),并且在反馈计算的时候,分别以不同的权重反馈。
TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)

​ 其大致的模型如上所示。左边的为正常的RNN单元,右边的则是三阶RNN单元。可以看到,一阶的话只需要更新一个权重矩阵,而三阶RNN则需要更新三个权重矩阵。
TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)
​ 如果将这种循环的3阶RNN单元形式展开,其实是如上的形式。其实就是在每次RNN输出的时候,将该时刻的隐藏态记录下来,用于之后RNN单元的计算。在每次计算RNN单元的时候,要往里面输入前3个隐藏态的数据,然后进行前馈计算,然后在每次更新的时候,要更新3倍的参数量。

​ 但是作者认为,这样的做法有点杂乱,会影响最后的效果。正常来说,ht-3受到来自ht-1和ht-2的影响应该比来自ht的影响要大,为了体现这一点,于是作者加入了pooling操作。作者列举了三种pooling。

​ MAX-BASED POOLING:TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)

​ FOFE-BASED POOLING:TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)

​ 这种pooling方式,就是认为给定一个alpha,根据时间上的远近,施加一个指数,保证近的隐藏态有更大的值。

​ GATED HORNNS:TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)

​ 最为合理的就是第三种pooling。第三种pooling借鉴了soft-attention的思路,也是让网络自动更新,而不是人为地设定,如下所示。其实也就是根据每次的权重矩阵,以及x和h计算一次得分函数,最后每个权重矩阵乘以这个得分函数即可。所以其实这个HORNN在思路上整体是与attention类似的。一般的attention是在RNN单元计算完隐藏态后进行得分函数的计算,而这个HORNN是在RNN单元内部计算得分函数,具体的实现可能有一些差别。
TensorTrainRNN和HigherOrderRNN,所谓的高阶RNN解析(2)

相关文章:

  • 2021-09-10
  • 2022-12-23
  • 2021-09-28
  • 2022-01-23
  • 2021-10-15
  • 2021-08-08
  • 2021-06-18
  • 2022-02-18
猜你喜欢
  • 2021-06-13
  • 2021-10-29
  • 2021-12-25
  • 2021-10-26
  • 2022-12-23
  • 2022-01-27
  • 2021-12-11
相关资源
相似解决方案