前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Synthesizer:我们还不够了解自注意力

Synthesizer:我们还不够了解自注意力

作者头像
mathor
发布2021-05-27 14:34:04
7180
发布2021-05-27 14:34:04
举报
文章被收录于专栏:mathormathor

本文关注的是自注意力机制。直观上来看,自注意力机制算是解释性比较强的模型之一了,它通过自己于自己的Attention来自动捕捉token与token之间的关联,事实上在《Attention is All You Need》那篇论文中,就给出了如下的看上去挺合理的可视化效果:

但注意力机制真的是这样生效的吗?这种"token"对"token"的注意力是必须的吗?前不久Google的新论文《Synthesizer: Rethinking Self-Attention in Transformer Models》对自注意力机制做了一些"异想天开"的探索,里边的结果也许会颠覆我们对自注意力的认知

Self-Attention

Transformer的核心是query-key-value的点积自注意力,点积自注意力的基本作用是学习自对齐(self-alignment),即确定单个token相对于序列中所有其他token的相对重要性。实际上query、key和value隐含着自注意力模拟一个基于内容的检索过程,而这个过程的核心是pairwise之间的交互。Self-Attention的基础是Scaled-Dot Attention,定义如下:

\text{Attenion}(\boldsymbol{Q},\boldsymbol{K},\boldsymbol{V}) = \text{Softmax}\left(\frac{\boldsymbol{Q}\boldsymbol{K}^T}{\sqrt{d_k}}\right)\cdot \boldsymbol{V}\tag{1}

