文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

1. 文章简介

前两天在看Google的Transformer Quality in Linear Time突然想起来这篇long long ago之前看过的transformer的变体,因此这里就回来考个古,顺便加深一下理解吧。

这篇文章同样是Google提出来的一个工作,不过是在20年了。某种程度上,确实还是非常的佩服Google的,因为考虑到近年来Transformer在NLP以及CV领域的各种猪突猛进,主流的工作感觉都是在Transformer的基础上进行工作迁移,结构优化以及各种细化研究,但是Google自己却总感觉对于Transformer本身不太满意,时不时就搞出一篇文章来想要从根本上推翻transformer的基础架构。

这篇Synthesizer就是其中之一,他的关注点在于Transformer自身的self-attention的权重计算部分,考察Q Q Q和K K K的点积计算attention权重的方式是否是真的必要的。如果直接给出一个与输入token无关的全局self-attention权重是否同样能够生效,感觉实在考察self-attention结构之所以有效的更为本质的原因。

结论而言,文章认为Q Q Q和K K K的点积计算attention权重的方式似乎效果并不是那么的重要,直接训练权重都能够获得不弱于sota的结果,甚至直接随机权重然后fix都能得到一些过去的结果……

不过要想要达到sota,似乎attention权重还是要和输入权重关联起来才能达到效果的最优。

Anyway,当时看这篇文章感觉还是很震惊的,不过两年过去了,感觉似乎这篇文章相关的结构也没有被大幅利用起来,整体来说还是vanilla的transformer占着主导的地位……

2. 核心方法

如前所述,这篇文章的核心就是针对self-attention的结构进行了细化研究,尝试优化掉了点积操作,从而可以考察self-attention权重的更本质的含义。

我们首先给出各个版本的self-attention结构图以及对应的参数量如下:

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

; 1. Vanilla Self-Attention (V)

对于最基础的self-attention结构,假设attention层的输入为X ∈ R l ∗ d X \in \mathbb{R}^{l*d}X ∈R l ∗d,则有:

