深度神经网络已经在计算视觉、自然语言处理等许多领域中取得了卓越的性能表现。深度神经网络能够自动地学习输入数据的隐含特征表示,用于相关任务。之所以称之为“隐含”特征表示,是因为这些特征表示难以以原始输入数据的形式表示出来,从而让使用者难以理解深度神经网络到底学习到了数据的什么信息。现有的研究中,有许多深度神经网络被广泛应用:标准的前馈神经网络、用于图片任务的卷积神经网络、以及用于对序列数据建模的递归神经网络等等。本文主要关注一类递归神经网络——长短期记忆(Long Short-Term Memory, LSTM)模型中隐含状态表示的可视化。
文章首先对基于递归神经网络的语言模型进行了介绍,如图1所示。模型的输入是一段文本,可以认为是一个词语的序列w_1, w_2, …, w_T。模型首先会使用一个嵌入层(Embedding Layer)将离散的词语映射实值向量,作为RNN层(比如LSTM)的直接输入。RNN层会根据当前隐含状态h_和输入w_t来更新状态,得到h_t。基于这个隐含状态,可以为具体的任务衍生其他的数据。比如,如果这个语言模型用于自动预测/生成下一个词语,那个可以使用softmax层生成一个概率分布,来表示取每一个词的概率。需要注意的是,模型对于每一个词语都会产生一个输出,所以隐含状态可以认为是一个随时间变化的数据。
图1:基于RNN的语言模型
本文就是研究隐含状态序列h_1, h_2, …, h_T的可视化。已有的工作通常直接使用高维投影技术,来对它们进行可视化。但是,由于所得到的隐含状态与原始输入序列并没有直接关联,所以使用者仍然难以真正理解模型所学到的内容。因此,本文希望能在可视化结果中关联所在的领域数据。
作者首先讨论了可视化工具的目标用户。作者将模型自身的用户划分为三类(图2):架构师、训练者、以及终端用户。架构师指设计神经网络结构的人群,他们需要通过对网络结构的不断调整与比较,以获取更高的性能;训练者则只需要使用一个已经建立好的网络,观察它是如何根据训练数据运作的;而终端用户是指给输入数据、通过网络产生输出结果和置信度的人群。不同的用户使用模型的目的不同。本文中设计可视化的目的则是为了服务前两类用户。
图2:三类模型用户
针对这两类用户的用户需求,作者提出了高层次的设计目标,即要回答诸如“这个RNN网络到底在它的隐含状态中学习到了什么样的信息”之类的问题。作者分为三点:一、形成一个关于“哪些隐含状态学习到哪些特征”的假说;二、根据可视化结果改进这个假说,包括增强或者拒绝;三、比较不同的模型和数据集表现。对于这些高层次目标,作者又定义了其可视化需要支持的几类具体任务:
对隐含状态的时序变化进行可视化(对应第一个目标);
对隐含状态进行筛选(一、二);
根据隐含状态的特征匹配相似的数据样本(二);
将文本信息对应起来(二、三);
提供一个通用的界面(三)。
文中所设计的可视化界面如图3所示。
图3:LSTMVis的用户界面
作者首先讨论对隐含模型变化的可视化。对于一个隐含状态向量h_t,它实际上包含若干个分量,每一个对应一个隐含状态。我们可以把每个隐含状态随时间的变化看作一个时间序列,这样就得到若干个时间序列。作者采用时序平行坐标的形式来进行可视化,如图4(a)所示。其中,表示横轴的时间直接对应的文本中的词来表示,而纵轴则表示每个隐含状态的值,也就是对应神经元的激活值。每个隐含状态的变化情况,就用折线绘制出来。用户可以通过调节阈值来对状态进行筛选。
图4:使用时变平行坐标对隐含状态变化进行可视化
图4展示的是可视化工具中的选择功能。为了提出一个关于隐含状态——数据特征关系的假说,使用者可以从已有的词语序列中去寻找感兴趣的部分进行选择。例如,图(a)中,使用者对“a little prince”词组感兴趣,所以选择了它们,同时通过调节阈值将激活值高于0.6的隐含状态给筛选了出来(图(b))。这个筛选也可以将前后的相邻词语给考虑进来,例如图(c)就表示筛选出本来没有被激活、遇到“a little prince”后才被激活的隐含状态。并且一般来说,这种“原本未激活、之后才激活”的隐含状态比一直激活的隐含状态要更有意义,因为一直激活的隐含状态则意味着它们对最后的输出没有特别的作用。因此,作者的可视化工具中默认是图(c)中的选择方式。基于所筛选出来的隐含状态,使用者可以很容易地将所选词组和这些状态给关联起来,形成假说。
之后,这个可视化工具将在文本其他位置寻找同样这些银行状态有相同激活特征的情形,将它们展示出来,作为假说的支持,如图5所示。从图中可以很直观地看到相同状态具有相同激活特征的情形,正好都对应的是介词+a+名词的形式,即名词词组。因此,用户也基本可以判定所筛选的隐含状态学习到了如何辨别这类词组特征。
图5:根据所筛选隐含状态及激活特征找到其他满足同样条件的文本序列
作者提出的可视化工具本质上是支持“search-by-example”的探索流程,即让用户能从个例中提出假说,然后在自动匹配出其他的满足条件的例子,来增强或者改进假说,从而达到理解模型的目的。在这之外,作者也将问题本身所在领域的一些其他信息放置到可视化中,帮助用户理解。例如在图5(d,e1,e2)这个研究语言模型的例子中,可以将词语的词性、匹配的状态数量等等,添加到界面中来帮助理解。
图6:语言模型上的两个例子,分别表示识别名词短语和动词短语的隐含状态
图6是作者在RNN语言模型上发现的另外两个例子。其中左图筛选出来的是识别名词短语的隐含状态,而右图则是识别动词短语的隐含状态,并且两者都可以同匹配到的语料中加以验证。作者还另外使用一个投影图,将各个短语对应的激活状态给投影出来,也发现两者存在明显的区分关系。
总之,本文提出了LSTMVis,一种针对递归神经网络中隐含状态变化的可视化工具。通过找到状态对应的词语序列这种间接的可视化方式,用户可以十分容易地建立两者之间的联系,从而帮助理解模型与数据的关系。
文献:
[1] Strobelt H, Gehrmann S, Pfister H, et al. Lstmvis: A tool for visual analysis of hidden state dynamics in recurrent neural networks[J]. IEEE transactions on visualization and computer graphics, 2018, 24(1): 667-676.
领取专属 10元无门槛券
私享最新 技术干货