热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

双向lstm_AI|LSTM为何如此有效?这五个秘密是你要知道的

↑↑↑↑↑点击上方蓝色字关注我们!『运筹OR帷幄』转载作者:AI科技评论编者按LSTM作为序列数据处理方向大家所熟知的神经网络结构,不仅能
↑↑↑↑↑点击上方蓝色字关注我们!

47d69d1f8b524790159e9ca82581e3fd.png


『运筹OR帷幄』转载

作者:AI科技评论

3e5b05a593b32c6a1f69046df25474e9.gif

编者按

LSTM作为序列数据处理方向大家所熟知的神经网络结构,不仅能够解决RNN无法处理长距离的依赖的问题,同时还能够解决常见的梯度消失等问题。这篇文章向大家揭示为何LSTM如此有效的5个关键所在。

276c55e13147a3cb69f73397b906b525.png译 | 张大倩编 | 丛  末长短期记忆网络(LSTM),作为一种改进之后的循环神经网络,不仅能够解决 RNN无法处理长距离的依赖的问题,还能够解决神经网络中常见的梯度爆炸或梯度消失等问题,在处理序列数据方面非常有效。有效背后的根本原因有哪些?本文结合简单的案例,带大家了解关于 LSTM 的五个秘密,也解释了 LSTM如此有效的关键所在。

秘密一:发明LSTM是因为RNN 发生严重的内存泄漏

之前,我们介绍了递归神经网络(RNN),并演示了如何将它们用于情感分析。 RNN 的问题是远程内存。例如,它们能够预测出“the clouds are in the…”这句话的下一个单词“sky”,但却无法预测出下面这句话中缺失的单词:“她在法国长大。现在到中国才几个月。她说一口流利的 …”(“She grew up in France. Now she has been in China for few months only. She speaks fluent …”)随着间隔的拉长,RNN变得无法学会信息连接。在此示例中,最近的信息表明,下一个词可能是一种语言的名称,但是如果我们想缩小哪种语言的范围,那么就需要到间隔很长的前文中去找“法国”。在自然语言文本中,这种问题,完全有可能在相关信息和需要该信息的地方出现很大的差异。这种差异在德语中也很常见。969a0ff30f33ab2bc985fc22b49b7cec.png为什么RNN在长序列文本方面存在巨大的问题?根据设计,RNN 在每个时间步长上都会接受两个输入:一个输入向量(例如,输入句子中的一个词)和一个隐藏状态(例如,以前词中的记忆表示)。RNN下一个时间步长采用第二个输入向量和第一隐藏状态来创建该时间步长的输出。因此,为了捕获长序列中的语义,我们需要在多个时间步长上运行RNN,将展开的RNN变成一个非常深的网络。

阅读参考:

https://towardsdatascience.com/recurrent-neural-networks-explained-ffb9f94c5e09 

长序列并不是RNN的唯一麻烦制造者。就像任何非常深的神经网络一样,RNN也存在梯度消失和爆炸的问题,因此需要花费大量时间进行训练。人们已经提出了许多技术来缓解此问题,但还无法完全消除该问题,这些技术包括:
  • 仔细地初始化参数

  • 使用非饱和激活函数,如ReLU

  • 应用批量归一化、梯度消失、舍弃网络细胞等方法

  • 使用经过时间截断的反向传播

这些方法仍然有其局限性。此外,除了训练时间长之外,长期运行的RNN还面临另一个问题是:对首个输入的记忆会逐渐消失。一段时间后,RNN的状态库中几乎没有首个输入的任何痕迹。例如,如果我们想对以“我喜欢这款产品”开头的长评论进行情感分析,但其余评论列出了许多可能使该产品变得更好的因素,那么 RNN 将逐渐忘记首个评论中传递的正面情绪,并且会完全误认为该评论是负面的。为了解决RNN的这些问题,研究者已经在研究中引入了各类具有长期记忆的细胞。实际上,不再使用基本的RNN的大多数工作是通过所谓的长短期记忆网络(LSTM)完成的。LSTM是由S. Hochreiter和J. Schmidhuber发明的。

秘密2 :LSTM的一个关键思想是“门”

每个LSTM细胞都控制着要记住的内容、要忘记的内容以及如何使用门来更新存储器。这样,LSTM网络解决了梯度爆炸或梯度消失的问题,以及前面提到的所有其他问题!LSTM细胞的架构如下图所示:fc68748e0286c7e49d73be2b52f4fb05.png来源:哈佛大学 P. Protopapas教授的课堂讲稿(下同,不再一一注释)

h 是隐藏状态,表示的是短期记忆;C是细胞状态,表示的是长期记忆;x表示输入。

