循环神经网络

循环神经网络相对于前馈神经网络的有哪些优点?

  • 传统的前馈神经网络一般的输入都是一个定长的向量,无法处理变长的序列信息,即使通过一些方法把序列处理成定长向量,模型也很难捕捉序列中的长距离依赖关系。
  • RNN 通过将神经元串行起来处理序列化的数据。由于每个神经元能用它的内部向量保存之前输入的序列信息,因此整个序列被浓缩成抽象的表示,并可以据此进行分类或生成新的序列。

处理文本数据,循环神经网络与前馈神经网络相比有什么优点?

  • 前馈神经网络,通常接受一个定长的向量作为输入
  • 卷积神经网络对文本数据建模时,输入变长的字符串或者单词串,然后通过滑动窗口加池化的方法将原先的输入转化成一个固定长度的向量表示,这样可以捕捉到原文本中的一些局部特征,但是两个单词之间的长距离依赖关系还是很难被学到的。
  • 循环神经网络能很好地处理文本数据变长并且有序的输入序列。

循环神经网络的梯度消失问题

  • 预测误差是沿着神经网络的每一层反向传播的,当雅克比矩阵的最大特征值大于 1 时,随着离输出越来越远,每次梯度大小会呈指数增长,导致梯度爆炸。通过梯度裁剪来缓解,即当梯度的范式大于某个定值,对梯度进行等比收缩。
  • 若雅克比矩阵最大特征值小于 1 时,梯度的大小呈指数缩小,产生梯度消失。深度残差网络是对前馈神经网络的改进,通过残差学习的方式缓解了梯度消失的现象;对于循环神经网络,长短记忆模型以及其变种门控循环单元等模型通过加入门控机制,很大程度弥补了梯度消失所带来的损失。

循环神经网络的激活函数

为什么卷积神经网络不会出现严重的数值问题呢?
卷积神经网络中每一层的权重矩阵 W 是不同的,并且在初始化时它们是独立同分布的,因此可以相互抵消,在多层之后一般不会出现严重的数值问题。
循环神经网络采用 ReLu 激活函数,只有当 W 的取值在单位矩阵附近时才能取得比较好的效果,因此需要将 W 初始化为单位矩阵。

长短期记忆网络

  • 输入门
  • 遗忘门
  • 输出门
    遗忘门、输入门、输出门使用 Sigmoid 函数作为激活函数;在生成候选记忆时,使用双曲正切函数 Tanh 作为激活函数。这两个激活函数都是饱和的,在输入达到一定值的情况下,输出就不会发生明显变化了。Sigmoid 函数的输出在 0-1 之间,符合门控制的物理定义。在生成候选记忆时,使用 Tanh 函数,是因为其输出在 -1——1 之间,这与大多数场景下特征分布是 0 中心的吻合。此外,Tanh 函数在输入为 0 附近相比 Sigmoid 函数有更大的梯度,通常使模型收敛更快。

Seq2Seq

  • 核心思想是通过深度神经网络将一个作为输入的序列映射为一个作为输出的序列,这一过程由编码输入与解码输出两个环节构成
  • 编码器和解码器各由一个循环神经网络构成,既可以选择传统循环神经网络结构,也可以使用长短期记忆模型、门控制循环单元等。
  • 在 Seq2Seq 模型中,两个循环神经网络是共同训练的。

Seq2Seq 模型在解码时,有哪些常用的方法?

Seq2Seq 模型最基础的解码方法是贪心法,即选取一种度量标准后,每次都在当前状态下选择最佳的一个结果,直到结束。贪心法的计算代价低,适合作为基准结果与其他方法相比较。贪心法获得的是一个局部最优解,由于实际问题的复杂性,该方法往往不能取得最好的结果。
集束搜索:是一种启发式算法,会保存 beam size 个当前的较佳选择,然后解码时每一步根据保存的选则进行下一步扩展和排序,接着选择前 b 个进行保存,循环迭代,知道结束时选择最佳的一个作为解码的结果。b 往往选择一个适中的范围,以 8-12 为佳。

image.png

注意力机制

Seq2Seq 模型引入注意力机制是为了解决什么问题?为什么选用了双向的循环神经网络模型?
编码时输入序列的全部信息压缩到了一个向量中,随着序列增长,句子越前面的词的信息丢失越严重。同时,Seq2Seq 模型的输出序列中,常常会损失部分输入序列信息,这是解码时,当前词及对应的源语言词的上下文信息和位置信息在编解码过程中丢失了。引入注意力机制,解决上述问题。使用双向的循环神经网络进行建模,可以获取前后文的信息。

你可能感兴趣的:(循环神经网络)