长期和短期记忆(LSTM)网络是最先进的长期序列建模工具

  最近哪里都去不了,还是在家学习点什么好,人工智能最近很火,来学学吧。长期和短期记忆(LSTM)网络是最先进的长期序列建模工具。然而,很难理解LSTM学到了什么,也很难研究他们犯某些错误的原因。卷积神经网络领域有很多文章和论文,但是我们没有足够的工具来可视化和调试LSTM。
  在本文中,我们试图部分填补这一空白。我们从澳大利亚手语符号分类模型可视化LSTM网络的激活行为,并通过在LSTM层的激活单元上训练降噪自编码器来实现这一点。通过使用密集的自编码器,我们将LSTM激活值的100维向量投影到二维和三维。由于这一点,我们可以在某种程度上直观地探索激活空间。我们分析这个低维空间,并尝试探索这个降维操作如何帮助找到数据集中样本之间的关系。
  Auslan符号分类器 人工智能在线写作生成器_ai人工智能作文
  本文是米罗斯拉夫·巴托尔德工程论文(巴托尔德,2017)的延伸。本文使用的数据集来自(Kadous,2002)。该数据集由95个澳大利亚手语符号组成,使用配有高质量位置跟踪器的手套采集。但是,由于其中一个符号的数据文件有问题,仍有94个类可用。每个符号由本地手语用户重复27次,每个时间步长用22位数字编码(每只手11位数字)。在数据集中,最长序列的长度是137。然而,由于长序列的数量很少,我们将把长度保持在90位,并用零序列填充短序列的前端。
  米罗斯拉夫的论文测试了几个分类器,所有的分类器都基于LSTM架构,分类准确率约为96%。
  如果你不熟悉LSTM,可以看看克里斯托弗·奥拉(Christopher Olah)的博客,其中对LSTM网络有很好的解释:.或“机器之心”文章:在调用API之前,你需要了解LSTM是如何工作的。
  在本研究中,我们将重点关注一个包含100个LSTM单元的单一隐藏层架构。架构的最后一个分类层有94个神经元。它的输入是一个有90个时间步长的22维序列。我们使用了Keras功能性应用编程接口,其网络架构如图1所示。图1:模型架构
  图1所示的λ元素从完整的激活序列中提取最后一级激活(因为我们将return_sequences=True传递给了LSTM)。关于实施过程的细节,我们希望您能检查我们的回购。
  这是第一次尝试了解LSTM网络的内部结构。
  受《Visualizing and Understanding Recurrent Networks》 (Karpathy,2015)的启发,我们试图定位(并分享)一些对应于容易识别的子手势的神经元,例如握紧拳头或使用手绘圆圈。然而,这一想法由于以下五个主要原因而失败:
  来自位置跟踪器的信号不足以完全重建手的运动。
  手势在跟踪器和真实空间中的表现明显不同。
  我们只有来自 的手势视频,但数据集中没有实际执行符号的视频。
  数据集和视频中的词汇来自不同的方言,所以同义词可能会出现。
  100个神经元和94个符号是人类理解的很大空间。
  因此,我们只关注可视化技术,希望它能帮助我们揭开一些关于LSTM单位和数据集的神秘面纱。
  去噪自编码器
  为了可视化所有手势的LSTM输出激活序列,我们将尝试在每个时间步长使用去噪自编码器将代表激活值的100维向量减少到2-3维向量。我们的自编码器由五个完全连接的层组成,其中第三层是具有线性激活功能的瓶颈层。
  如果您不熟悉上述主题,您可以了解有关自编码器的更多信息:http://ufl dl . Stanford . edu/tutorial/unsupervised/auto encoders/。
  为了使图像清晰可读,线性激活函数被证明是最佳激活函数。对于所有测试的激活函数,所有示例路径(该术语将在下一节中解释)都从图表的(0,0)点附近开始。对于非奇对称函数(ReLU和sigmoid),所有样本路径都在坐标系的第一象限。对于奇数函数(如正切函数和线性函数),所有路径在所有象限中大致均匀分布。然而,tanh函数将路径压缩到-1和1左右(这使得图像太假),而线性函数没有这个问题。如果您对可视化其他类型的激活函数感兴趣,您可以在repo中找到代码实现。在图2中,我们示出了2D自编码器的架构。3D自编码器几乎与它相同,但它在第三致密层有3个神经元。
  在每个手势实现的所有单个时间步骤中,自编码器使用LSTM单元的输出激活向量进行训练。这些激活向量然后被加扰,并且一些冗余的激活向量被移除。冗余激活向量是指从每个手势的开始和结束获得的向量,并且它们的激活基本保持不变。
  图2自编码器架构
  自编码器中的噪声遵循平均值为0、标准偏差为0.1的正态分布。这些噪声被添加到输入向量中。网络使用亚当优化器进行训练,以最小化均方误差。
  形象化
  通过将对应于单个手势的LSTM单元激活序列输入到自编码器,我们可以获得瓶颈层上的激活。我们使用这个低维瓶颈层激活序列作为样本路径。
  在一些示例的最后一步附近,我们给出了它所代表的手势符号的名称。在图3中,我们显示了训练集的样本路径的可视化结果。
  图3激活时间演变的可视化
  可视化中的每个点代表一个时间步长和自编码器2D激活值的样本。图表中点的颜色代表每个符号的时间步长(从0到90),黑线连接单个样本路径的点。在可视化之前,每个点由函数lambda x : numpy . sign(x)* numpy . log1p(numpy . ABS(x))转换。这种转换使我们能够更仔细地观察每条路径的起始位置。
  在图4中,我们显示了每个训练样本的最后一步的激活。这是从输入点到分类层的二维投影。
  图4 LSTM最后一层的激活
  令人惊讶的是,所有路径看起来都非常平滑,并且可以在空间上很好地分离,因为在训练自编码器之前,几乎每个时间步长和样本的所有激活操作都被中断。图4中的空间结构解释了为什么我们的最后一个分类层可以在如此小的训练集(接近2000个样本)上实现高精度。
  对于那些对研究2D空间感兴趣的人,我们已经在以下地址提供了图2的大版本: .
  在图5中,我们展示了3D LSTM激活的可视化结果。为了清楚起见,我们只标出了一些要点。出于数据分析的目的,在本文的第二部分,我们只关注2D可视化。图5 LSTM激活的三维可视化版本
  分析
  可视化看起来很好,但是还有什么更有意义的吗?如果一些路径非常接近,这是否意味着这些手势符号更相似?
  让我们看看这个空间,同时考虑右手和双手符号的划分(我们不仅仅用左手看到符号)。该划分基于手持式跟踪器的信号可变性统计。更多详细信息,请参见回购。
  为了清楚起见,我们在图6中画了一条没有点的路径。右手手势符号为青色,双手手势符号为品红色。我们可以清楚地看到,这两个符号占据了空间的互补部分,很少相互混淆。
  图6根据手的使用对激活路径进行分类
  现在让我们先看看酒后危险。它们都是“青色”手势,但是它们占据了图6中间右侧的大部分品红色。在我们的数据中,这两种手势都是单手的,但是奥斯兰信号银行的视频解释显示危险手势显然是双手的。
  这可能是由标签错误引起的。请注意,危险必须是单手的,并且喝酒是相似的(至少在手势的第一部分)。因此,我们认为标签危险实际上是危险的。我们在图7中画出这两个手势。
  图7饮料和危险标签的LSTM激活值
  在图8中,世卫组织和世卫组织的手势非常相似。手套中只有一个弯曲跟踪器,手指弯曲测量不太准确。这就是为什么这两个手势在图8中看起来比在视频中更相似。
  图8世界卫生组织和其他标签的LSTM激活值
  疯狂和思考符号的样本路径在图9中占据相同的空间区域。然而,思考看起来是稍微长一点的疯狂手势的主要部分。当我们看奥斯兰信号银行的视频时,我们发现思维关系是正确的,疯狂的符号看起来像是思维加上手掌张开的过程。
  图9思考和疯狂的LSTM激活值
  在图10中,尽管当我们看着你的符号时,我们发现这个符号垂直于疯狂、思考、抱歉(以及这里没有显示的其他手势),当我们在signbank中比较它们的视频时,我们找不到这些符号和你之间的任何相似之处。图LSTM思考/疯狂/抱歉/你的激活值
  我们应该记住,每个LSTM单元的状态将记住它自己以前的状态,它在每个时间步长由相应的输入序列馈入,并且当路径占据相同的空间时,可能存在时间演化差异。因此,除了我们在分析中考虑的因素,实际上还有更多的变量将决定路径的形状。这可以解释为什么当我们不能观察到符号之间的视觉相似性时,我们可以发现一些样本路径之间的交叉关系。
  从可视化结果中获得的一些紧密联系被证明是错误的。在编码器重新训练期间(或LSTM单元重新训练后),某些链路会发生变化;有些链接不会改变,可能代表真正的相似之处。例如,上帝和科学有时在2D空间共享相似的路径,有时他们彼此远离。
  错误分类的样本
  最后,让我们看看被错误分类的样本。在图11、12和13中,我们分别在训练集、验证集和测试集中可视化错误分类的样本。错误分类样本上的蓝色标签是它们真正的类别。下面是型号选择的标签,标有红色。
  对于训练样本,只有三个样本贴错标签,其中两个(伤害所有和感谢热)在二维空间中非常接近。感谢热在视频中也很接近,但是伤害-所有的都不是。
  图11训练集中错误分类的样本
  正如我们所预期的,验证集和测试集都有更多的分类错误样本,但是这些错误更经常出现在投影空间更近的手势中。
  图12验证集中错误分类的示例
  图13测试集中错误分类的示例
  摘要
  我们将激活值的100维向量投影到低维空间中。这种投影看起来很有趣。它似乎保留了符号之间的许多(但不是全部)关系。这些关系似乎与我们在现实生活中观察手势时所感知的相似,但是如果没有实际匹配手势视频进行分析,我们就无法确定这一点。
  这些工具在一定程度上可以用来观察LSTM表征的结构。此外,它可以作为比使用原始输入更好的工具来查找样本关系。

