0、前言
作为处理时序信号的神器,RNN以强大的工作原理支撑着许多业务场景的落地使用,然而,随着使用频率的不断提高,人们也发现了RNN的致命缺陷:
-
依赖循环,无法并行处理:RNN的结构依赖于循环,每个时间步之间都是严格时序的(一步接一步),这导致其无法进行并行计算,也就无法充分利用分布式高性能并行计算资源,从而使得训练和推理速度较慢
-
长距离依赖问题:RNN在处理长序列数据时,会出现梯度消失问题,从而难以捕捉到距离当前位置较远的依赖关系;随着时间间隔的增加,输入信息对于隐藏层状态的影响被逐渐“稀释”,导致模型难以学习到长期依赖
-
多层堆叠性能回报有限:虽然增加RNN的层数可以提高模型的学习能力,但在实际应用中,多层堆叠的RNN并不总能获得足够的性能回报,这同样也是因为梯度消失问题会随着层数的增加而加剧,导致网络难以学习深层的依赖关系
面对RNN的致命缺陷,亟需有更强大的模型来为人们服务,为此,Transformer横空出世,它点对点的解决了RNN的上述问题
1、Transformer简介
Transformer是一种深度学习模型,由谷歌的Vaswani等人在2017年的论文《Attention Is All You Need》中首次提出,它主要用于处理序列数据,在自然语言处理(NLP)领域取得了巨大的成功
Transformer模型的核心是自注意力(Self-Attention)机制,这种机制使得模型能够捕捉序列中的长距离依赖关系,且在并行计算中表现出色
1.1 定位
Transformer模型的出现并非一蹴,它是深度学习领域多年研究成果的集大成者,其借鉴了NLP和CV领域的多种技术(包括序列建模、注意力机制等),从而形成了一个强大的模型架构
与CV领域中的YOLO(You Only Look Once)一样狂傲,NLP领域中的Transformer的理念在于:Attention is all you need
1.2 解决问题
Transformer点对点的解决了RNN的致命缺陷:
-
干掉循环,干掉RNN,干掉卷积:Transformer摒弃了RNN的循环结构和CNN的卷积结构,完全基于自注意力机制来处理序列数据,这种结构使得模型可以并行处理整个序列,而不是像RNN那样必须按时间步顺序依次处理,大大提高了模型的训练效率
-
并行计算,记忆更长久,适合处理长序列:Transformer的自注意力机制能够捕捉序列中的长期依赖关系,克服了RNN中梯度消失/爆炸的问题,支持并行处理(在输入序列上进行编码,在输出序列上进行解码),从而提高模型训练的速度
-
可以通过堆叠获取更高的性能:Transformer模型通过堆叠多个编码器和解码器层来提升性能,每一层都包含自注意力机制和前馈神经网络,这种结构使得模型能够捕获更复杂的特征和模式;此外,Transformer中的残差连接(ResBlock)和层归一化(LayerNorm)有助于防止梯度消失和爆炸,使得深层网络能够更好地收敛
-
ResBlock:Transformer中的残差连接(ResBlock)是防止梯度消失的有效机制,每个残差块包含两个卷积层和一个shortcut连接,这使得每一层的输出可以直接跳过某些层,从而缓解梯度消失问题
-
LayerNorm:层归一化(LayerNorm)通过对每一层神经元的激活值进行归一化,使得激活值保持在一个稳定的范围内,防止了激活值过大或过小导致的梯度消失或梯度爆炸问题
-
1.3 缺点
Transformer十分强大,要说它有什么缺点,那就是:计算代价太高,需要借助大量的显存
2、Transformer和Seq2Seq的区别与联系
Transformer和Seq2Seq之间可以看做是“油车”和“电车”的关系,其外部特征一模一样,内部特征存在本质区别:
-
外部特性(一模一样):都是自回归式生成算法
-
内部特征(本质区别):
-
Seq2Seq依赖于循环神经网络(RNN)来处理序列数据
-
Transformer则完全基于自注意力(Self-Attention)机制
-
3、Transformer学习三部曲
Step1: 学习原始论文《Attention Is All You Need》 https://arxiv.org/abs/1706.03762
Step2: 学习老外对于原始论文研究之后写的图解版博客《The Illustrated Transformer》 The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time.
Step3: 学习老外对于图解版博客研究之后写的代码版博客《The Annotated Transformer》 The Annotated Transformer