最近哪里都去不了,还是在家学习点什么好,人工智能最近很火,来学学吧。长期和短期记忆(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