Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN

Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN_第1张图片
IndRNN作者电子科大学生,2018-3-13挂于arxiv

Motivation

plain的RNN存在梯度消失与爆炸问题,而LSTM/GRU虽然一定程度解决了问题,但是由于采用tanh或者sigmoid作为这些饱和的激活函数,堆叠多层时层间梯度衰减验严重。考虑新的RNN结构,能使用Relu这类不饱和激活函数,可堆叠多层使用等。传统RNN或LSTM中各个神经元之间不独立,作者提出神经元之间独立的RNN网络。

Method

最主要的观察:


原始RNN表达式,Dependent RNN

其中W是NxM大小的矩阵、U是NxN的矩阵,N表示RNN中隐含层的维度。作者认为RNN中存在N个神经元(neurons),在plain RNN中本时刻的每一个神经元都与上一时刻的全部神经元的输出都发生了联系(U行向量与$h_t-1$向量乘积),也就是说这些神经元之间不独立。但是在我们常用的前向型网络中,比如全连接网络或者CNN,每一层内的所有神经元之间都是独立的(不考虑cnn权值共享),而神经元之间的连接仅发生在层与层之间。因此对上面的公式简单改造,使神经元之间各自独立:


IndependentRNN

u是向量,W仍然是矩阵,之间符号是element-wise product,由于采用element-wise乘法而不是向量乘,t时刻每个神经元就只与t-1时刻的自身神经元相关联,与其他神经元无关,对单个神经元(n)表达式为:
IndRNN中单个神经元表达式

这里除了wn之外就全都是简单数值了。
这么做的好处:RNN每层的每个神经元各自独立地学习一种输入数据的pattern,然后下一层的神经元再基于上一层神经元的输出学习新的pattern,逐层抽象。
由于神经元之间独立,为了在神经元之间产生联系,至少要堆叠两层网络。作者证明在使用线性激活函数时,传统RNN可以看做是一种特殊的两层IndRNN。

扩展

  • 表达式中的Wx+b可以看成是输入数据经过全连接处理,可以改为其他结构,比如CNN等
  • 堆叠多层IndRNN
  • 引入使用残差连接、BN、Relu


    Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN_第2张图片
    单层IndRNN与带残差连接的多层网络

实验

  1. Adding Problem
  • 任务:验证对对长程依赖的记忆。输入为两个序列,seq1是一串(0,1)之间的数字,seq2是同等长度的数值为0/1的一串数字,并且只有两个数字为1,要求数输出与seq2中两个数字1对应的seq1中的两个数字的和。实验的序列长度为100,500,1000。
  • 设置:RNN与LSTM使用单层,IndRNN两层,目标函数为Mean squared error (MSE)
  • 结果
    • 模型大小:RNN, LSTM, and two-layer IndRNN分别为16K, 67K and 17K
    • IndRNN收敛更快,并且在T=1000和5000时其他模型基本不能训练时其仍然能收敛。


      Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN_第3张图片
      Adding Problem,RNN、LSTM、IndRNN在不同序列长度下的训练曲线
  1. Sequential MNIST Classification
  • 任务: 序列输入Mnist的各个像素点,预测类别


    Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN_第4张图片
    image.png
  1. Language Modeling


    Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN_第5张图片
    image.png
  2. Skeleton based Action Recognition

  • 任务:基于骨架点的行为识别


    Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN_第6张图片
    image.png

总结

不足:

  • IndRNN使用Relu函数能够训练更深的网络,但是relu函数可以输出0,即丢弃神经元的全部历史信息,从当前时刻开始重新建模,这在序列建模中似乎不妥。
  • 单个神经元参数过于简单,对于复杂任务是否适用

你可能感兴趣的:(Independently Recurrent Neural Network (IndRNN): Building A Longer and Deeper RNN)