其中\boldsymbol{Q}\in \mathbb{R}^{n\times d_k},\boldsymbol{K}\in \mathbb{R}^{m\times d_k},\boldsymbol{V}\in \mathbb{R}^{m\times d_v} ,softmax则是在m 的那一维进行归一化。而自注意力,则是对于同一个\boldsymbol{X}\in \mathbb{R}^{n\times d} ,通过不同的投影矩阵\boldsymbol{W}_q,\boldsymbol{W}_k,\boldsymbol{W}_v\in \mathbb{R}^{d\times d'} 得到\boldsymbol{Q}=\boldsymbol{X}\boldsymbol{W}_q,\boldsymbol{K}=\boldsymbol{X}\boldsymbol{W}_k,\boldsymbol{V}=\boldsymbol{X}\boldsymbol{W}_v ,然后再做Attention,即

$$ \begin{aligned} \text{Self-Attention}(\boldsymbol{X})=&\, \text{Attention}(\boldsymbol{X}\boldsymbol{W}_q,\boldsymbol{X}\boldsymbol{W}_k,\boldsymbol{X}\boldsymbol{W}_v)\ =&\, \text{Softmax}\left(\frac{\boldsymbol{X}\boldsymbol{W}_q\boldsymbol{W}_k^T\boldsymbol{X}^T}{\sqrt{d_k}}\right) \end{aligned}\tag{2} $$

至于Multi-Head Attention,则不过是Attention运算在不同的参数下重复多次然后将多个输出拼接起来,属于比较朴素的增强。而关于它的进一步推广,则可以参考《突破瓶颈,打造更强大的Transformer》

天马行空

本质上来看,自注意力就是通过一个n\times n 的矩阵\boldsymbol{A}d\times d' 的矩阵\boldsymbol{W}_v ,将原本是n\times d 的矩阵\boldsymbol{X} 变成n\times d' 的矩阵\boldsymbol{A}\boldsymbol{X}\boldsymbol{W}_v 。其中\boldsymbol{A} 是动态生成的,即

\begin{equation}\boldsymbol{A}=\text{Softmax}\left(\boldsymbol{B}\right),\quad\boldsymbol{B}=\frac{\boldsymbol{X}\boldsymbol{W}_q \boldsymbol{W}_k^{\top}\boldsymbol{X}^{\top}}{\sqrt{d_k}}\tag{3}\end{equation}

对于矩阵B ,本质上来说它就是\boldsymbol{X} 里边两两向量的内积组合,所以我们称它为"token"对"token"的Attention

那么就到了前面提出的问题:"token"对"token"是必须的吗?能不能通过其他方式来生成这个矩阵

Dense形式

第一种形式在原论文中称为Dense:\boldsymbol{B} 需要是n\times n 大小的,而\boldsymbol{X}n\times d 的,所以只需要一个d\times n 的变换矩阵\boldsymbol{W}_a 就可以将它变成n\times n 了,即

\boldsymbol{B}=\boldsymbol{X}\boldsymbol{W}_a\tag{4}

这其实就相当于把\boldsymbol{K} 固定为常数矩阵\boldsymbol{W}_a^T 了。当然,原论文还做得更复杂一些,用到了两层Dense层

\boldsymbol{B}=\text{relu}(\boldsymbol{X}\boldsymbol{W}_1+\boldsymbol{b}_1)\boldsymbol{W}_2+\boldsymbol{b}_2\tag{5}

但思想上并没有什么变化

Random形式

刚才说Dense形式相当于把\boldsymbol{K} 固定为常数矩阵,我们还能不能更"异想天开"一些:直接用一个随机初始化的矩阵\boldsymbol{R}\in \mathbb{R}^{n\times n} 当作\boldsymbol{B} 矩阵,即

\boldsymbol{B}=\boldsymbol{R}\tag{6}

原论文中还真实验了这种形式,称之为Random,顾名思义,就是\boldsymbol{B} 是随机初始化的,并且可以选择随训练更新或不更新。据原论文描述,固定形式的Attention首次出现在论文《Fixed Encoder Self-Attention Patterns in Transformer-Based Machine Translation》,不同点是那篇论文的Attention矩阵是由一个函数算出来的,而Google这篇论文则是完全随机初始化的。从形式上看,该方法不依赖token对之间的交互或者任何单个token的信息

低秩分解

上面两种新形式,往往会面临参数过多的问题,所以很自然地就想到通过低秩分解来降低参数量。对于Dense和Random,原论文也提出并验证了对应的低秩分解形式,分别称为Factorized DenseFactorized Radom

Factorized Dense通过Dense的方式,生成两个n\times a, n\times b 的矩阵\boldsymbol{B}_1,\boldsymbol{B}_2 ,其中ab=n ;然后将\boldsymbol{B}_1 重复b 次、将\boldsymbol{B}_2 重复a 次,得到对应的n\times n 的矩阵\tilde{\boldsymbol{B}}_1,\tilde{\boldsymbol{B}}_2 ,最后将它们逐位相乘,合成一个n\times n 的矩阵:

\boldsymbol{B} = \tilde{\boldsymbol{B}}_1\otimes \tilde{\boldsymbol{B}}_2\tag{7}

至于Factorized Random就很好理解了,本来是一整个n\times n 的矩阵\boldsymbol{R} ,现在变成两个n\times k 的矩阵\boldsymbol{R}_1,\boldsymbol{R}_2 ,然后

\boldsymbol{B}=\boldsymbol{R}_1\boldsymbol{R}_2^T\tag{8}
混合模式

到目前为止,连同标准的自注意力,我们共有5种不同的生成矩阵\boldsymbol{B} 的方案,它们也可以混合起来,即

\begin{equation}\boldsymbol{B}=\sum_{i=1}^N \alpha_i \boldsymbol{B}_i\end{equation}

其中\boldsymbol{B}_i 是不同形式的自注意力矩阵,而\sum\limits_{i=1}^N \alpha_i=1 是可学习参数

结果分析

前面介绍了统称为Synthesizer的几种新型自注意力形式,它们的共同特点是没有保持"token"对"token"的形式,尤其是Random,完全抛弃了原有注意力的动态特点,变成了静态的矩阵

那么,这些新型自注意力的效果如何呢?它们又怎样冲击我们对自注意力机制的认识呢?

机器翻译

第一个评测任务是机器翻译,详细地比较了各种自注意力形式的效果

不知道读者怎么想,反正Synthesizer的这些结果是冲击了笔者对自注意力的认知的。表格显示,除了固定的Random外,所有的自注意力形式表现基本上都差不多,而且就算是固定的Random也有看得过去的效果,这表明我们以往对自注意力的认知和解释都太过片面了,并没有揭示自注意力生效的真正原因

摘要对话

接下来是摘要和对话生成任务上的效果

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

预训练+微调

最后,对于我们这些普通读者来说,可能比较关心的是"预训练+微调"的效果怎么样,也就是说,将BERT之类模型的自注意力替换之后表现如何?原论文确实也做了这个实验,不过Baseline不是BERT二是T5,结果如下:

在这个结果中,相比标准自注意力,Dense和Random就显得逊色了,这表明Dense和Random也许会在单一任务上表现得比较好,但是迁移能力则比较弱。不过不能否认的是,像Random这样的自注意力,由于直接省去了\boldsymbol{Q}\boldsymbol{K}^T 这个矩阵运算,因此计算效率会有明显提升,所以如果能想办法解决这个迁移性问题,说不定Transformer模型家族会迎来大换血

References
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Self-Attention
  • 天马行空
  • Dense形式
  • Random形式
  • 低秩分解
  • 混合模式
  • 结果分析
    • 机器翻译
      • 摘要对话
      • 预训练+微调
        • References
        相关产品与服务
        机器翻译
        机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档