{ Q = W Q ⋅ X + b Q K = W K ⋅ X + b K V = W V ⋅ X + b V O = s o f t m a x ( W Q ⋅ W k T d ) ⋅ V \left{ \begin{aligned} Q &= W_Q \cdot X + b_Q \ K &= W_K \cdot X + b_K \ V &= W_V \cdot X + b_V \ O &= softmax(\frac{W_Q \cdot W_k^T}{\sqrt{d}}) \cdot V \end{aligned} \right.⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​Q K V O ​=W Q ​⋅X +b Q ​=W K ​⋅X +b K ​=W V ​⋅X +b V ​=s o f t m a x (d ​W Q ​⋅W k T ​​)⋅V ​

其中,W Q , W K , W V ∈ R d × d W_Q, W_K, W_V \in \mathbb{R}^{d \times d}W Q ​,W K ​,W V ​∈R d ×d,所以,总的参数量级为O ( 3 d 2 ) O(3d^2)O (3 d 2 ),Self-Attention部分的参数量级为O ( 2 d 2 ) O(2d^2)O (2 d 2 )(W Q , W K W_Q, W_K W Q ​,W K ​)。

后续由于只调整self-attention的权重部分,因此,我们说的self-attention部分的参数量就仅指除了V V V之外的部分的参数量,即权重部分的参数量。

2. Dense Synthesizer (D)

Dense Synthesizer的核心思路是说使用FFN层来替换掉attention权重的生成过程,即:

{ B = W 2 ( σ R ( W 1 ⋅ X + b 1 ) ) + b 2 V = W V ⋅ X + b V O = s o f t m a x ( B ) ⋅ V \left { \begin{aligned} B &= W_2(\sigma_R(W_1 \cdot X + b_1)) + b_2 \ V &= W_V \cdot X + b_V \ O &= softmax(B) \cdot V \end{aligned} \right.⎩⎪⎨⎪⎧​B V O ​=W 2 ​(σR ​(W 1 ​⋅X +b 1 ​))+b 2 ​=W V ​⋅X +b V ​=s o f t m a x (B )⋅V ​

其中,W 1 ∈ R d × d W_1 \in \mathbb{R}^{d \times d}W 1 ​∈R d ×d,W 2 ∈ R l × d W_2 \in \mathbb{R}^{l \times d}W 2 ​∈R l ×d,因此,其参数量级为O ( d × l + d 2 ) O(d\times l + d^2)O (d ×l +d 2 )。

3. Random Synthesizer (R)

Random Synthesizer的思路较之上述的Dense Synthesizer则更加暴力,我们直接给出一组与输入无关的权重矩阵,然后直接训练这组权重然后考察效果。

具体而言,即为:

{ V = W V ⋅ X + b V O = s o f t m a x ( R ) ⋅ V \left { \begin{aligned} V &= W_V \cdot X + b_V \ O &= softmax(R) \cdot V \end{aligned} \right.{V O ​=W V ​⋅X +b V ​=s o f t m a x (R )⋅V ​

其中,R ∈ R l × l R \in \mathbb{R}^{l\times l}R ∈R l ×l,对应的参数量极同样为O ( l 2 ) O(l^2)O (l 2 )。

4. Factorized Model

这里,我们注意到一点,这里,我们虽然减少了权重的计算,但是Self-Attention层的参数总量却从O ( 2 d 2 ) O(2d^2)O (2 d 2 )增加到了KaTeX parse error: Undefined control sequence: \tims at position 4: O(l\̲t̲i̲m̲s̲ ̲d + d^2)(Dense Synthersizer)或者O ( l 2 ) O(l^2)O (l 2 )(Random Synthesizer)。

由于通常来说句长l l l是大于模型维度d d d的,因此模型的参数总量事实上是有所增加的。

因此,这里通过对句长进行拆分来缩减来减少参数总量。

我们假设句长l = a × b l = a \times b l =a ×b,则我们具体有:

1. Factorized Dense Synthesizer (FD)

{ A = σ R ( W 0 ⋅ X + b 0 ) B 1 = W 1 A + b 1 B 2 = W 2 A + b 2 B = B 1 ∗ B 2 \left { \begin{aligned} A &= \sigma_R(W_0 \cdot X + b_0) \ B_1 &= W_{1}A + b_{1} \ B_2 &= W_{2}A + b_{2} \ B &= B_1 * B_2 \end{aligned} \right.⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​A B 1 ​B 2 ​B ​=σR ​(W 0 ​⋅X +b 0 ​)=W 1 ​A +b 1 ​=W 2 ​A +b 2 ​=B 1 ​∗B 2 ​​

其中,W 0 ∈ R d × d , W 1 ∈ R a × d , W 2 ∈ R b × d W_0 \in \mathbb{R}^{d \times d}, W_1 \in \mathbb{R}^{a \times d}, W_2 \in \mathbb{R}^{b \times d}W 0 ​∈R d ×d ,W 1 ​∈R a ×d ,W 2 ​∈R b ×d。

由此,就可以将参数总量缩减至O ( d 2 + d × ( a + b ) ) O(d^2 + d \times (a + b))O (d 2 +d ×(a +b ))。

2. Factorized Random Synthesizer (FR)

{ R = R 1 × R 2 V = W V ⋅ X + b V O = s o f t m a x ( R ) ⋅ V \left { \begin{aligned} R &= R_1 \times R_2 \ V &= W_V \cdot X + b_V \ O &= softmax(R) \cdot V \end{aligned} \right.⎩⎪⎨⎪⎧​R V O ​=R 1 ​×R 2 ​=W V ​⋅X +b V ​=s o f t m a x (R )⋅V ​

其中,R 1 ∈ R l × k , R 2 ∈ R k × l , k ≪ l R_1 \in \mathbb{R}^{l \times k}, R_2 \in \mathbb{R}^{k \times l}, k \ll l R 1 ​∈R l ×k ,R 2 ​∈R k ×l ,k ≪l。

5. Mixture of Synthesizer

Mixture of Synthesizer方法事实上就是在计算权重过程中联合使用上述的全部方法,具体而言,即有:

O = S o f t m a x ( ∑ i α i ⋅ S i ( X ) ) ⋅ V O = Softmax(\sum_{i} \alpha_i \cdot S_i(X)) \cdot V O =S o f t m a x (i ∑​αi ​⋅S i ​(X ))⋅V

其中,∑ i α i = 1 \sum_i \alpha_i = 1 ∑i ​αi ​=1,为一组归一化的权重因子,而S i ( X ) S_i(X)S i ​(X )上上述介绍的任意一种权重因子。

为了泛化其效果,参数α \alpha α并没有使用超参,而是交由模型自己进行学习得到的。

3. 实验考察

下面,我们来看一下上述各个版本下的模型实际的效果以及性能。

1. 模型效果考察

1. 翻译 & 语言模型

文中首先考察一下变换了self-attention的权重构成方式之后在翻译以及语言模型上的效果。

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

可以看到:

  • 即便是随机参数之后直接固定住attention权重,模型也能够训练得到一个还过得去的结果;
  • Dense以及Random的方式训练得到的模型在效果上和vanilla Transformer效果都是相接近的,只是略有降低而已;
  • Factorized方法似乎多少对于性能还是会产生一定的下滑,但是幅度事实上也并不大;
  • 采用Mix权重方式能够获得最好的效果

; 2. 文本生成

同样的,作者也在文本归纳以及对话任务当中也进行了一下考察,得到结果如下:

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

可以看到:

  • 在summary任务当中最优的模型为D+V模型;
  • 在对话任务当中,最优的模型为Dense Synthesizer模型;

3. GLUE & SuperGlue

在Glue和SuperGlue任务当中,Vanilla Transformer的设计则是完全优于Dense Synthesizer和Random Synthesizer的,但是后两者同样可以提供一些辅助的效果,使得Mixture模型达到更好的效果。

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

; 4. 结论

综上,我们可以看到:

  • Synthesizer在效果上整体是略逊于Vanilla Transformer的,不过对于生成系列的任务,他们效果其实差不了太多;
  • 在Glue系列任务当中,单一的Synthesizer倒是有明显的效果下滑,不过他们依然是有意义的,通过Mixture的方式,他们可以更进一步的提升模型的效果。

2. 模型性能考察

最后,我们来考察一下Synthesizer模型的实际运行性能。

1. 与Transformer以及CNN比较

首先,文中拿Synthesizer与Vanilla Transformer以及Conv网络比了一下效果,得到结果如下:

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

可以看到:

  • 虽然效果有所下滑,不过Synthesizer在运行速度上确实是优于Vanilla Transformer以及Conv网络的。

; 2. 与Linformer比较

同样的,文中还拿Synthesizer与Linformer进行了一下比较,得到结果如下:

文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

可以看到:

  • FR版本的Synthesizer运行的性能是优于Vanilla Transformer以及Linformer的,效果上则是在Reviews上面有所提升,而在News上面有所下滑;
  • 表中既然没有给出非Factorized版本的模型效果,大概率它们的性能也是有所下滑的吧;

3. 结论

综上,Synthesizer去除了点积计算之后确实在性能上通常能够带来一定的提升,但是考虑到效果,并不一定总是我们想要的结果。

4. 结论 & 思考

综上,整体来说,无怪乎Synthesizer无法全面替代掉Vanilla Transformer,虽然其在计算量上面确实较之Vanilla Transformer有一定的减少,但是其代价就是增加了参数量,并且其模型的效果较之Vanilla的Transformer同样所有下滑,虽然在翻译以及生成任务上的下滑并不明显。

但是从好的一面来说,文中对于self-attention权重本质的考察还有很有意义的,只不过与文中的目标相反,似乎从结果来看,还是与token相关联的self-attention权重才是比较好的权重生成方式。

Original: https://blog.csdn.net/codename_cys/article/details/123620386
Author: Espresso Macchiato
Title: 文献阅读:Synthesizer: Rethinking Self-Attention in Transformer Models

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/531227/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球