找到要说的话:语言模型的隐藏状态可视化

2021-01-21 11:21:06

通过可视化模型各层之间的隐藏状态,我们可以获得有关模型思想过程的一些线索。

第2部分:继续追求使Transformer语言模型更加透明,本文展示了一系列可视化工具,以揭示预先训练的语言模型内部的语言生成机制。这些可视化都是使用Ecco创建的,Ecco是我们发布的开源软件包。在本系列的第一部分“解释变压器语言模型的接口”中,我们展示了用于输入显着性和神经元激活的交互式接口。在本文中,我们将集中讨论隐藏状态从模型层发展到下一层的过程。通过查看每个转换器解码器块产生的隐藏状态,我们旨在了解有关语言模型如何到达特定输出令牌的信息。 Voita等人探索了这种方法。 。 Nostalgebraist提出了引人注目的视觉处理方法,展示了通过模型各个层级的隐藏状态不断演变的令牌等级,logit得分和softmax概率的演变。

下图概述了转换器语言模型的工作方式。图层如何导致最终的隐藏状态。然后,如何将最终状态投影到输出词汇表上,从而为模型词汇表中的每个标记分配一个分数。当向DistilGPT2输入输入序列"时,我们可以在此处看到得分最高的标记。 1,1,&#34 ;:

Ecco提供了该模型的最高得分标记及其概率得分的视图。 #生成一个令牌以完成此输入字符串output = lm。生成(" 1,1,1,"生成= 1)#可视化输出。 layer_predictions(position = 6,layer = 5)

这将显示以下候选输出标记及其概率得分的细分:将相同的投影应用于模型的内部隐藏状态,可以使我们了解模型如何基于对输入处理的信念来进行输出评分。内部隐藏状态的这种投影使我们感觉到哪个层对提高某个潜在输出令牌的得分(以及排名)贡献最大。

查看隐藏状态的演变意味着,我们不仅可以从预测最终模型状态中查看候选输出令牌,还可以在投影出由模型的六层中的每一层所产生的隐藏状态之后,查看得分最高的令牌。

使用与上面相同的方法创建了此可视化效果,而省略了“ ## layer'参数(我们在上一个示例的第5层中将其设置为最后一层):结果:您可以在以下colab链接上尝试这些可视化效果并在自己的输入语句上进行实验:另一个关于不断演变的隐藏视觉效果状态是在选择输出令牌后重新检查隐藏状态,以查看每一层之后的隐藏状态如何对该令牌进行排名。这是Nostalgebraist探索的许多观点之一,我们认为这是一个很好的第一种方法。在侧面的图中,我们可以看到令牌的排名(在模型词汇表中的+50000个令牌中)。 1'其中每一行表示一个图层的输出。

然后可以为整个生成的序列绘制相同的可视化效果,其中每一列表示生成步骤(及其输出令牌),每一行表示输出令牌在每一层的排名:

可视化隐藏状态的演变揭示了各层如何生成此序列,如下图所示:

我们不仅限于观看特定位置的一个(选定)代币的演变。在某些情况下,无论模型是否选择,我们都希望比较同一位置中多个令牌的排名。

一种这样的情况是Linzen等人描述的数字预测任务。这是由主语-动词一致的英语现象引起的。在该任务中,我们要分析模型对句法数字(无论我们处理的主题是单数还是复数)和句法主体性(我们在处理的主题中的哪一个)编码的能力。

为了正确回答,必须首先确定我们是在描述钥匙(可能的主题1)还是机柜(可能的主题2)。确定了密钥后,第二个确定将是单数还是复数。

本节中的图将令牌的隐藏状态演变可视化。是"和"是"。单元格中的数字是它们在空白位置中的排名(两列都指向序列中的相同位置,它们不是先前可视化中的后续位置)。

第一个数字(显示序列"橱柜钥匙的排名)引发了一个问题,即为什么五层未能完成任务,而只有最后一层才能使记录保持直线。这很可能类似于在最后一层的BERT中观察到的最特定于任务的效果。同样值得研究的是,完成任务的能力是否主要集中在第5层中,或者该层是否只是跨越多层的电路中的最终表达,这对主语-动词一致特别敏感。

这种方法可以揭示偏见问题以及它们在模型中可能出现的位置。例如,以下数字探讨了与不同专业相关的模型的性别期望:

可以在中找到对系统化词嵌入中的偏见(我们一直称其为“隐藏状态”的向量的另一个术语)进行更系统和细致入微的检查。

您可以使用Ecco和本文中的三个笔记本进行自己的实验:您可以在Ecco的Github页面上报告遇到的问题。随时在Ecco讨论板上分享任何有趣的发现。我再次邀请您阅读解释Logit镜头的GPT,并查看作者检查这种可视化效果的各种方法。我为您提供了一小部分示例,这些示例展示了不同模型对不同输入提示的响应。感谢Abdullah Almaatouq,Anfal Alatawi,Fahd Alhazmi,Hadeel Al-Negheimish,Isabelle Augenstein,Jasmijn Bastings,Najwa Alghamdi,Pepa Atanasova和Sebastian Gehrmann提供的早期草稿的反馈,大大改善了本文。

如果您发现这项工作对您的研究有所帮助,请引用以下内容:Alammar,J.(2021)。找到要说的话:语言模型的隐藏状态可视化[博客文章]。取自https://jalammar.github.io/hidden-states/

BibTex:@misc {alammar2021hiddenstates,title = {找到要说的话:语言模型的隐藏状态可视化}},author = {Alammar,J},year = {2021},url = {https://jalammar.github.io / hidden-states /}}