Transformer 学习笔记(ing)

目录

1. 三大特征提取器RNN、CNN、Transformer

1.1 RNN

1.2 CNN

1.3 Transformer

1.4 三者比较

2. Transformer模型思想

2. 模型概述

3. Transformer优缺点

4. 应用场景


1. 三大特征提取器RNN、CNN、Transformer

1.1 RNN

本质特征:T时刻隐层状态的计算,依赖两个输入,一个是T时刻的句子输入单词Xt,这个不算特点,所有模型都要接收这个原始输入;关键的是另外一个输入,T时刻的隐层状态St还依赖T-1时刻的隐层状态S(t-1)的输出,形成了序列依赖关系,无法实现并行计算

发展:改进得到的SRU、SRNN并行能力依旧较差

1.2 CNN

位置编码:CNN的卷积层保留了相对位置信息,滑动窗口向右滑动,捕捉到的特征也顺序排列。只要中间层不要随手瞎插入Pooling层,位置信息就不会被打乱

并行计算:CNN的并行度是非常自由也非常高的,考虑单层卷积层,首先对于某个卷积核来说,每个滑动窗口位置之间没有依赖关系,所以完全可以并行计算;另外,不同的卷积核之间也没什么相互影响,所以也可以并行计算

1.3 Transformer

谷歌在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做法跟CNN是类似的,一般设定输入的最大长度,如果句子没那么长,则用Padding填充,这样整个模型输入起码看起来是定长的了
  • 保留单词位置信息:RNN因为结构就是线性序列的,所以天然会将位置信息编码进模型;而CNN的卷积层其实也是保留了位置相对信息的,所以什么也不做问题也不大;
  • 长距离依赖特征问题:Self attention天然就能解决这个问题,因为在集成信息的时候,当前单词和句子中任意单词都发生了联系,所以一步到位就把这个事情做掉了。不像RNN需要通过隐层节点序列往后传,也不像CNN需要通过增加网络深度来捕获远距离特征

Transformer有两个版本:Transformer base和Transformer Big。两者结构其实是一样的,主要区别是包含的Transformer Block数量不同,Transformer base包含12个Block叠加,而Transformer Big则扩张一倍,包含24个Block。无疑Transformer Big在网络深度,参数量以及计算量相对Transformer base翻倍,所以是相对重的一个模型,但是效果也最好。

1.4 三者比较

比较数据参考论文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倍到几十倍之间。

2. Transformer模型思想

Transformer中抛弃了传统的CNN和RNN,整个网络结构完全是由Attention机制组成。 作者采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算是顺序的,RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题: 

(1)时间片 t 的计算依赖 t−1 时刻的计算结果,这样限制了模型的并行能力;
(2)顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。
  Transformer的提出解决了上面两个问题:

(1)首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;
(2)其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。

2. 模型概述

3. Transformer优缺点

优点:并行能力强

缺点:对于长输入的任务,典型的比如篇章级别的任务(例如文本摘要),因为任务的输入太长,Transformer会有巨大的计算复杂度,导致速度会急剧变慢

在原文中没有提到缺点,是后来在Universal Transformers中指出的,主要是两点:

  (1)实践上:有些RNN轻易可以解决的问题transformer没做到,比如复制string,或者推理时碰到的sequence长度比训练时更长(因为碰到了没见过的position embedding)。

  (2)理论上:transformers不是computationally universal(图灵完备),这种非RNN式的模型是非图灵完备的的,无法单独完成NLP中推理、决策等计算问题(包括使用transformer的bert模型等等)。

4. 应用场景

参考链接:

1. 论文原文《Attention Is All You Need》

2. 台大李宏毅老师Transformer课程

3. 深入理解Transformer及其源码

4. 放弃幻想,全面拥抱Transformer:自然语言处理三大特征抽取器(CNN/RNN/TF)比较 

5. 三大特征提取器 - RNN、CNN和Transformer 

6. Why Self-Attention?

你可能感兴趣的:(深度学习,attention,transformer,深度学习)