RNN小结

循环网络不仅将他们看到的当前输入示例作为输入,而且还将其先前及时感知的内容作为输入。这是Elman提出的早期简单循环网络的示意图,其中图形底部的BTSXPE表示当前时刻的输入示例,CONTEXT UNIT表示前一时刻的输出
在这里插入图片描述

在时间步长达到递归网络t-1的决策会影响到它在时间步长稍后达到的决策t。因此,循环网络有两个输入来源,即现在和最近的过去,两者结合起来决定了它们如何响应新数据,就像我们一生中所做的那样。
循环网络与前馈网络的区别在于,反馈回路连接到它们的过去决策,将它们自己的输出作为输入作为输入。人们常说循环网络有记忆。2向神经网络添加内存的目的是:序列本身中包含信息,而递归网络则使用它来执行前馈网络无法执行的任务。
该顺序信息被保留在循环网络的隐藏状态中,该状态在跨越级联以影响每个新示例的处理时设法跨越了许多时间步长。它正在发现由许多时刻分隔开的事件之间的相关性,这些相关性称为“长期依赖性”,因为时间上下游的事件取决于之前发生的一个或多个事件,并且是该事件的函数。思考RNN的一种方法是:它们是随时间分配权重的一种方法。
就像人类的记忆在体内不可见地循环,影响我们的行为而没有揭示其完整的形状一样,信息在循环网络的隐藏状态下循环。

在时间步t处的隐藏状态为h_t。它是输入在同一时间步的函数x_t,由权重矩阵W(如我们用于前馈网络的权重矩阵)修改后的值添加到前一个时间步的隐藏状态,再h_t-1乘以其自身的“隐藏状态到隐藏”状态状态矩阵U,也称为过渡矩阵,类似于Markov链。权重矩阵是确定要同时满足当前输入和过去隐藏状态的重要性的过滤器。它们产生的误差将通过反向传播返回,并用于调整其权重,直到误差不能再降低为止。
权重输入和隐藏状态的总和由函数φ(取决于逻辑S形函数或tanh,取决于)压缩,这是将很大或很小的值浓缩到逻辑空间中以及使梯度可用于以下项的标准工具。反向传播。
因为此反馈循环发生在序列的每个时间步上,所以每个隐藏状态不仅包含以前的隐藏状态的痕迹,而且还包含所有h_t-1只要内存可以保留的先前痕迹。
鉴于一系列字母,一个经常性的网络将使用第一个字符,以帮助确定其第二个字符的感觉,使得最初q可能会导致它来推断,下一个字母会u,而最初t可能会导致它来推断下一是h。
由于递归网络跨越整个时间,因此可能最好用动画来说明(出现的节点的第一条垂直线可以看作是前馈网络,随着时间的流逝,它会变成递归网络)。

在这里插入图片描述

RNN可以做什么?
RNN在许多NLP任务中都显示出巨大的成功。在这一点上,我应该提到,最常用的RNN类型是LSTM,它比常规RNN更好地捕获长期依赖关系。但是不用担心,LSTM与我们将在本教程中开发的RNN本质上是相同的东西,它们只是具有不同的计算隐藏状态的方式。我们将在以后的文章中更详细地介绍LSTM。以下是RLP在NLP中的一些示例应用(并非详尽列表)。
语言建模和文本生成
给定一个单词序列,我们希望在给定先前单词的情况下预测每个单词的概率。语言模型使我们能够衡量句子的可能性,这是机器翻译的重要输入(因为高概率句子通常是正确的)。能够预测下一个单词的副作用是我们得到了一个生成模型,该模型使我们能够通过从输出概率中采样来生成新文本。根据我们的培训数据,我们可以生成各种东西。在语言建模中,我们的输入通常是单词序列(例如,编码为单热向量),而我们的输出是预测单词的序列。训练网络时,我们进行了设置,因为我们希望在步骤1中获得输出 成为实际的下一个字。
有关语言建模和文本生成的研究论文:
基于递归神经网络的语言模型
基于递归神经网络的语言模型的扩展
使用递归神经网络生成文本
机器翻译
机器翻译类似于语言建模,因为我们的输入是源语言(例如德语)中的单词序列。我们希望以目标语言(例如英语)输出一系列单词。一个关键的区别是,我们的输出仅在看到完整的输入后才开始,因为翻译句子的第一个单词可能需要从完整输入序列中捕获的信息。

生成图像描述
RNN与卷积神经网络一起被用作模型的一部分,以生成未标记图像的描述。

RNN扩展
多年来,研究人员已经开发出更复杂的RNN类型,以解决普通RNN模型的某些缺点。我们将在以后的文章中更详细地介绍它们,但是我希望本节作为一个简短的概述,以便您熟悉模型的分类法。
双向RNN基于这样的思想,即时间输出可能不仅取决于序列中的先前元素,而且还取决于未来的元素。例如,要预测序列中的遗漏单词,您既要查看左侧上下文,又要查看右侧上下文。双向RNN非常简单。它们只是彼此堆叠的两个RNN。然后根据两个RNN的隐藏状态计算输出。
深度(双向)RNN与双向RNN相似,仅在于我们现在每个时间步都有多层。实际上,这为我们提供了更高的学习能力(但我们还需要大量的培训数据)。

