为何RNN能够在众多机器学习方法中脱颖而出?(附指南)

来源:机器人圈

作者:BaymaxZ

本文长度为5000字,建议阅读20分钟

本文介绍RNN的重要性和先进性,并详细阐释几种用于深度学习中的RNN模型。

近年来,循环神经网络(RNN)在众多自然语言处理项目中取得重大突破得以成名。为什么RNN可以在众多机器学习方法中脱颖而出?本文编译自machinelearningmastery.com,作者是Jason Brownlee。该作者以清晰的思路概括性地介绍了RNN的重要性和先进性,并详细阐释了几种用于深度学习中的RNN模型。相信此文一定会使你对RNN的理解更加深入。

循环神经网络(RNN)是一种人工神经网络,RNN在网络图中添加附加权重,以在网络图中创建周期,以维持内部状态。

向神经网络添加状态,他们将能够明确地学习并利用序列预测问题中的环境,例如订单或时间成分的问题。

在这篇文章中,你将参加用于深度学习的经常性神经网络。

看完这篇文章后,你会了解:

  • 用于深度学习的RNN,如LSTM、GRU和NTM
  • RNN与人工神经网络中对于循环的更广泛研究的相关性
  • RNN的研究如何引发了一系列具有挑战性的问题

注意,我们不会涉及所有循环神经网络。相反,我们将重点关注用于深度学习(LSTM、GRU和NTM)的循环神经网络,以及了解它们所需的环境。

概览

我们将通过设置循环神经网络领域的场景开始。

接下来,我们将仔细研究用于深度学习的LSTM、GRU和NTM。

然后,我们花一些时间研究一些与RNN相关的高级话题。

  • 完全循环网络(Fully Recurrent Networks)
  • 递归神经网络(Recursive Neural Networks)
  • 神经历史压缩器(Neural History Compressor)

循环神经网络RNN

我们先设置一个场景。普遍的看法表明,循环为网络拓扑提供了记忆。

理解这一点更好的方法是,训练集包含了当前训练示例的一组输入的示例,常规上,比如传统的多层感知器是这样的。

X(i) -> y(i)

但是,训练示例补充了前一个例子中的一组输入。这是“非常规”的,例如循环神经网络。

[X(i-1), X(i)] -> y(i)

与所有前馈网络范例一样,问题是如何将输入层连接到输出层,包括反馈激活,然后训练结构收敛。

现在我们来从非常简单的概念开始,看看不同类型的循环神经网络。

全循环网络

该网络保留了多层感知器的分层拓扑,但是每个元素都具有与架构中每个其他元素的加权连接,并且具有与其自身关联的单个反馈连接。

并不是所有的连接都会被训练,并且误差导数的极端非线性意味着传统的反向传播将不起作用,因此该网络采用BPTT(通过时间的反向传播算法)或随机梯度下降。

