摘要: 随着技术的发展,作者觉得是时候放弃LSTM和RNN了!到底为什么呢?来看看吧~

递归神经网络(RNN),长期短期记忆(LSTM)及其所有变体:

现在是放弃它们的时候了!

在2014年,LSTM和RNN重新复活。我们都阅读过Colah的博客和Karpathy对RNN的赞赏。但那个时候我们都很年轻,没有经验。随着这几年的技术的发展,我们才慢慢发现序列变换(seq2seq)才是真正求解序列学习的真正模型,它在语音识别领域创造了惊人的结果,例如:苹果的Siri,Cortana,谷歌语音助手Alexa。还有就是我们的机器翻译,它可以将文档翻译成不同的语言。

然后在接下来的15年、16年,ResNet和Attention模型出现了。人们可以更好地认识到了LSTM其实就是一种巧妙的搭桥技术。注意,MLP网络可以通过平均受上下文向量影响的网络来取代,这个下文再谈。

通过两年的发展,今天我们可以肯定地说:“放弃你的RNN和LSTM!”

有证据表明,谷歌,Facebook,Salesforce等企业正在越来越多地使用基于注意力模型的网络。所有的这些公司已经取代了RNN和基于注意力模型的变体,而这只是一个开始,因为RNN相较于注意力模型需要更多的资源来训练。

为什么?

RNN和LSTM及其变体主要是随着时间的推移使用顺序处理,请参阅下图中的水平箭头:

这个箭头意味着,数据必须在到达当前处理单元之前顺序穿过所有单元,这意味着它可以很容易出现梯度消失的问题。

为此,人们推出了LSTM模块,它可以被看作是多个开关门的组合,ResNet就延续了它的设计,它可以绕过某些单元从而记住更长的时间步骤。因此,LSTM可以消除一些梯度消失的问题。

但并不是完全解决,正如你从上图所看到的那样。尽管如此,我们仍然有一条从过去的单元到现在的单元的顺序路径,实际上,现在这些路径甚至变得更加复杂,因为路径上还连接了加如记忆的分支和遗忘记忆的分支。毫无疑问,LSTM和GRU及变体能够学习大量长期的信息!但他们只是可以记住100s的序列,而不是1000s或10000s甚至更多。

并且RNN的另一个问题是需要消耗大量的计算资源。在云中运行这些模型也需要大量资源,并且由于语音到文本的需求正在迅速增长,云能提供的计算能力慢慢的满足不了它了。


我们应该怎么办?


如果要避免顺序处理,那么我们可以找到“向前预测”或更好的“向后回顾”的计算单元,因为我们处理的数据大部分都是实时因果数据。但在翻译句子或分析录制的视频时并非如此,例如,我们拥有所有数据并且可以为其带来更多时间。这样的向前回溯/后向回顾单元就是神经注意力模块,我们此前在此解释。

为了结合多个神经注意力模块,我们可以使用来自下图所示的“ 层级神经注意力编码器”:

观察过去信息的更好方式是使用注意力模块将过去编码向量汇总到上下文向量 C_t。请注意上面有一个层级注意力模块,它和层级神经网络非常相似。这也类似于下面的备注3中的时间卷积网络(TCN)。

在层级神经注意力编码器中,多层级关注可以查看最近过去的一小部分,比如说100个向量,而上面的层可以查看这100个关注模块,有效地整合100 x 100个向量的信息。这将层级神经注意力编码器的能力扩展到10,000个以前的向量。但更重要的是查看表示向量传播到网络输出所需的路径长度:在分层网络中,它与log(N)成正比,其中N是层次结构层数。这与RNN需要做的T步骤形成对比,其中T是要记住的序列的最大长度,并且T >> N。

简单的说就是回顾更多的历史信息并预测未来!

这种架构跟神经图灵机很相似,但可以让神经网络通过注意力决定从内存中读出什么。这意味着一个实际的神经网络将决定哪些过去的向量对未来决策的重要性。

但是存储到内存呢?上述体系结构将所有先前的表示存储在内存中,这可能是相当低效的。我们可以做的是添加另一个单元来防止相关数据被存储。例如,不存储与以前存储的向量太相似的向量。最好的办法就是让应用程序指导哪些载体应该保存或不保存,这是当前研究的重点。

我们看到很多公司仍然使用RNN / LSTM来完成自然语言处理和语音识别等任务模型,但很多人不知道这些网络如此低效且无法扩展。

总结:

关于训练RNN / LSTM:RNN和LSTM很难训练,因为它们需要内存、带宽、这些因素限制计算的效率,这对于硬件设计师来说是最糟糕的噩梦,并且最终限制了神经网络解决方案的适用性。简而言之,每个LSTM单元需要的4个线性层(MLP层)在每个序列时间步上运行。线性层需要计算大量的内存带宽,事实上,他们并不能经常使用很多计算单元,因为系统没有足够的内存带宽来提供计算单元。添加更多计算单元很容易,但很难增加更多的内存带宽。因此,RNN / LSTM和变体与硬件加速不太匹配,我之前曾讨论过这个问题在这里和这里。

注:

