RNN模型笔记

模型是什么

众所周知,RNN的特点是将以前保留的信息,传递给未来,使得RNN模型具有记忆的功能,其主要的原理类似于函数中的递归,将不同时间片的隐变量传递给同一个神经元,神经元处理之后再输出,这样使得神经元在对原来的向量存在记忆的同时,接受新的变量输入。

简单的循环神经网络展开图如下所示,最重要的是每个环节的函数构造,需要理解:
RNN层次图

上图中即是上一个时间片中神经元的输入,也是下一个时间片中神经元的输出,假设时间片中的函数为, 其中和分别是上图中的变量, 那么循环网络的计算可以按下图的几个公式完成:

  • ...

从表中可以看出 一直在做递归操作,从而能够保存原有变量的信息

如果我们进一步细化,那么 可以写成如下几个公式

  • =
  • =

模型的公式就到这里了。

如何反向传播(公式推导)

我们从末尾开始计算

其中A表示 其他的输出向量

softmax对求导:

对求导:

对 求导:

对求导:

对求导:

对求导:

最后的输出结果:

  • 对于,他的导数为
  • 对于,他的导数为
  • 对于,他的导数为
  • 对于,他的导数为
  • 对于,他的导数为

训练难点在与神经元和神经元之间不能同时训练,大大延长了训练时间

哪些变种

1.递归神经网络,将原本以线状的神经网络以树的形式表示,减少了树的深度,进而减少训练的时间

2.双向RNN,考虑到输入一个句子的时候,我们不仅仅从前面的词中获取信息,也会往后看,即从后面的单词中也获取信息,因此,双向RNN设计了一条从尾部到头部的线路,将该词的后续词纳入了学习范围

3.基于上下文RNN,其重点是在每一个节点输入更多上下文的信息,比如,原先所有的的信息作为当前神经元的输入特征,当前的信息作为输入特征等

4.长短时门控RNN,在自循环的思想基础上,使用门控来手动训练权重,设计了输入门,遗忘门和输出门三个门,来手动学习应该记忆的内容

梯度爆炸和梯度消失

梯度爆炸主要原因是参数梯度太大,导致被抛出目标区域,使得之前的训练变成无用功,其主要处理方式是梯度截断,即使用一个衰减速度足够慢的学习率,进而对梯度差异的反应更温和

梯度消失的主要方法有两个,使用LSTM或者使用正则化,通过正则化可以调整梯度的大小,特定的正则函数可以保证梯度不为0

你可能感兴趣的:(RNN模型笔记)