Transformer 优缺点分析
https://aistudio.baidu.com/projectdetail/4909750
https://zhuanlan.zhihu.com/p/330483336
Transformer优点有位置关联操作不受限,建模能力强,通用性强,可扩展性强,能更好的进行并行运算。
Transformer缺点有局部信息获取不强,位置信息编码问题,顶层梯度消失。
下面将详细介绍Transformer的优缺点。
Transformer 优点如下:
-
突破了 RNN 模型不能并行计算的限制,这里Path length指的是要计算一个序列长度为n的信息要经过的路径长度。CNN需要增加卷积层数来扩大视野,RNN需要从1到n逐个进行计算,而self-attention只需要一步矩阵计算就可以。所以也可以看出,self-attention可以比rnn更好地解决长时依赖问题。当然如果计算量太大,比如序列长度n>序列维度d这种情况,也可以用窗口限制self-attention的计算数量。
-
相比 CNN,计算两个位置之间的关联所需的操作次数不随距离增长。
-
自注意力可以产生更具可解释性的模型,self-attention模型更可解释,attention结果的分布表明了该模型学习到了一些语法和语义信息,我们可以从模型中检查注意力分布,各个注意头(attention head)可以学会执行不同的任务,有更强的建模能力。
-
Transformer 通过验证的哲学来建立图节点之间的关系,具有较好的通用性:无论节点多么异构,它们之间的关系都可以通过投影到一个可以比较的空间里计算相似度来建立。
-
Transformer 模型在大模型和大数据方面展示了强大的可扩展性
Transformer 缺点如下:
- 局部信息的获取不如RNN和CNN强
实践上:有些RNN轻易可以解决的问题,transformer没做到,比如复制string,或者推理时碰到的sequence长度比训练时更长
- 位置信息编码存在问题
在使用词向量的过程中,会做如下假设:对词向量做线性变换,其语义可以在很大程度上得以保留,也就是说词向量保存了词语的语言学信息(词性、语义)。然而,位置编码在语义空间中并不具有这种可变换性,它相当于人为设计的一种索引。那么,将这种位置编码与词向量相加,就是不合理的,所以不能很好地表征位置信息。
- 顶层梯度消失
Transformer 模型实际上是由一些残差模块与层归一化模块组合而成。目前最常见的 Transformer 模型都使用了LN,即层归一化模块位于两个残差模块之间。因此,最终的输出层与之前的 Transformer 层都没有直连通路,梯度流会被层归一化模块阻断。
- 计算效率
计算效率。毫无疑问,目前 Transformer 还无法替代 CNN 的一个重要原因就是计算效率,目前 CV 领域还是直接套用NLP 中的 Transformer 结构,而较少地对 CV 数据做专门的设计,然而图像/视频的信息量远大于文本,所以目前 Transformer 的计算开销依然很大。当然 ViT 之后,已经陆续有工作开始设计更加适配 CV 的 Transformer 结构,估计这一个领域也是目前非常火热的领域,未来应该会有不少工作出来。