门只能执行很少的矩阵转换,激活 sigmoid函数和tanh函数可以神奇地解决所有RNN问题。在下一节中,我们将通过观察这些细胞如何遗忘、记忆和更新其内存来深入研究这一过程。一个有趣的故事:让我们设置一个有趣的情节来探索这个图表。假设你是老板,你的员工要求加薪。你会同意吗?这取决于多个因素,比如你当时的心情。下面我们将你的大脑视为LSTM细胞,当然我们无意冒犯你聪明的大脑。30ba89ba8baa7c4d647d9485279f032f.png你的长期状态C将影响你的决定。平均来说,你有70%的时间心情很好,而你还剩下30%的预算。因此你的细胞状态是C=[0.7, 0.3]。最近,所有的事情对你来说都很顺利,100%地提升了你的好心情,而你有100%的可能性预留可操作的预算。这就把你的隐藏状态变成了h=[1,1]。今天,发生了三件事:你的孩子在学校考试中取得了好成绩,尽管你的老板对你的评价很差,但是你发现你仍然有足够的时间来完成工作。因此,今天的输入是x=[1, - 1,1]。基于这个评估,你会给你的员工加薪吗?秘密3:LSTM通过使用“忘记门”来忘记在上述情况下,你的第一步可能是弄清楚今天发生的事情(输入x)和最近发生的事情(隐藏状态h),二者会影响你对情况的长期判断(细胞状态C)。“忘记门”( Forget Gate)控制着过去存储的内存量。在收到员工加薪的请求后,你的“忘记门”会运行以下f_t的计算,其值最终会影响你的长期记忆。下图中显示的权重是为了便于说明目的的随意选择。它们的值通常是在网络训练期间计算的。结果[0,0]表示要抹去(完全忘记)你的长期记忆,不要让它影响你今天的决定。d8435bae40977408ef52488f1fffed90.png

秘密4:LSTM 记得使用“输入门”

接下来,你需要决定:最近发生的事情(隐藏状态h)和今天发生的事情(输入x)中的哪些信息需要记录到你对所处情况的长远判断中(状态状态C)。LSTM通过使用“输入门”( Input Gate)来决定要记住什么。首先,你要计算输入门的值 i_t,由于激活了sigmoid函数,值落在0和1之间;接下来,你要tanh激活函数在-1和1之间缩放输入;最后,你要通过添加这两个结果来估计新的细胞状态。结果[1,1]表明,根据最近和当前的信息,你100%处于良好状态,给员工加薪有很高的可能性。这对你的员工来说很有希望。51405c7e8a97e6e49a88b04a57a08f09.png

秘密5 :LSTM使用“细胞状态”保持长期记忆

现在,你知道最近发生的事情会如何影响你的状态。接下来,是时候根据新的理论来更新你对所处情况的长期判断了。当出现新值时,LSTM 再次通过使用门来决定如何更新其内存。门控的新值将添加到当前存储器中。这种加法运算解决了简单RNN的梯度爆炸或梯度消失问题。LSTM 通过相加而不是相乘的方式来计算新状态。结果C_t 被存储为所处情况的新的长期判断(细胞状态)。值[1,1]表示你整体有100%的时间保持良好的心情,并且有100%的可能性一直都有钱!你是位无可挑剔的老板!30542d72dfaf211cb10528f8f70dc52c.png根据这些信息,你可以更新所处情况的短期判断:h_t(下一个隐藏状态)。值[0.9,0.9]表示你有90%的可能性在下一步增加员工的工资!祝贺他!  0cb8306039d7300e979ba8a458268180.png1、门控循环单元LSTM细胞的一种变体被称为门控循环单元,简称GRU。GRU 是Kyunghyun Cho等人在2014年的一篇论文中提出的。GRU是LSTM细胞的简化版本,速度比LSTM快一点,而且性能似乎也与LSTM相当,这就是它为什么越来越受欢迎的原因。db1fbad343bea52c9148f8afa317a36c.png如上所示,这两个状态向量合并为一个向量。单个门控制器控制“忘记门”和“输入门”。如果门控制器输出 1,则输入门打开,忘记门关闭。如果输出0,则相反。换句话说,每当必须存储内存时,其存储位置先被删除。上图中没有输出门,在每一步都输出完整的状态向量。但是,增加了一个新的门控制器,它控制之前状态的哪一部分将呈现给主层。2、堆叠LSTM细胞通过对齐多个LSTM细胞,我们可以处理序列数据的输入,例如下图中有4个单词的句子。b94bc2160ba8f87e68129093e885e39b.pngLSTM单元通常是分层排列的,因此每个单元的输出都是其他单元的输入。在本例中,我们有两个层,每个层有4个细胞。通过这种方式,网络变得更加丰富,并捕获到更多的依赖项。3、双向LSTMRNN、LSTM和GRU是用来分析数值序列的。有时候,按相反的顺序分析序列也是有意义的。例如,在“老板对员工说,他需要更努力地工作”这个句子中,尽管“他”一开始就出现了,但这句话中的他指的是:在句末提到的员工。因此,分析序列的顺序需要颠倒或通过组合向前和向后的顺序。下图描述了这种双向架构:f6cebff51f932de08cf34bb1b05044c5.png下图进一步说明了双向 LSTM。底部的网络接收原始顺序的序列,而顶部的网络按相反顺序接收相同的输入。这两个网络不一定完全相同。重要的是,它们的输出被合并为最终的预测。5d51afd0d6712159446ffadbc9279a71.png想要知道更多的秘密?正如我们刚刚提到的那样,LSTM细胞可以学会识别重要的输入(输入门的作用),将该输入存储在长期状态下,学会在需要时将其保留(忘记门的作用),并在需要时学会提取它。LSTM 已经改变了机器学习范式,现在可以通过世界上最有价值的上市公司如谷歌、Amazon和Facebook向数十亿用户提供服务。自2015年中期以来,LSTM极大地改善了超过40亿部Android手机的语音识别。自2016年11月以来,LSTM应用在了谷歌翻译中,极大地改善了机器翻译。Facebook每天执行超过40亿个基于LSTM的翻译。自2016年以来,近20亿部iPhone手机上搭载了基于LSTM的Siri。亚马逊的Alexa回答问题也是基于 LSTM。扩展阅读如果你想知道更多关于LSTM和GRU的信息,可以阅读Michael Nguyen写的这篇带有动画说明的文章:

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