原文地址:https://www.cnblogs.com/phploser/p/12239012.html

时间: 2024-10-23 21:23:27

长期和短期记忆(LSTM)网络是最先进的长期序列建模工具的相关文章

基于 Keras 用 LSTM 网络做时间序列预测

基于 Keras 用 LSTM 网络做时间序列预测 本文主要参考了 Jason Brownlee 的博文 Time Series Prediction with LSTM Recurrent Neural Networks in Python with Keras 原文使用 python 实现模型,这里是用 R 时间序列预测是一类比较困难的预测问题. 与常见的回归预测模型不同,输入变量之间的"序列依赖性"为时间序列问题增加了复杂度. 一种能够专门用来处理序列依赖性的神经网络被称为 递归

Deep Learning基础--理解LSTM网络

循环神经网络(RNN) 人们的每次思考并不都是从零开始的.比如说你在阅读这篇文章时,你基于对前面的文字的理解来理解你目前阅读到的文字,而不是每读到一个文字时,都抛弃掉前面的思考,从头开始.你的记忆是有持久性的. 传统的神经网络并不能如此,这似乎是一个主要的缺点.例如,假设你在看一场电影,你想对电影里的每一个场景进行分类.传统的神经网络不能够基于前面的已分类场景来推断接下来的场景分类. 循环神经网络(Recurrent Neural Networks)解决了这个问题.这种神经网络带有环,可以将信息

