zoukankan      html  css  js  c++  java
  • 通俗点讲解 RNN、LSTM、GRU

      与传统的前向神经网络和卷积神经网络不同,递归神经网络(RNN)是一种擅长处理文本、时间序列、股票市场等序列数据的模型。主要介绍了循环神经网络中RNN、LSTM、GRU几个重要模型的发展过程和结构差异,并详细推导了RNN梯度爆炸和梯度消失的原因。


      1.循环神经网络的背景
      前向神经网络(Forward neural network)和有线电视新闻网(CNN)在许多任务中取得了良好的效果,但是这些网络结构通常更适合于一些没有时间或序列依赖性的数据,并且接收到的输入通常与前一时刻的输入无关。
      然而,序列数据是不同的,并且在输入之间有一个序列。当前输入的结果通常与前后输入相关。例如,一个句子包含四个输入单词:“我”、“去”、“购物中心”和“打车”。这四个词按不同的顺序排列,有不同的意思,“我打车去购物中心”和“我打车去购物中心”。因此,我们通常需要按照一定的顺序阅读句子来理解句子的意思。
      面对这种情况,我们需要使用循环神经网络,它按顺序处理所有输入。在每个时间点,将有一个向量来存储与时间点相关的信息(可以是时间点之前的信息或时间点之后的信息)。通过向量h和输入向量x,可以更准确地判断当前结果。下列符号表示:
      Xt表示时间t的输入向量(例如,第t个字的字向量)
      Ht代表时间T的隐藏向量(包括从开始到时间T的相关信息)
      Yt表示时间t的输出向量(通常是预测结果)。
      2.RNN
      2.1 RNN结构
      RNN是一个结构相对简单的相对早期的循环神经网络。总体结构如下图所示。
      RNN神经元
      在图中,x、h和y分别代表RNN神经元的输入、隐藏状态和输出。
      u,w,v是线性变换向量x,h,y的矩阵。
      在RNN,同一神经元时刻都是共享的。神经元扩张后,如下图所示。
      RNN扩张
      可以看出,RNN神经元在时间T接收的输入包括当前时间的输入xt和前一时间的隐藏状态ht-1。输出包括当前时间的隐藏状态ht和当前时间的输出yt。
      因此,RNN的xt输入只包含时间信息,不包含序列信息;Ht根据xt和ht-1计算,包括历史信息和当前输入信息。ht和yt的计算方法如下。计算ht时,激活函数通常为tanh,而计算输出yt时,激活函数通常为softmax(批量ai伪原创,PHP实现批量伪原创)。2.2缺陷(梯度消失和梯度爆炸)
      3个输入数据序列的RNN
      让我们先看看只有3个输入数据的序列,如上图所示。此时,我们的隐藏层h1、h2、h3和输出y1、y2、y3的计算公式如下:
      RNN在时间t的损失函数是Lt,总损失函数是L=L1 L2 L3。
      时间t=3时损耗函数L3相对于网络参数u、w、v的梯度如下:
      可以看出,参数矩阵V(对应于输出yt)的梯度没有长期依赖性,只有时间t=3时的序列。然而,参数矩阵U(对应于输入xt)和参数矩阵W(对应于隐藏状态ht)的梯度具有长期依赖性,并且取决于先前的隐藏层状态h1和h2。在时间t,U和W的损失函数Lt的梯度可以推导如下:
      乘法项是导致RNN梯度消失和梯度爆炸的主要原因。乘法项可以转换如下:
      “Tanh”代表tanh的衍生物。可以看出,RNN在寻找梯度时实际上使用了(tanh' × W)的串联。何时(tanh' × W)
      1: 00时,多次乘法容易引起梯度爆炸;当(2020最新NLP人工智能算法)为1时,多次乘法很容易导致梯度消失。
      由于RNN计算梯度时的问题,LSTM(长期和短期记忆网络)出现了。LSTM在许多方面压垮了RNN,并能很好地缓解梯度消失和梯度爆炸的问题。
      3.LSTM
      我们可以通过LSTM更好地缓解RNN梯度消失的问题。让我们先了解一下LSTM的结构。
      3.1 LSTM结构
      RNN和LSTM结构
      上图来自科拉的博客,我们可以看到LSTM和RNN的神经元结构有很大的不同。传统的RNN神经元将接受前一时刻的隐藏状态ht-1和当前输入xt。
      另一方面,LSTM神经元也输入细胞状态ct-1。细胞状态C类似于RNN的隐藏状态H,两者都保存历史信息,从CT-2到CT-1到CT。在LSTM,C在RNN扮演着与H相似的角色,即保存历史状态信息,而在LSTM,H更多的是保存以前的输出信息。
      RNN和LSTM此外,LSTM内部的计算更加复杂,包括遗忘门、输入门和输出门。接下来,分别介绍每个门的功能。
      遗忘门:上图中的红框是LSTM遗忘门部分,用于判断细胞状态ct-1中哪些信息应该删除。其中σ代表激活函数sigmoid。通过sigmoid激活函数进入ht-1和xt后,得到ft,ft中每个值的范围为[0,1]。ft中的值越接近1,在单元状态ct-1中相应位置的值应该被记住得越多。ft中的值越接近0,就越应该忘记单元状态ct-1中相应位置的值。通过将ft和ct-1乘以位(ElementWise乘法),可以获得遗忘无用信息后的c't-1。
      输入门:上图中的红框是LSTM输入门部分,用于确定哪些新信息应该添加到单元状态c't-1。其中σ代表激活函数sigmoid。输入ht-1和xt可以通过tanh激活函数获得新的输入信息(图中带有波浪线的Ct),但是这些新信息并不都是有用的,所以有必要使用ht-1和xt通过sigmoid函数获得,并且它指示哪些新信息是有用的。将两个向量相乘的结果加到c't-1上,以获得时间t的细胞状态ct。
      输出门:上图中的红色方框是LSTM输出门部分,用于确定哪些信息应该输出到ht。单元状态ct获得可以通过tanh函数输出的信息,然后ht-1和xt通过sigmoid函数获得向量ot,ot的每个维度的范围是[0,1],其指示输出的哪些位置应该被移除和哪些位置应该被保留。两个向量相乘的结果就是最终的ht。
      3.2 LSTM缓解梯度消失和梯度爆炸
      在前一节中,我们知道梯度消失在RNN的主要原因是梯度函数包含一个连续的乘法项。如果可以去掉连续乘法项,梯度消失的问题就可以克服。如何去掉乘法因子?我们可以通过使乘法项近似等于0或近似等于1来移除乘法项。
      LSTM可以通过门使乘法项等于0或1。首先,让我们来看看LSTM CT和ht的计算公式。在公式中,ft和ot都是由sigmoid函数得到的,这意味着它们的值要么接近0,要么接近1。因此,LSTM的乘法术语变成了:
      因此,当门的梯度接近1时,乘法项可以保证梯度在LSTM很好地传递,避免梯度消失。
      然而,当门的梯度接近零时,这意味着来自前一时刻的信息对当前时刻没有影响,并且此时没有必要返回梯度。
      这就是为什么LSTM能够克服梯度消失和梯度爆炸。
      4.苏军总参谋部情报总局
      GRU是LSTM的变种,其结构比LSTM简单。LSTM有三个门(忘记门忘记、输入门输入、输出门输出),而GRU只有两个门(更新门更新、复位门复位)。此外,GRU在LSTM没有丙型细胞。
      GRU神经元的内部结构
      GRU更新公式
      图中的Zt和rt分别代表更新门(红色)和复位门(蓝色)。复位门rt控制信息ht-1从前一状态到候选状态的比例(图中ht带有波浪线)。复位门rt值越小,ht-1的乘积越小,添加到候选状态的信息ht-1越少。更新门用于控制先前状态的多少信息ht-1保留在新状态ht中。当(1- zt)较大时,保留的信息就越多。
      5.摘要
      循环神经网络适用于序列数据,也是学习自然语言处理的必要模型。许多自然语言处理应用和算法使用循环神经网络。
      传统的RNN容易出现梯度消失和梯度爆炸,因此LSTM及其变体目前普遍使用。
      在实际使用过程中,循环神经网络,即多层循环神经网络也可以深化。反向网络,如biLSTM,也可以添加,前向和后向信息可以同时使用。
    如果您有互联网问题,也可以咨询我,谢谢!如果你也想一起学习人工智能,欢迎留言交流。

  • 相关阅读:
    Sass代码重用----Sass继承
    Sass代码重用
    Scss基本运算-------颜色运算
    Scss基本运算-------字符运算
    Scss基本运算-------数字运算
    7.Scss的基本运算
    6.Scss注释
    css横竖屏判断
    禁止页面缩放及meta便签常用属性
    微信小程序 错误记录
  • 原文地址:https://www.cnblogs.com/phploser/p/12214626.html
Copyright © 2011-2022 走看看