Synthesizer: Rethinking Self-Attention in Transformer Models

date
Jun 2, 2022
Last edited time
Mar 27, 2023 08:50 AM
status
Published
slug
Synthesizer论文阅读
tags
DL
summary
type
Post
Field
Plat

写在开头

本文关注的是自注意力机制。直观上来看,自注意力机制算是解释性比较强的模型之一了,它通过自己与自己的 Attention 来自动捕捉了 token 与 token 之间的关联,事实上在《Attention is All You Need》那篇论文中,就给出了如下的看上去挺合理的可视化效果:
notion image
《Attention is All You Need》一文中对 Attention 的可视化例子
但自注意力机制真的是这样生效的吗?这种 “token 对 token” 的注意力是必须的吗?前不久 Google 的新论文《Synthesizer: Rethinking Self-Attention in Transformer Models》对自注意力机制做了一些 “异想天开” 的探索,里边的结果也许会颠覆我们对自注意力的认知。

自注意力

自注意力模型的流行,始于 2017 年 Google 发表的《Attention is All You Need》一文,关于它的科普读者还可以参考笔者旧作《Attention is All You Need》浅读(简介 + 代码)。它的基础是 Scaled-Dot Attention,定义如下:
其中 , , ,softmax 则是在 的那一维进行归一化。而自注意力,则是对于同一个 ,通过不同的投影矩阵 得到 ,然后再做 Attention,即
, 可以不等. 若使 , 那其实就是 PVT 里面的说的 SRA 模块.
至于 Multi-Head Attention,则不过是 Attention 运算在不同的参数下重复多次然后将多个输出拼接起来,属于比较朴素的增强。

天马行空

本质上来看,自注意力就是通过一个 的矩阵 的矩阵 ,将原本是 的矩阵 ,变成了 的矩阵 。其中矩阵 是动态生成的,即
对于矩阵 ,本质上来说它就是 里边两两向量的内积组合,所以我们称它为 “token 对 token” 的 Attention。
Synthesizer 自注意力与标准自注意力的对比
Synthesizer 自注意力与标准自注意力的对比
那么,就到了前面提出的问题:“token 对 token” 是必须的吗?能不能通过其他方式来生成这个矩阵 ?Google 的这篇论文正是 “天马行空” 了几种新的形式并做了实验,这些形式统称为 Synthesizer。

Dense 形式

第一种形式在原论文中称为 Dense: 需要是 大小的,而 的,所以只需要一个 的变换矩阵 就可以将它变成 了,即
这其实就相当于把 固定为常数矩阵了。当然,原论文还做得更复杂一些,用到了两层 Dense 层:
但思想上并没有什么变化。

Random 形式

刚才说 Dense 形式相当于把 固定为常数矩阵,我们还能不能更 “异想天开” 一些:把 固定为常数矩阵?这时候整个 相当于是一个常数矩阵,即
原论文中还真是实验了这种形式,称之为 Random,顾名思义,就是 是随机初始化的,然后可以选择随训练更新或不更新。据原论文描述,固定形式的 Attention 首次出现在论文《Fixed Encoder Self-Attention Patterns in Transformer-Based Machine Translation》,不同点是那里的 Attention 矩阵是由一个函数算出来的,而 Google 这篇论文则是完全随机初始化的。从形式上看,Random 实际上就相当于可分离卷积(Depthwise Separable Convolution)运算。

低秩分解

上面两种新形式,往往会面对着参数过多的问题,所以很自然地就想到通过低秩分解来降低参数量。对于 Dense 和 Random,原论文也提出并验证了对应的低秩分解形式,分别称为 Factorized DenseFactorized Random
Factorized Dense 通过 Dense 的方式,生成两个 , 的矩阵 , ,其中 ;然后将 重复 次、然后将 重复 次,得到对应的 矩阵 ,最后将它们逐位相乘(个人感觉相乘之前 应该要转置一下比较合理,但原论文并没有提及),合成一个 的矩阵:
至于 Factorized Random 就很好理解了,本来是一整个 的矩阵 ,现在变成两个 的矩阵 ,然后
 

混合模式

到目前为止,连同标准的自注意力,我们有 5 种不同的生成矩阵 B的方案,它们也可以混合起来,即
其中 是不同形式的自注意力矩阵,而 是可学习参数。

结果分析

前面介绍了统称为 Synthesizer 的几种新型自注意力形式,它们的共同特点是没有保持 “token 对 token” 形式,尤其是 Random,则完全抛弃了原有注意力的动态特点,变成了静态的矩阵。
那么,这些新型自注意力的效果如何呢?它们又怎样冲击我们对自注意力机制的认识呢?

机器翻译

第一个评测任务是机器翻译,详细地比较了各种自注意力形式的效果:
notion image
Synthesizer 在机器翻译任务上的表现对比
不知道读者怎么想,反正 Synthesizer 的这些结果是冲击了笔者对自注意力的认知的。表格显示,除了固定的 Random 外,所有的自注意力形式表现基本上都差不多,而且就算是固定的 Random 也有看得过去的效果,这表明我们以往对自注意力的认知和解释都太过片面了,并没有揭示自注意力生效的真正原因。

摘要对话

接下来在摘要和对话生成任务上的结果:
notion image
Synthesizer 在摘要和对话任务上的表现对比
在自动摘要这个任务上,标准注意力效果比较好,但是对话生成这个任务上,结果则反过来:标准的自注意力是最差的,Dense(D)和 Random(R)是最好的,而当 Dense 和 Random 混合了标准的自注意力后(即 D+V 和 R+V),效果也变差了。这说明标准注意力并没有什么 “独占鳌头” 的优势,而几个 Synthesizer 看起来是标准注意力的“退化”,但事实上它们互不从属,各有优势。

预训练 + 微调

最后,对于我们这些普通读者来说,可能比较关心是 “预训练 + 微调” 的效果怎样,也就是说,将 BERT 之类的模型的自注意力替换之后表现如何?原论文确实也做了这个实验,不过 Baseline 不是 BERT 而是 T5,结果如下:
notion image
Synthesizer 在 “预训练 + 微调” 的表现对比
在这个结果中,相比标准自注意力,Dense 和 Random 就显得逊色了,这表明 Dense 和 Random 也许会在单一任务上表现得比较好,而迁移能力则比较弱。但是不能否定的是,像 Random 这样的自注意力,由于直接省去了 这个矩阵运算,因此计算效率会有明显提升,因此如果能想法子解决这个迁移性问题,说不准 Transformer 模型家族将会迎来大换血。

文末小结

本文介绍了 Google 的新工作 Synthesizer,它是对目前流行的自注意力机制的反思和探索。论文中提出了几种新型的自注意力机制,并做了相当充分的实验,而实验结果很可能会冲击我们对自注意力机制的已有认知,值得大家读读~

© Lazurite 2021 - 2024