美文网首页
RNN模型笔记

RNN模型笔记

作者: 谦之 | 来源:发表于2019-03-10 16:18 被阅读0次

模型是什么

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

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

上图中S_{t-1}即是上一个时间片中神经元的输入,也是下一个时间片中神经元的输出,假设时间片中的函数为,f(x,s), 其中xs分别是上图中的变量, 那么循环网络的计算可以按下图的几个公式完成:

  • S_{0}
  • S_{1} = f(S_{0})
  • ...
  • S_{t} = f(S_{t-1})
  • o_{t} = V*S_{t}+h
  • y = softmax(o_{t})

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

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

  • f(x , s) = tanh(h(x , s ))
  • h(x,s) = w_{t} *S_{t-1} +U*x_{t-1}+b

模型的公式就到这里了。

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

我们从末尾开始计算

softmax(o_{t}) = \frac {e^{o_{t}}}{A+e^{o_t}} 其中A表示 其他的输出向量

softmax对o_{t}求导: {(softmax(o_{t}))}^{'} = softmax(o_{t}) * (1 - softmax(o_{t}))

S_{t}o_{t}求导:V* {(S_{t})}^{’}

S_{t-1}{h_{t-1}}求导:diag(1-{h_{t-1}}^{2})* {h_{t-1}}^{'}

W{h_{t-1}}求导:S_{t-1}

b{h_{t-1}}求导:1

U{h_{t-1}}求导:x_{t-1}

最后的输出结果:

  • 对于h,他的导数为{(softmax(o_{t}))}^{'}
  • 对于V,他的导数为{(softmax(o_{t}))}^{'} * S_{t}
  • 对于b,他的导数为{(softmax(o_{t}))}^{'} *V*diag(1-{h_{t-1}}^{2})
  • 对于b,他的导数为{(softmax(o_{t}))}^{'} *V*diag(1-{h_{t-1}}^{2})*x_{t-1}
  • 对于w,他的导数为{(softmax(o_{t}))}^{'} *V*diag(1-{h_{t-1}}^{2})*S_{t-1}

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

哪些变种

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

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

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

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

梯度爆炸和梯度消失

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

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

相关文章

  • RNN模型笔记

    模型是什么 众所周知,RNN的特点是将以前保留的信息,传递给未来,使得RNN模型具有记忆的功能,其主要的原理类似于...

  • Lecture 10 循环神经网络

    本课重点: RNN的概念与多种形式 语言模型 图像标注、视觉问答、注意力模型 RNN梯度流 1 RNN的概念与多种...

  • NLP in TensorFlow: 不同的神经网络模型

    模型包括: 双向RNN,多层双向RNN,CNN,CNN+RNN。 导入数据和预处理 single bidirect...

  • 序列模型简介——RNN, Bidirectional RNN,

    摘要: 序列模型大集合——RNN, Bidirectional RNN, LSTM, GRU 既然我们已经有了前馈...

  • RNN LSTM语言模型 ——RNN

    RNN的结构 RNN的缺点 ref:https://blog.csdn.net/jizhidexiaoming/a...

  • RNN

    RNN RNN 是一种利用神经网络对序列模型的通用模型 利用历史信息结合当前输入进行预测 适合解决时间序列输入输出...

  • 双流rnn

    摘要 建立时间和空间上的模型。时间模型:堆叠RNN和分层RNN。提出两种将空间图像转为节点序列的方法。使用3D数据...

  • 使用Keras进行深度学习:(六)LSTM和双向LSTM讲解及实

    一 RNN的长期依赖问题 在上篇文章中介绍的循环神经网络RNN在训练的过程中会有长期依赖的问题,这是由于RNN模型...

  • 用RNN进行mnist分类

    RNN与LSTM RNN网络是在传统神经网络的基础上加入了记忆的成分。对于RNN模型来说,序列被看做一系列随着时间...

  • 【序列模型-RNN】

    一.为什么要用RNN 全连接/卷积神经网络:输入层-隐藏层-输出层。层与层之间是全部连接或者部分连接的,但是每层的...

网友评论

      本文标题:RNN模型笔记

      本文链接:https://www.haomeiwen.com/subject/vzzupqtx.html