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

2022-04-13 19:07:24 浏览数 (1)

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

1. 文章简介

2. 核心方法

1. Vanilla Self-Attention (V)

2. Dense Synthesizer (D)

3. Random Synthesizer (R)

4. Factorized Model

1. Factorized Dense Synthesizer (FD)

2. Factorized Random Synthesizer (FR)

5. Mixture of Synthesize

3. 实验考察

1. 模型效果考察

1. 翻译 & 语言模型

2. 文本生成

3. GLUE & SuperGlue

4. 结论

2. 模型性能考察

1. 与Transformer以及CNN比较

2. 与Linformer比较

3. 结论

4. 结论 & 思考

文献链接:https://arxiv.org/abs/2005.00743v2

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 QQ和K KK的点积计算attention权重的方式是否是真的必要的。如果直接给出一个与输入token无关的全局self-attention权重是否同样能够生效,感觉实在考察self-attention结构之所以有效的更为本质的原因。

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

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

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

2. 核心方法

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

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

3. 实验考察

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

1. 模型效果考察

1. 翻译 & 语言模型

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

可以看到:

即便是随机参数之后直接固定住attention权重,模型也能够训练得到一个还过得去的结果;

Dense以及Random的方式训练得到的模型在效果上和vanilla Transformer效果都是相接近的,只是略有降低而已;

Factorized方法似乎多少对于性能还是会产生一定的下滑,但是幅度事实上也并不大;

采用Mix权重方式能够获得最好的效果

2. 文本生成

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

可以看到:

在summary任务当中最优的模型为D V模型;

在对话任务当中,最优的模型为Dense Synthesizer模型;

3. GLUE & SuperGlue

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

4. 结论

综上,我们可以看到:

Synthesizer在效果上整体是略逊于Vanilla Transformer的,不过对于生成系列的任务,他们效果其实差不了太多;

在Glue系列任务当中,单一的Synthesizer倒是有明显的效果下滑,不过他们依然是有意义的,通过Mixture的方式,他们可以更进一步的提升模型的效果。

2. 模型性能考察

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

1. 与Transformer以及CNN比较

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

可以看到:

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

2. 与Linformer比较

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

可以看到:

FR版本的Synthesizer运行的性能是优于Vanilla Transformer以及Linformer的,效果上则是在Reviews上面有所提升,而在News上面有所下滑;

表中既然没有给出非Factorized版本的模型效果,大概率它们的性能也是有所下滑的吧;

3. 结论

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

4. 结论 & 思考

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

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

0 人点赞