0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

放弃 RNN 和 LSTM 吧,它们真的不好用

8g3K_AI_Thinker 来源:未知 作者:胡薇 2018-04-25 09:43 次阅读

2014 年 RNN/LSTM 起死回生。自此,RNN/LSTM 及其变种逐渐被广大用户接受和认可。起初,LSTM 和 RNN 只是一种解决序列学习和序列翻译问题的方法(seq2seq),随后被用于语音识别并有很好的效果,比如 Siri,Cortana,Alexa 等;此外,这种技术在机器翻译领域也有应用,比如 Google Translate。

2015-2016 年,新的 ResNet 和 Attention 技术出现。实际上,我们可以将 LSTM 理解为一种巧妙地 bypass technique,而 attention 的成功表明了 MLP(多层感知器)网络可以被上下文向量影响的平均网络(averaging network)所替代。

两年过去了,我们现在已经可以给出结论:

放弃 RNN 和 LSTM 吧,它们真的不好用

基于 attention 的网络逐渐被越来越多的企业采用,比如 Google,Facebook,Salesforce 等公司都已经开始用基于attention的模型来替换RNN和其变种。RNN 在各种应用场景下时日无多,因为相比基于 attention 的模型,RNN 需要更多的资源来训练和运行。

编者注:训练 RNN 和 LSTM 是非常困难的,因为计算能力受到内存和带宽等的约束。这同时也是硬件设计者的噩梦,并最终限制了神经网络解决方案的适用性。简而言之,每个 LSTM 单元需要 4 个线性层(MLP 层),以便每个顺序时间步运行一次。线性层需要大量的内存带宽才能执行计算;由于系统没有足够的内存带宽将数据馈送到计算单元,实际上它们无法使用许多计算单元。添加更多的计算单元很容易,但添加更多的内存带宽却很难。因此,RNN/LSTM 及其变种并不和硬件加速非常匹配,一个可能的解决方案就是让计算在存储器设备中完成。

为什么 RNN/LSTM 真的不好用?

RNN,LSTM及其变种主要使用序列处理,如下图所示:

图1 RNN中的序列处理

图中的箭头表示长期信息在进入当前的处理单元前需要有序地进入所有其他的处理单元。也就是说,这很容易通过多次乘小于 0 的数字来进行破坏和攻击,这就是梯度消失的原因。

梯度消失可以利用 LSTM 模块来补救,目前的 LSTM 可是看作是多交换网关,有点像 ResNet。因为 LSTM 可以绕过一些单元,对长时间的步骤进行记忆,因此 LSTM 可以一定程度上解决梯度消失的问题。

图2 LSTM中的序列处理

从图2可以看出,从前面的单元传递来当前单元的序列路径依然存在。事实上,因为这条路径会不断添加并且会遗忘与之相关的路径分支,它会变得越来越复杂。LSTM、GRU 及其变体能学习大量的长期信息,但它们最多只能记住约 100s 的长期信息,而不是 1000s,10000s 甚至更长时间的信息。

RNN 还有一个问题就是并不与所有硬件兼容。如果要快速训练 RNN,那么就需要大量的计算资源,而这正是我们缺少的。如果在云上运行 RNN 模型的话,也会消耗比其他模型更多的资源。随着语音转文本需求的快速增长,云端的扩展也变得更加困难。

你需要做些什么?

因为大多数时间我们处理的都是实时的因果数据(casual data),我们想利用这些已知的数据来为之后的决策做准备。那如果可以避免进行序列处理,我们就可以找出更好的 look-ahead和 look-back 的单元,这样的 look-ahead/back 就叫做 neural attention 模块。

这种补救方法融合了多个 neural attention 模块,组成了一个分层的 neural attention编码器,如图3所示:

图3 分层 neural attention 编码器

还有一种更好地分析过去的方法就是用 attention 模块把过去所有的编码向量总结为一个上下文向量 Ct。

这里还有一个 attention 模块的分层,与神经网络和时间卷积网络(Temporal convolutional network)的分层非常像。分层神经 attention 编码器的多层 attention 能查看过去信息的一小部分,比如说 100 个向量,而上面分层的attention模块还能查看到 100 个下层的注意力模块,也就是 100×100 个向量。这极大地扩展了分层神经 attention 编码器的能力。

更重要的是将传播向量传输到网络输出所需要的路径长度:在分层网络中,路径长度与 Log(N)成比例的,其中 N 是分层的层数。这与 RNN 需要执行的T步骤形成了对照,其中 T 是需要记住的顺序的最大长度,而 T >> N。

Neural Turing Machines(NTM,神经图灵机)的架构也与图3类似,但是 NTM 是让神经网络来决定通过 attention 从内存中读取什么的。也就是说,真实的神经网络将决定哪个过去的向量对未来的决策更重要。

在内存存储方面。与 NTM 不同,上面的架构把所有之前的表示都储存在内存里,这就会造成效率比较低的问题。有一个解决的办法就是增加另外一个单元来防止有相互关系的数据多次保存。当前科学研究的重点是由应用去决定保存哪些向量,哪些不保存。

