文 | python
近年来,大规模预训练语言模型给自然语言处理领域带来了翻天覆地的变化。
一提到预训练模型为什么好,标准回答往往是:利用了无标注自监督学习数据,习得了语言学与语义知识,并有效迁移到下游任务中。
然而,预训练模型究竟如何运用预训练过程中记住的内容呢?
本文作者借助英文习语生成任务,探秘预训练模型的记忆唤起机制。
论文题目:
Understanding Transformer Memorization Recall Through Idioms
论文链接:
https://arxiv.org/abs/2210.03588https://github.com/adihaviv/idiomem/
习语生成检测
为了探索预训练模型运用记忆的方式,首先需要找到一种上下文无关的生成文本。否则,无法确定文本生成的过程激活的是模型的“泛化”能力,还是唤醒了“记忆”。
比如“我喜欢猫/狗/猴子”都是可行,但“play it by ear”不能改成“play it by nose”,并且其含义“随机应变”也同“玩耳朵”没啥关联。所以其生成过程完全依赖“记忆”而不适用组合泛化及词义相关的泛化机制。
因此,作者选用习语生成任务作为探索预训练模型记忆唤起机制的检测方法。
具体而言,作者给定一个习语的前面若干个词,让模型预测其最后一个词,以检测预训练模型的记忆唤起能力。
如果最后一个词被分割成了多个sub-word,仅预测其第一个token。
一般情况下,如果引起了基于语义的生成,对于“play it by ear”而言,生成的内容会是任何一个可以被“玩”的名词,而只有唤起了预训练中的记忆,才会高概率地生成“ear”。
play it by ear
make a mountain out of a molehill think outside the box
there’s no such thing as a free lunch
但还有一些不太合适的习语,通常是动宾搭配、词义相似度等上下文语义信息带来了很强的提示。作者采用了启发式规则+人工标注的手段,去除了这些习语。
总体而言,大概只保留了MAGPIE[1]、EPIE[2]、LIDIOMS[3]三个数据集中收集的习语的45%。
不合适的习语例如:
go back to the drawing board
boys will be boys
take it or leave it
实验与结果
实验结果如下图所示,作者针对预训练模型每一层的建模向量,加一个全连接层后进行预测,并汇报了正确的词在预测中的平均排名与平均概率。
其中,检测的预训练模型包括 GPT2 medium,GPT2 large, BERT base, BERT large。
- 对于记住的习语部分(绿色),排名在浅层部分急速下降的同时(同其他颜色一样,且预测排名更靠后),概率却一直保持在相对较低的水平,接近零,甚至比其它颜色还低。作者对此的解释是,浅层预测时更多关注一些常见的n-gram组合,导致习语排序落后[4]。而排序快速上升,概率基本不变,表示模型在检索可能出现的搭配组合,但并没有给他们分配很高的概率,以便后续结构从全局上进一步调整概率分布。
- 在后半部分,能记住的习语部分(绿色)的正确答案的平均概率急速上升。而对于没有记住的那些习语及随机采样的语句,正确答案的概率相对较低。作者解释是,在这一阶段模型调整了预测的概率分布,对绿色部分表现出单峰分布,体现出习语的不可替代性。而没有记住的那两部分(黄色、蓝色),模型在应用泛化能力,预测出了多个语法和语义上潜在可能的答案,形成一种多峰分布。
Federico López was born in <MASK>
在GPT medium上的结果如下图所示。
这一差异彰显了本文所构建的习语数据集的优越性。
小编的话
个人认为,这篇文章算不上什么大发现。这篇文章研究的问题——预训练模型如何唤醒记忆,是一个很有意思的问题。
但在神经网络不可解释的大背景下,作者只能设计一系列验证任务,通过模型表现来做一些推测。这种做法并非作者首创,也不是第一次被用在预训练模型记忆机制的分析上,所以并没有很高的创新性。
实验结果上,最初的层中,习语的正确答案的排名更靠后这一点上,作者用[4]的结论来解释,认为浅层预测更多关注常见的n-gram,这点相对比较合理。而最后层的表现中,用习语中答案分布的单峰性来解释习语的正确答案概率更高也是说的通的。
然而,对于中间阶段,作者声称的两段式过程并非唯一解释。
我觉得看起来,中间的变化过程很像是给定起点和终点状态之后的一个指数函数拟合。之所以是指数函数,是因为随着层数的加深,微小的变化会得到正反馈的累加。这样,这篇文章的结果就只是一个数学上的现象,而非作者生成的记忆召回的语用过程了。