目录
1. 三大特征提取器RNN、CNN、Transformer
1.1 RNN
1.2 CNN
1.3 Transformer
1.4 三者比较
2. Transformer模型思想
2. 模型概述
3. Transformer优缺点
4. 应用场景
本质特征:T时刻隐层状态的计算,依赖两个输入,一个是T时刻的句子输入单词Xt,这个不算特点,所有模型都要接收这个原始输入;关键的是另外一个输入,T时刻的隐层状态St还依赖T-1时刻的隐层状态S(t-1)的输出,形成了序列依赖关系,无法实现并行计算
发展:改进得到的SRU、SRNN并行能力依旧较差
位置编码:CNN的卷积层保留了相对位置信息,滑动窗口向右滑动,捕捉到的特征也顺序排列。只要中间层不要随手瞎插入Pooling层,位置信息就不会被打乱
并行计算:CNN的并行度是非常自由也非常高的,考虑单层卷积层,首先对于某个卷积核来说,每个滑动窗口位置之间没有依赖关系,所以完全可以并行计算;另外,不同的卷积核之间也没什么相互影响,所以也可以并行计算
谷歌在17年做机器翻译任务的《Attention is all you need》的论文中提出
Transformer使用Encoder-Decoder框架,Encoder完成从原始句子中提取特征,Decoder部分则功能相对比较多,除了特征提取功能外,还包含语言模型功能,以及用attention机制表达的翻译模型功能
Transformer的Encoder部分由若干个相同的Transformer Block堆叠成,Transformer Block是Transformer的核心。能让Transformer效果好的,不仅仅是Self attention,这个Block里所有元素,包括Multi-head self attention,Skip connection,LayerNorm,FF一起在发挥作用
Transformer对于NLP任务的解决方案
Transformer有两个版本:Transformer base和Transformer Big。两者结构其实是一样的,主要区别是包含的Transformer Block数量不同,Transformer base包含12个Block叠加,而Transformer Big则扩张一倍,包含24个Block。无疑Transformer Big在网络深度,参数量以及计算量相对Transformer base翻倍,所以是相对重的一个模型,但是效果也最好。
比较数据参考论文Why Self-Attention?
(1)语义特征提取能力
Transformer显著超过RNN和CNN,RNN和CNN两者能力差不太多。
(2)长距离(long-range)特征捕获能力
原生CNN特征抽取器在这方面极为显著地弱于RNN和Transformer,Transformer微弱优于RNN模型(尤其在主语谓语距离小于13时),能力由强到弱排序为Transformer>RNN>>CNN; 但在比较远的距离上(主语谓语距离大于13),RNN微弱优于Transformer,所以综合看,可以认为Transformer和RNN在这方面能力差不太多,而CNN则显著弱于前两者。
对于Transformer来说,Multi-head attention的head数量严重影响NLP任务中Long-range特征捕获能力,head越多越有利于捕获long-range特征
(3)任务综合特征抽取能力
通常,机器翻译任务是对NLP各项处理能力综合要求最高的任务之一,要想获得高质量的翻译结果,对于两种语言的词法,句法,语义,上下文处理能力,长距离特征捕获等方面的性能要求都是很高的。从综合特征抽取能力角度衡量,Transformer显著强于RNN和CNN,而RNN和CNN的表现差不太多。
(4)并行计算能力
对于并行计算能力,并行计算是RNN的严重缺陷,而Transformer和CNN差不多。
计算速度方面,Transformer Base最快,CNN次之,再次Transformer Big,最慢的是RNN。RNN比前两者慢了3倍到几十倍之间。
Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。 作者采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算是顺序的,RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:
(1)时间片 t 的计算依赖 t−1 时刻的计算结果,这样限制了模型的并行能力;
(2)顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。
Transformer的提出解决了上面两个问题:
(1)首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;
(2)其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。
优点:并行能力强
缺点:对于长输入的任务,典型的比如篇章级别的任务(例如文本摘要),因为任务的输入太长,Transformer会有巨大的计算复杂度,导致速度会急剧变慢
在原文中没有提到缺点,是后来在Universal Transformers中指出的,主要是两点:
(1)实践上:有些RNN轻易可以解决的问题transformer没做到,比如复制string,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding)。
(2)理论上:transformers不是computationally universal(图灵完备),这种非RNN式的模型是非图灵完备的的,无法单独完成NLP中推理、决策等计算问题(包括使用transformer的bert模型等等)。
参考链接:
1. 论文原文《Attention Is All You Need》
2. 台大李宏毅老师Transformer课程
3. 深入理解Transformer及其源码
4. 放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较
5. 三大特征提取器 - RNN、CNN和Transformer
6. Why Self-Attention?