对于那些喜欢从头构建LSTM模型的人来说,这篇文章可能会有用:https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21下面,我将提供使用Python实践实施LSTM网络的方法。1、情绪分析:一个基准https://towardsdatascience.com/sentiment-analysis-a-benchmark-903279cab44a基于注意力的序列到序列模型和Transformer超越了LSTM,最近在谷歌的机器翻译和OpenAI的文本生成方面取得了令人惊叹的成果。2、NLU任务注意力机制的实践指南https://towardsdatascience.com/practical-guide-to-attention-mechanism-for-nlu-tasks-ccc47be8d500使用BERT、FastText、TextCNN、Transformer、Se2seq等可以全面实现文本分类,这个可以在 Github库中找到:https://github.com/brightmart/text_classification或者你可以查看这个关于BERT的教程:https://towardsdatascience.com/bert-for-dummies-step-by-step-tutorial-fb90890ffe036ee1260e17b3f0ba3c99dede7233dc8c.gif 欢迎社会各界加入『运筹OR帷幄』算法知识星球!随着算法相关专业热度的提升,考研读博、留学申请、求职的难度也在相应飙升,『运筹OR帷幄』建立了【算法社区】知识星球,涵盖运筹学、数据科学、人工智能、管理科学、工业工程等相关专业,集结社区40W专业受众的力量,提供给大家一个共同的学习交流平台,结交志同道合的伙伴。ee52ce4d56a41b4eb48f512b1b88a71f.png# 加入知识星球,您将收获以下福利 #
  • 依托『运筹OR帷幄』40w+专业受众和40+细分领域硕博微信群的算法技术交流
  • 与国内外Top名校教授|博士和名企研发高管一起交流算法相关技术干货
  • 海量学界|业界(独家内推)招聘|实习机会发布,申请|求职面试经验交流
  • 数学模型|算法|论文|学习资料分享与提问,倡导同行交流,寻找志同道合的“队友”
  • 每月开展一次“人气话题”和“人气回答”评选,百元红包奖励分享和互动
  • 每月一次“领读人”带队Paper|教学视频|原创技术推文等线上Meetup小组学习
  • 享受『运筹OR帷幄』各大城市线下Meetup免费入场资格,拓展人脉

相关文章推荐

看完LSTM如此有效的秘密后,大家如果想亲自尝试一下该模型,可以来看看书生的文章,手把手教你搭建LSTM模型。

点击蓝字标题,即可阅读《数据科学 | 手把手教你搭建一个LSTM时序模型》

本文福利

可以在 公众号后台 回复关键词:“ DS 获取大量由我平台编辑精心整理的数据科学资料,如果觉得有用, 请勿吝啬你的留言和赞哦!

—— 完 ——

a099523cd8a8fb82d0b7d87f91bcf2b9.gif

fe285728a7b20aa00920236f9d5b8382.png18d995ddf1609fe56092de18fe8cc034.png0b259d84de612630c07af790ddf554f5.png7d6e1b007f129ca97024334baa5cf4a7.gif3951cb7cc4a8a39e589bdbb11acd8dfa.gif

文章须知

文章作者:AI科技评论

责任编辑:夏洛克

审核编辑:阿春

微信编辑:玖蓁

本文转载自公众号 AI科技评论(ID:aitechtalk)

原文链接:LSTM 为何如此有效?这五个秘密是你要知道的




推荐阅读
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • Imdevelopinganappwhichneedstogetmusicfilebystreamingforplayinglive.我正在开发一个应用程序,需要通过流 ... [详细]
  • Apple iPad:过渡设备还是平板电脑?
    I’vebeenagonizingoverwhethertopostaniPadarticle.Applecertainlydon’tneedmorepublicityandthe ... [详细]
  • 本文整理了Java中com.amazonaws.services.autoscaling.AmazonAutoScaling.describeAutoScalingGroups() ... [详细]
author-avatar
耗子很傻爱钻洞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有