『cs231n』RNN之理解LSTM网络

概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰好找到一篇不错的介绍文章,和课程的讲述范围差不多,所以这里摘下来(自己截图记录好麻烦),另外找到一篇推了公式的LSTM介绍,这个cs231n的课程并没有涉及,我暂时也不做这方面的研究,不过感觉内容不错,链接记下来以备不时之需. 本篇原文链接 RNN以及LSTM的介绍和公式梳理 按照老师的说法,LST

白话--长短期记忆(LSTM)的几个步骤,附代码!

1. 什么是LSTM 在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义.我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考.我们的思想拥有持久性.LSTM就是具备了这一特性. 这篇将介绍另?种常?的?控循环神经?络:?短期记忆(long short-term memory,LSTM)[1].它??控循环单元的结构稍微复杂?点,也是为了解决在RNN网络中梯度衰减的问题,是GRU的一种扩展. 可以先理解GRU的过程,在来理解LSTM会容易许多,链接地址:三

理解 LSTM 网络

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程.制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量. 作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分.此外,他还参与或者举办过各类国际性的人工智

理解LSTM网络--Understanding LSTM Networks(翻译一篇colah's blog)

colah的一篇讲解LSTM比较好的文章,翻译过来一起学习,原文地址:http://colah.github.io/posts/2015-08-Understanding-LSTMs/ ,Posted on August 27, 2015. Recurrent Neural  Networks 人类思维具有连贯性.当你看这篇文章时,根据你对前面词语的理解,你可以明白当前词语的意义.即是由前面的内容可以帮助理解后续的内容,体现了思维的连续性. 传统的神经网络(RNN之前的网络)在解决任务时,不能做

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 此错误好像只有sql server2005才有,2008数据库以后版本就没有此错误了. 与基础事务管理器的通信失败. .net 代码里 写事务代码 如: using System.Transactions; using (TransactionScope ts = new TransactionScope()) { } ts.Complete(); DTC登陆账户为

NetworkX是一个图论与复杂网络建模工具

NetworkX是一个图论与复杂网络建模工具,采用Python语言开发,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析.仿真建模等工作.(1)NetworkX支持创建简单无向图.有向图和多重图:(2)内置许多标准的图论算法,节点可为任意数据:(3)支持任意的边值维度,功能丰富,简单易用.https://networkx.github.io/documentation/latest/tutorial.html 以空手道俱乐部数据为例: import matplotlib.pypl

PyTorch 1.0 中文官方教程:序列模型和LSTM网络

译者:ETCartman 之前我们已经学过了许多的前馈网络. 所谓前馈网络, 就是网络中不会保存状态. 然而有时 这并不是我们想要的效果. 在自然语言处理 (NLP, Natural Language Processing) 中, 序列模型是一个核心的概念. 所谓序列模型, 即输入依赖于时间信息的模型. 一个典型的序列模型是隐马尔科夫模型 (HMM, Hidden Markov Model). 另一个序列模型的例子是条件随机场 (CRF, Conditional Random Field). 循