另外,参见1991年由Bill Wilson发布的Tensor Product Networks(http://www.cse.unsw.edu.au/~billw/cs9444/tensor-stuff/tensor-intro-04.html)。

递归循环网络

递归神经网络是递归网络的线性架构变体。

递归促进了分层特征空间中的分支,同时,由此产生的网络架构在训练进行时模仿它。

通过梯度梯度方法实现训练。

该网络在2011年由R. Socher等人发布的Paralsing Natural Scenes and Natural Language with Recursive Neural Networks(通过递归神经网络分析自然场景和自然语言)(http://machinelearning.wustl.edu/mlpapers/paper_files/ICML2011Socher_125.pdf)一文中,有详细描述。

神经历史压缩器

LSTM之父Jürgen Schmidhuber曾于2001年首次报道了一个非常深度的学习器,通过无监督的RNN层次结构的预训练,能够对数百个神经层进行信用分配。

每个RNN被无监督地训练,以预测下一个输入。只有产生误差的输入才会向前推进,将新的信息传送到层次结构中的下一个RNN,然后以较慢的自组织时间尺度进行处理。

结果显示,没有任何信息丢失,只是被压缩了。RNN堆栈是数据的“深度生成模型”,我们可以从压缩形式重建数据。

详情可参见J.Schmidhuber等人2014年撰写的Deep Learning in Neural Networks:An Overview。(http://www2.econ.iastate.edu/tesfatsi/DeepLearningInNeuralNetworksOverview.JSchmidhuber2015.pdf)

反向传播则失败了,即使有一些可能性,由于非线性导数的极值的计算增加,误差通过大型拓扑反向传播,使信用分配非常困难。

长短期记忆网络

通过传统的反向传播时间(BPTT)或实时循环学习(RTTL),时间流逝的误差信号往往会爆炸或消失。

反向传播误差的时间演化很大程度上取决于权重的大小。权重爆炸可能引起权重振荡,而消失的原因,则是因为学习过程长时间延迟,并且花费太多的时间,或者根本不起作用。

  • LSTM是一种具有一定的基于梯度的学习算法的新型循环网络架构训练;
  • LSTM旨在克服误差回流问题。它可以学习跨越超过1000步的时间间隔;
  • 噪声、不可压缩的输入序列是的确存在的,同时还不会失去短期延迟能力。

误差的回流问题是通过一种高效的、基于梯度的算法来克服的,这种算法用于通过特殊单元的内部状态的体系结构执行常数(从而不会爆炸或消失)的误差。这些单元会减少“输入量冲突”和“输出权重冲突”的影响。

输入权重冲突:如果输入非零,则必须使用相同的输入权重来存储某些输入并忽略其他输入,然后经常会收到冲突的加权更新信号。

这些信号将尝试使权重参与存储输入并保护输入。这种冲突使得学习过程变得困难,并且需要一个更加环境敏感的机制来通过输入权重来控制“写入操作”。

输出权重冲突:只要单元的输出不为零,来自该单元的输出连接的权重将吸引在序列处理期间产生的冲突加权更新信号。

这些信号将尝试使输出权重参与访问存储在处理单元中的信息,并且在不同时间保护随后的单元免受被馈送的单元的输出的干扰。

这些冲突并不是长期延迟的特殊情况,也可能同样影响到短期延迟。值得注意的是,随着延迟的增加,存储的信息必须被保护以免受扰动,特别是在学习过程的高级阶段。

网络架构:不同类型的单元可能传达关于网络当前状态的有用信息。例如,输入门(输出门)可以使用来自其他存储器单元的输入以决定是否在其存储器单元中存储(访问)某些信息。

存储单元包含门。门是具体到他们调解的连接。输入门用于纠正输入重量冲突,同时输出门可以消除输出重量冲突。

门:具体来说,为了减轻输入和输出权重的冲突和扰动,引入乘法输入门单元以保护存储的内容不受干扰输入的扰动,乘法输出门单元通过存储的当前不相关的存储器内容保护其他单元免受干扰。

上图为具有8个输入单元、4个输出单元和2个大小为2的存储单元块的LSTM网络的示例。in1标记输入门,out1标记输出门,cell1 = block1标记块1的第一个存储单元。

由于处理元件的多样性,同时包含反馈连接,LSTM的连接性与多层感知器相比是复杂的。

存储单元块:共享相同输入门和相同输出门的存储单元形成称为“存储单元块”的结构。

存储单元块有助于信息存储,与传统的神经网络一样,在单个小区内对分布式输入进行编码并不容易。尺寸为1的存储单元块仅仅是一个简单的存储单元。

学习:由输入和输出门引起的改变的乘法动力学的实时循环学习(RTRL)的变体被用于确保通过存储器单元的内部状态到达“存储器单元网络”的反向传播的非衰减误差投入“不要及时传播”。

猜测:这种随机方法可以胜过许多术语延迟算法。我们可以确定,之前的工作中使用的许多长时间延迟的任务可以通过简单的随机权重猜测比通过所提出的算法更快地得到解决。

详见1997年S.Hochreiter和J.Schmidhuber撰写的Long-Short Term Memory(http://dl.acm.org/citation.cfm?id=1246450)。

LSTM循环神经网络最有趣的应用是自然语言处理。请参阅下列文章以获得全面的描述。

F. Gers和J. Schmidhuber,LSTM Recurrent Networks Learn Simple Context Free and Context Sensitive Languages(http://dwz.cn/6gGQ8W), 2001年。

F. Gers,Long Short Memory in Recurrent Neural Networks(http://www.felixgers.de/papers/phd.pdf),Ph.D.论文,2001年。

LSTM的限制

LSTM的高效截断版本无法轻易解决类似于“强烈延迟XOR”的问题。

每个存储单元块需要一个输入门和一个输出门。其他循环方法则不需要。

存储单元内部的“Constant Error Carrousels”的恒定误差流量与传统的前馈架构一样产生与整个输入串相同的效果。

LSTM与“regency”的概念与其他前瞻性方法一样有缺陷。如果需要精密计数时间步长,可能需要额外的计数机制。

LSTM优点

桥接长时间延迟的算法能力是架构内存单元中反向传播的不间断误差的结果。LSTM可以近似于噪声问题域、分布式表示和连续值。LSTM概述了应该考虑的问题,这非常重要,因为一些任务对于已经建立的循环网络来说是棘手的。

网络参数在问题域上的微调显然是不必要的。在每个权重和时间步长的更新复杂性方面,LSTM基本上等同于BPTT。LSTM显示出强大的功能,在机器翻译等领域获得了最先进的成果。

门控循环单元神经网络

门控循环神经网络已成功应用于顺序或时间数据。它最适合用于语音识别、自然语言处理和机器翻译,与LSTM一样在长序列问题域表现良好。

在LSTM主题中考虑了门控,同时还包含了门控网络生成信号,该信号用于控制当前输入以及先前的存储器如何用于更新当前激活,从而更新当前的网络状态。

门自身被加权,并且在整个学习阶段根据算法选择性地更新。门控网络以增加的复杂性的形式引入增加的计算消耗,因此增加了参数化。

LSTM RNN架构使用简单RNN的计算作为内部存储器单元(状态)的中间候选。门控循环单元(GRU)RNN将门控信号从LSTM RNN模型中减少到两个。这两个门被称为更新门和复位门。

GRU(和LSTM)RNN中的选通机制是对简单RNN在参数化方面的复制。使用BPTT随机梯度下降来更新对应于这些门的权重,因为它试图使成本函数最小化。

每个参数更新将涉及与整个网络的状态有关的信息。这可能会产生不利影响。

门控的概念进一步被探索,扩展出三种新的变量门控机制。涉及的三个门控变量是GRU1,其中每个门仅使用先前的隐藏状态和偏差来计算;GRU2,其中每个门仅使用先前的隐藏状态计算;以及GRU3,其中每个门仅使用偏置来计算。我们会观察到,GRU3产生最小数量的参数显著降低。

这三个变体和GRU RNN使用来自MNIST数据库的手写数字和IMDB电影评论数据集的数据进行基准测试。

从MNIST数据集生成了两个序列长度,一个是从IMDB数据集生成的。

门的主要驱动信号似乎是(循环)状态,因为它包含有关其他信号的基本信息。

随机梯度下降的使用隐含地携带有关网络状态的信息。这可能解释了在栅极信号中单独使用偏置的相对成功,因为其可自适应更新携带有关网络状态的信息。

门控变体探索出了门控机制,并对拓扑结构进行了有限的评估。

有关更多信息,请参阅:

R.Dey和F.M.Salem于2017年撰写的,门控循环单元(GRU)神经网络的门控变体(https://arxiv.org/ftp/arxiv/papers/1701/1701.05923.pdf)。

J.Chung等人于2014年撰写的,“经验评估门控循环神经网络对序列建模”(https://pdfs.semanticscholar.org/2d9e/3f53fcdb548b0b3c4d4efb197f164fe0c381.pdf)。

神经图灵机

神经图灵机通过将神经网络耦合到外部存储器资源来扩展神经网络的能力,它们可以通过关注过程进行交互。

组合系统类似于图灵机(Vuring Neumann)或冯诺依曼(Von Neumann)结构,但是它是可以实现端对端的,可以通过梯度下降进行有效的训练。

初步结果表明,神经图灵机可以从输入和输出示例中推导出简单的算法,如复制、排序和关联召回。

RNN从其他机器学习方法中脱颖而出,因为它们具备在长时间内学习并进行复杂的数据转换的能力。

扩展标准RNN的能力,以简化算法任务的解决方案,这种丰富性主要是通过一个庞大的可寻址记忆实现的,因此,通过类比图灵的、通过无限的存储磁带丰富有限状态机器,该算法被称为“神经图灵机”(NTM)。

与图灵机不同,NTM是可以通过梯度下降训练的可微分计算机,为学习程序提供了实用的机制。

NTM架构如上所示。在每个更新周期期间,控制器网络接收来自外部环境的输入并作为响应发出输出。它还通过一组并行读写头读取和写入存储器矩阵。虚线表示NTM线路与外界的划分。

至关重要的是,架构的每一个组成部分都是可以区分的,直接用梯度下降训练。这是通过定义“模糊”读写操作来实现的,这些操作与内存中的所有元素或多或少地相互作用(而不是像正常的图灵机或数字计算机那样处理单个元素)。

有关更多信息,请参阅:

A.Graves等人于2014年撰写的Neural Turing Machines(https://arxiv.org/pdf/1410.5401.pdf)。

R. Greve等人于2016年撰写的Evolving Neural Turing Machines for Reward-based Learning(http://sebastianrisi.com/wp-content/uploads/greve_gecco16.pdf)。

NTM实验:

这个复制任务测试NTM是否可以存储并调用长序列的任意信息。网络呈现随机二进制向量的输入序列,后跟分隔符标志。

训练网络以用来复制8位随机向量的序列,其中序列长度在1和20之间随机化。目标序列仅仅是输入序列的拷贝(没有定界符标志)。

重复复制任务通过要求网络将复制的序列输出指定次数来扩展副本,然后发出序列结束标记。它的主要动机是看看NTM是否可以学习一个简单的嵌套函数。

网络接收随机二进制向量的随机长度序列,随后是表示所需份数的标量值,其出现在单独的输入信道上。

关联召回任务涉及组织“间接”产生的数据,即一个数据项指向另一个数据项。构建项目列表,使得与其中一个项目的查询需要网络返回后续项目。

由分隔符符号左右限制的二进制向量序列被定义。在将多个项目传播到网络之后,通过显示随机项目查看该网络,并查看该网络是否可以产生下一个项目。

动态N-gram任务测试,如果NTM可以通过使用内存作为可重写表来快速适应新的预测分布,它可以用于保持转换统计数据,从而模拟常规的N-Gram模型。

考虑一下二进制序列中所有可能的6-gram分布的集合。每个6-gram分布可以表示为32个数字的表格,指定下一位将为1的概率,给定所有可能的长度五个二进制历史。通过使用当前查找表绘制200个连续位来生成特定的训练序列。网络一次观察序列一位,然后被要求预测下一位。

优先排序任务测试NTM的排序能力。将随机二进制向量序列与每个向量的标量优先等级一起输入到网络中。优先级从[-1,1]范围内均匀绘制。目标序列包含根据其优先级排序的二进制向量。作为其组成部分之一,NTM具有LSTM的前端架构。

概要

在这篇文章中,你已经了解了用于深度学习的循环神经网络(RNN)。

具体来说,你学到了:

  • 用于深度学习工作的RNN,如LSTM、GRU和NTM
  • RNN与人工神经网络中对于循环的更广泛研究的相关性
  • RNN的研究如何引发了一系列具有挑战性的问题

对于深入学习,你对循环神经网络是否已经掌握了许多知识?希望本文可以帮助到你。

原文发布于微信公众号 - 数据派THU(DatapiTHU)

原文发表时间:2017-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 用人工蜂群算法求解k-分区聚类问题

我之前的文章介绍了如何利用名为人工蜂群算法(ABC)的集群智能(SI)算法来解决现实世界的优化问题:https://medium.com/cesar-updat...

12600
来自专栏机器之心

教程 | 从头开始了解PyTorch的简单实现

选自GitHub 机器之心编译 参与:路 本教程展示了如何从了解张量开始到使用 PyTorch 训练简单的神经网络,是非常基础的 PyTorch 入门资源。Py...

60250
来自专栏人工智能

在线手写识别的多卷积神经网络方法

本文所描述的研究主要关注在线手写体识别系统中的单词识别技术。该在线手写体识别系统使用多组件神经网络(multiple component neural netw...

1.5K70
来自专栏深度学习自然语言处理

实例讲解决策树分类器

决策树是一种简单高效并且具有强解释性的模型,广泛应用于数据分析领域。其本质是一颗由多个判断节点组成的树,如:

12040
来自专栏人工智能

从零开始学人工智能-Python·决策树·简介

决策树是听上去比较厉害且又相对简单的算法,但在实现它的过程中可能会对编程本身有更深的理解、尤其是对递归的利用 我个人的习惯是先说明最终能干什么、然后再来说怎么实...

22460
来自专栏闪电gogogo的专栏

压缩感知重构算法之压缩采样匹配追踪(CoSaMP)

压缩采样匹配追踪(CompressiveSampling MP)是D. Needell继ROMP之后提出的又一个具有较大影响力的重构算法。CoSaMP也是对OM...

398100
来自专栏机器之心

教程 | 深度学习:自动编码器基础和类型

388160
来自专栏量子位

北大新成果!首次成功地将CNN解码器用于代码生成 | 论文+代码

最近,有一篇论文提出了一种基于语法的结构化CNN代码生成器,用《炉石传说》(HearthStone)基准数据集进行实验的结果表明:

14830
来自专栏AI科技大本营的专栏

一文看尽深度学习RNN:为啥就它适合语音识别、NLP与机器翻译?

本文是机器学习大牛Jason Brownlee系统介绍RNN的文章,他在文中详细对比了LSTM、GRU与NTM三大主流架构在深度学习上的工作原理及各自特性。读过...

38590
来自专栏尾尾部落

[剑指offer] 机器人的运动范围

地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。...

14330

扫码关注云+社区

领取腾讯云代金券