注1:层级神经注意力与WaveNet中的想法类似。但是我们不使用卷积神经网络,而是使用层级神经注意力模型。

注2:层级神经注意力模型也可以是双向的。

注3:这是一篇比较CNN和RNN的论文。时间卷积网络(TCN)“在不同范围的任务和数据集上优于经典的经常性网络,如LSTM,同时展示更大的有效内存。”

原文链接

干货好文,请关注扫描以下二维码:


该放弃正在堕落的“RNN和LSTM”了相关推荐

  1. keras从入门到放弃(十九)RNN和LSTM

    循环神经网络,Recurrent Neural Network.神经网络是一种节点定向连接成环的人工神经网络.这种网络的内部状态可以展示动态时序行为.不同于前馈神经网络的是,RNN可以利用它内部的记忆 ...

  2. 关于序列建模,是时候抛弃RNN和LSTM了

    作者表示:我们已经陷入 RNN.LSTM 和它们变体的坑中很多年,是时候抛弃它们了! 在 2014 年,RNN 和 LSTM 起死回生.我们都读过 Colah 的博客<Understanding ...

  3. 【串讲总结】RNN、LSTM、GRU、ConvLSTM、ConvGRU、ST-LSTM

    前言 平时很少写总结性的文章,感觉还是需要阶段性总结一些可以串在一起的知识点,所以这次写了下.因为我写的内容主要在时序.时空预测这个方向,所以主要还是把rnn,lstm,gru,convlstm,co ...

  4. 循环神经网络(RNN、LSTM、GRU)

    循环神经网络(RNN.LSTM.GRU) 目录 循环神经网络(RNN.LSTM.GRU) 概述: 计算: LSTM(长短记忆模型): GRU:

  5. 记忆网络RNN、LSTM与GRU

    RNN 结构 训练 应用 RNN Variants LSTM 结构 梯度消失及梯度爆炸 GRU 结构 一般的神经网络输入和输出的维度大小都是固定的,针对序列类型(尤其是变长的序列)的输入或输出数据束手 ...

  6. RNN和LSTM的正向/前向传播-图示公式和代码

    本文先讲的基础版本的RNN,包含内部结构示意图,公式以及每一步的python代码实现.然后,拓展到LSTM的前向传播网络.结合图片+公式+可运行的代码,清晰充分明白RNN的前向传播网络的具体过程.完整 ...

  7. 「模型解读」浅析RNN到LSTM

    https://www.toutiao.com/a6711704602531594764/ 卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适 ...

  8. RNN以及LSTM的介绍和公式梳理

    RNN以及LSTM的介绍和公式梳理 标签: 算法RNNLSTM 2015-07-25 16:32 127091人阅读 评论(40) 收藏 举报 本文章已收录于:  深度学习知识库  分类: 机器学习( ...

  9. 【模型解读】浅析RNN到LSTM

    卷积神经网络使用固定大小的矩阵作为输入(比如一张图片),然后输出一个固定大小的向量(比如不同分类的概率),适合于图像分类,目标检测,图像分割等.但是除了图像外,还有非常多的信息是非固定长度或者大小的, ...

最新文章

  1. 网络编程学习笔记(udp_client函数)
  2. PMP知识点(八、沟通管理)
  3. tomcat自启动设置
  4. oracle排序非英文最后,Oracle中中文、数字,英文混杂形式的字段进行排序的方法...
  5. MyEclipse生成常用方法
  6. ResNet改进版来了!可训练网络超过3000层!相同深度精度更高
  7. python正则化_Python正则表达式
  8. wav pcm数据是带符号的吗_UE4 C++基础教程 - 基础数据结构
  9. 创业,一定要咬牙坚持吗?屁,该放就放
  10. 5.11socket选项
  11. 新议题,好多年前的华为面试题
  12. 洛谷2863 [Usaco06JAN]牛的舞会
  13. TFT-ST7789 方向调整
  14. zeplin 登录效果实现
  15. 疲劳检测,基于视频的疲劳检测、脱岗、打呵欠、闭眼、点头等检测
  16. 多路测量实时同步工作原理_数字示波器原理
  17. eclipse中文语言包安装(别看网上那些乱七八糟的,我这个最简单)
  18. 客服人员如何摆脱工作上的负面情绪
  19. 常见snapper.sql脚本使用方法
  20. ArchLinux 的 pacman 命令详解

热门文章

  1. 【LeetCode笔记】399. 除法求值(Java、图)
  2. html编程入门指南,给萌新HTML5 入门指南
  3. dataframe存到mysql中_pandas实现to_sql将DataFrame保存到数据库中
  4. 用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...
  5. 黑苹果uhd630黑屏_求助各位图吧大佬一个黑苹果问题(黑苹果吧发帖得四级),目前使...
  6. mybatis 二级缓存失效_二级缓存updateBatchById失效
  7. 100个数学家如何集体越狱??
  8. MIT陈刚教授案件新进展,律师反诉美检察官利用不实信息制造舆情、干扰司法公正...
  9. 深度学习“炼丹”难?三分钟带你了解国产丹炉旷视天元
  10. 主持人李咏在美国去世 妻子哈文:永失我爱