时间反向传播(BPTT)是反向传播训练算法在递归神经网络中的应用,递归神经网络应用于序列数据(例如时间序列)。
每个时间步长显示一个递归神经网络,并预测一个输出。
从概念上讲,BPTT通过展开所有输入时间步来工作。每个时间步都有一个输入时间步,一个网络副本和一个输出。然后针对每个时间步计算并累积误差。网络将回滚并更新权重。
在空间上,在给定问题的顺序依赖性的情况下,展开的递归神经网络的每个时间步都可以看作是一个附加层,并且来自先前时间步的内部状态被用作后续时间步的输入。

我们可以将算法总结如下:
向网络显示输入和输出对的时间步序列。
展开网络,然后在每个时间步长计算并累积错误。
汇总网络并更新权重。
重复。
随着时间步长的增加,BPTT在计算上可能会很昂贵。
如果输入序列包含数千个时间步,则这将是单个更新权重更新所需的导数数。这可能导致权重消失或爆炸(变为零或溢出),并使学习速度缓慢和模型技能嘈杂。

递归神经网络的承诺
递归神经网络不同于传统的前馈神经网络。
这种增加复杂性的差异带来了传统方法无法实现的新行为的承诺。
循环网络…具有可以表示上下文信息的内部状态。…[他们]将有关过去输入的信息保留一段时间,该时间不是先验确定的,而是取决于其权重和输入数据。

输入不是固定而是组成输入序列的递归网络可用于将输入序列转换为输出序列,同时以灵活的方式考虑上下文信息。

递归神经网络不同于传统的前馈神经网络。
这种增加复杂性的差异带来了传统方法无法实现的新行为的承诺。
循环网络…具有可以表示上下文信息的内部状态。…[他们]将有关过去输入的信息保留一段时间,该时间不是先验确定的,而是取决于其权重和输入数据。

输入不是固定而是组成输入序列的递归网络可用于将输入序列转换为输出序列,同时以灵活的方式考虑上下文信息。
— Yoshua Bengio等人,“ 利用梯度下降学习长期依赖关系很困难”,1994年。
本文定义了递归神经网络的3个基本要求:
系统能够在任意持续时间内存储信息。
系统具有抗噪声能力(即,输入的波动是随机的或与预测正确的输出无关)。
确保系统参数是可训练的(在合理的时间内)。

LSTM
LSTM的成功在于他们是克服技术问题并实现递归神经网络的承诺的首批工具之一。
LSTM克服的两个技术问题是消失的梯度和爆炸的梯度,两者都与网络的训练方式有关。
LSTM解决技术问题的关键是模型中使用的单元的特定内部结构。
多种类比可以帮助您了解LSTM与传统神经网络(由简单神经元组成)之间的区别。
我认为说神经网络根本没有记忆是不公平的。毕竟,那些学习到的权重是训练数据的某种记忆。但是此内存更静态。有时我们想记住一个输入供以后使用。这种情况有很多例子,例如股票市场。为了做出良好的投资判断,我们至少必须从时间窗口中查看库存数据。
让神经网络接受时间序列数据的简单方法是将多个神经网络连接在一起。每个神经网络处理一个时间步。您可以在窗口或上下文中的所有时间步骤向神经网络提供数据,而不是在每个单独的时间步提供数据。
很多时候,您需要处理具有周期性模式的数据。举一个愚蠢的例子,假设您要预测圣诞树的销售。这是一个非常季节性的事情,可能每年仅达到一次峰值。因此,预测圣诞树销售的一种好策略是查看一年前的数据。对于此类问题,您可能需要具有广阔的环境以包含古老的数据点,或者您必须具有良好的记忆力。您知道哪些数据值得记住以备后用,而哪些数据无用则需要忘记。然后,后来发明了LSTM(长期短期记忆),通过在网络中显式引入一个称为单元的存储单元来解决此问题。这是LSTM构建块的图。
网络需要三个输入。 X_t是当前时间步长的输入。 h_t-1是前一个LSTM单元的输出,而C_t-1是前一个LSTM单元的“内存”,我认为这是最重要的输入。 至于输出,h_t是当前网络的输出。 C_t是当前单元的内存。
因此,该单元通过考虑当前输入,先前的输出和先前的存储器来做出决定。 并且它生成一个新的输出并更改其内存。

在这里插入图片描述

其内部存储器C_t的更改方式与通过管道输送水非常相似。 假设内存是水,它将流入管道中。 您要一路更改此内存流,并且此更改由两个阀门控制。

第一个阀称为遗忘阀。 如果关闭它,将不会保留任何旧的内存。 如果您完全打开该阀,则所有旧内存都将通过。

第二个阀是新的存储阀。 新记忆将通过上面的T形接头进入,并与旧记忆合并。 确切地说,应该引入多少新内存是由第二个阀门控制的。
在LSTM图表上,最上面的“管道”是内存管道。 输入是旧内存(向量)。 它穿过的第一个十字✖是忘记阀。 它实际上是按元素的乘法运算。 因此,如果将旧内存C_t-1与接近0的向量相乘,则意味着您要忘记大部分旧内存。 如果您的遗忘阀等于1,则让旧内存通过。
然后,内存流将经历的第二个操作是此+运算符。 该运算符意味着分段求和。 它类似于T形接头管。 通过此操作,新内存和旧内存将合并。 另一个阀(+号下方的valve)控制应向旧存储器中添加多少新存储器。
完成这两个操作后,您将旧的内存C_t-1更改为新的内存C_t。

最后,我们需要为该LSTM单元生成输出。该步骤具有由新存储器,先前的输出h_t-1,输入X_t和偏置矢量控制的输出阀。该阀控制应向下一个LSTM单元输出多少新内存。

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值