目前许多的公司仍在使用 RNN/LSTM 来进行语音转文本的工作,都没有意识到这种网络结构在效率和可扩展性上的缺点。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    44

    文章

    3504

    浏览量

    132816
  • rnn
    rnn
    +关注

    关注

    0

    文章

    76

    浏览量

    6851

原文标题:放弃 RNN/LSTM 吧,因为真的不好用!望周知~

文章出处:【微信号:AI_Thinker,微信公众号:人工智能头条】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LSTM模型的基本组成

    长短期记忆网络(Long Short-Term Memory, LSTM)是一种特殊的循环神经网络( RNN)架构,它在处理序列数据时能够捕捉长期依赖关系,有效解决了传统 RNN在处理长序列时容易出现
    的头像 发表于07-10 17:01 321次阅读

    蓝牙信标是什么?蓝牙信标好不好用

    是什么,另外这好 不好用呢? 以新锐科创蓝牙信标为例 一、蓝牙信标是什么? 通过名字我们不难看出,其实蓝牙信标的基本用途与蓝牙还是有一定关系的,它实际上是一个Beacon设备。一般它都会被放在室内的一个固定位置,然后可以
    的头像 发表于07-09 16:32 244次阅读
    蓝牙信标是什么?蓝牙信标好<b class='flag-5'>不好用</b>?

    如何理解RNNLSTM神经网络

    在深入探讨 RNN(Recurrent Neural Network,循环神经网络)与 LSTM(Long Short-Term Memory,长短期记忆网络)神经网络之前,我们首先需要明确 它们
    的头像 发表于07-09 11:12 152次阅读

    CNN与RNN的关系

    在深度学习的广阔领域中,卷积神经网络(CNN)和循环神经网络( RNN)是两种极为重要且各具特色的神经网络模型。 它们各自在图像处理、自然语言处理等领域展现出卓越的性能。本文将从概念、原理、应用场景及代码示例等方面详细探讨CNN与 RNN
    的头像 发表于07-08 16:56 226次阅读

    rnn是什么神经网络

    RNN(Recurrent Neural Network,循环神经网络)是一种具有循环连接的神经网络,它能够处理序列数据,并且具有记忆能力。与传统的前馈神经网络(Feedforward Neural
    的头像 发表于07-05 09:49 325次阅读

    rnn神经网络模型原理

    RNN(Recurrent Neural Network,循环神经网络)是一种具有循环结构的神经网络,它能够处理序列数据,具有记忆功能。 RNN在自然语言处理、语音识别、时间序列预测等领域有着广泛
    的头像 发表于07-04 15:40 316次阅读

    RNN神经网络适用于什么

    RNN(Recurrent Neural Network,循环神经网络)是一种具有循环结构的神经网络,它可以处理序列数据,具有记忆功能。 RNN在许多领域都有广泛的应用,以下是一些 RNN神经网络的适用
    的头像 发表于07-04 15:04 413次阅读

    rnn神经网络基本原理

    RNN(Recurrent Neural Network,循环神经网络)是一种具有循环结构的神经网络,它能够处理序列数据,并且能够捕捉时间序列数据中的动态特征。 RNN在自然语言处理、语音识别、时间
    的头像 发表于07-04 15:02 407次阅读

    stm32L0串口接收不好用是什么原因导致的?

    stm32L0系列串口在使用中出现,一段时间后串口接收就 不好用了,各位能不能给一下使用经验。
    发表于07-04 07:42

    插拔类的接线端子,要测试多次吃插拔才算成功

    1、插拔类的端子好 不好用
    发表于03-25 14:28

    什么是RNN(循环神经网络)?

    循环神经网络 ( RNN) 是一种深度学习结构,它使用过去的信息来提高网络处理当前和将来输入的性能。 RNN的独特之处在于该网络包含隐藏状态和循环。
    发表于02-29 14:56 3127次阅读
    什么是<b class='flag-5'>RNN</b> (循环神经网络)?

    精选 25 个RNN问题

    ,非常适合 RNN。与其他神经网络不同, RNN具有内部存储器,允许 它们保留来自先前输入的信息,并根据整个序列的上下文做出预测或决策。在本文中,我们将探讨 RNN的架构、它
    的头像 发表于12-15 08:28 514次阅读
    精选 25 个 <b class='flag-5'>RNN</b> 问题

    CC430系列有似arduino那样简单的开发环境吗?

    最近想玩玩大气压传感器,想起手上还有TI的Chronos手表套件,上边有个大气压传感器,但是CCS开发环境 不好用,求推荐类似arduino那样的,简单粗暴无脑的开发环境,当然得带ez430-Chronos库函数的,energia好像不支持CC430
    发表于10-19 07:36

    Vitis AIRNN用户指南

    核、工具、库、模型和示例设计组成。 它们在设计时充分考虑了高效率和易用性,可在 Xilinx FPGA 和自适应计算加速平台 (ACAP) 上释放 AI 加速的全部潜力。 RNN工具通过抽象底层 FPGA 和 ACAP 的复杂性,使开发
    发表于09-13 17:32 0次下载
    Vitis AI <b class='flag-5'>RNN</b>用户指南

    求助,有没有SC0用作串口的例程?

    有没有SC0 用作串口的例程?在BSP包里面的 不好用
    发表于08-24 06:43