Transformer及其应用综述不一

发布时间:2022-4-4 12:44:20   点击数:
有治好白癜风的患者吗 http://m.39.net/baidianfeng/qzzt/bdfnzhm/

在Transformer提出之前,在机器翻译或语言模型任务中用来建模序列的主流方法都是采用递归神经网络(RNN),然而由于RNN的按时间步展开的特性,使得其无法并行化。对此,研究者们为了解决RNN的循环特性导致的不可并行化问题,提出了多种改进模型,包括基于卷积神经网络和注意力的引入,但都没有很好的解决问题。文章详细介绍了Transformer结构,一个完全基于注意力来编码输入和计算输出,而不依赖于序列对齐的循环或卷积神经网络。综述了其在自然语言处理各领域的应用,表达了其强大性能与应用前景的期望。

0引言

NLP是个很宽泛的领域,理论上只要跟语言处理相关,都可纳入NLP这个范围。但从解决任务的角度出发,NLP的输入往往是一句话或者一篇文章,所以它有几个特点:首先,输入是个一维线性序列,这个好理解;其次,输入是不定长的,有的长有的短,而这点其实对于模型处理起来也会增加一些小麻烦;再次,单词或者子句的相对位置关系很重要,两个单词位置互换可能导致完全不同的意思。如果你听到我对你说:“你欠我那一千万不用还了”和“我欠你那一千万不用还了”,你听到后分别是什么心情?两者区别了解一下;另外,句子中的长距离特征对于理解语义也非常关键,而特征抽取器能否具备长距离特征捕获能力这一点对于解决NLP任务来说也是很关键的。一个特征抽取器是否适配问题领域的特点,有时候决定了它的成败,而很多模型改进的方向,其实就是改造得使得它更匹配领域问题的特性。作为自然语言处理中的三大特征处理器:RNN、CNN、Transformer,它们目前谁各方面占据优势?未来谁又更有前途呢?文章对目前NLP里的三大特征抽取器的特点和未来走势做出了以下宏观判断:

RNN:RNN自从引入NLP界后,很快就成为吸引眼球的明星模型,在NLP各种任务中被广泛使用。但是原始的RNN也存在问题,它采取线性序列结构不断从前往后收集输入信息,但这种线性序列结构在反向传播的时候存在优化困难问题,因为反向传播路径太长,容易导致严重的梯度消失或梯度爆炸问题。为了解决这个问题,后来引入了LSTM和GRU模型,通过增加中间状态信息直接向后传播,以此缓解梯度消失问题,获得了很好的效果,于是很快LSTM和GRU成为RNN的标准模型。但这些基于RNN的模型都很难具备高效的并行计算能力,这一定程度上也决定了模型的上限不如其他非RNN系模型,表现能力和计算效率都没有竞争力,注定会逐渐退出历史舞台;

CNN:Transformer之前,CNN是自然语言处理中除了RNN外最常见的深度学习模型,在图像领域打遍天下无敌手的CNN,其在NLP的发展潜力不言而喻。但由于任务处理方式的不同,CNN应用到文本数据的处理一般是通过k-gram方式进行的,类似与图像处理中卷积核的滑动,卷积得到的k-gram片段就是CNN捕获到的特征,k的大小决定了能捕获多远距离的特征。这显然就存在一个矛盾:k不能设置过大,从而导致无法捕获长距离特征,而长距离特征信息对NLP来说是及其重要的。虽然可以参考图像处理的方法,比如增加残差连接、加深网络宽度和深度在一定程度上增大感受野,但这代价是巨大的,而且比图像处理时要大得多。但相对于RNN,优点也很突出,强大的并行计算能力使得深度的增加代价大大减少,且在图像处理中的巨大成功为NLP带来了光明前景;

Transformer:年Transformer提出,基于Transformer的预训练模型Bert公布,对自然语言处理领域来说,无疑是改写历史的时刻。Transformer的最大创新点在于直接摈弃了RNN和CNN的架构,完全利用注意力机制,拥有强大的语义特征提取能力、长距离特征捕获能力、任务综合特征抽取能力、并行计算能力及运行效率,处于并将长期处于NLP的主流网络架构。

1Transformer方法介绍

1.1Transformer基本结构

Transformer基本结构如图1所示。

图1Transformer基本结构

Transformer是一个标准的seq2seq即编码—解码结构,包括一系列编码与解码器的堆叠,图中只列出了一个编码器与一个解码器结构以及他们之间的连接。Transformer在NLP的应用十分广泛,通常任务如文本分类、情感分析等只需编码器即可,而对于一些生成式任务如机器翻译、对话分析、阅读理解等则需要解码器生成相同大小的序列结果。

每个编码器模块都由一个Self-attention层与前馈神经网络组成,而解码器则比编码器多了一个编码—解码注意力模块,用于建立编码与解码关系的连接。而这些self-attention正是Transformer获得成功的核心,我们将在下一节介绍。

1.2Self-Attention基本结构

Self-Attention的实现细节如图2所示。

首先,需要从每个编码器的输入向量创建三个向量。即,对于每个单词,创建一个Query向量,一个Key向量和一个Value向量。这些向量是通过将词嵌入(embedding)乘以在训练过程中训练的三

图2Self-Attention计算过程

个矩阵来创建的。

(1)

然后,计算每个词向量的得分(score权重),如公式(1)所示。这里的分数是通过将"query"向量与单词的“key”向量做点积来得到。并将分数除以8(论文中使用“Key”向量维数的平方根,这可以有更稳定的梯度。),然后经过一个softmax操作后输出结果。softmax后的分数决定了每个单词在这个位置被表达了多少。

最后,将每个值向量乘以softmax得分,简单来讲就是保持我们

欢迎转载,转载请注明原文网址:http://www.cheguanjia168.com/jsyl/12669.html

------分隔线----------------------------