多年来,深度学习始终在一直倒退。深度学习实际高度强调应用大量参数来提取无关咱们正在解决的数据集的有用信息。通过领有大量参数,咱们能够更容易地分类 / 检测某些货色,因为咱们有更多的能够分明地辨认的数据。
目前为止深度学习中,特地是在自然语言解决畛域的一个显着里程碑是语言模型的引入,它极大地提高了执行各种 NLP 工作的准确性和效率。
seq2seq 模型是一种基于编码器 - 解码器机制的模型,它接管输出序列并返回输入序列作为后果。例如图像形容工作,输出给定的图像,输入则是为图像创立一个正当的形容。在这种状况下 seq2seq 模型将图像像素向量(序列)作为输出,并逐字返回形容(序列)作为输入。
一些促成此类模型训练的重要 DL 算法包含 RNN,LSTM,GRU。但随着工夫的推移这些算法的应用逐步隐没,因为复杂性和一些毛病会随着数据集大小的减少而重大影响性能。这其中的重要的毛病包含较长的训练工夫、梯度隐没问题(当咱们为大型数据集进一步训练模型时会失落无关旧数据的信息)、算法的复杂性等。
Attention is all you need
在语言模型训练方面取代上述所有算法的爆发性概念之一是基于多头注意力的 Transformer 架构。Transformer 架构最早是由谷歌在 2017 年的论文《Attention is all you need》中引入的。它受欢迎的次要起因是其架构引入了并行化。Transformer 利用了弱小的 TPU 和并行训练,从而缩小了训练工夫。
以下是被流传最宽泛的 Transformer 架构的可视化。
即便形象了很多的细节,整个架构看起来还是十分宏大。这张图中每一层依然暗藏着很多细节货色。咱们在这篇文章中会介绍每一层以及它在整个架构中的作用。
Transformer 是一个用于 seq2seq 模型的编码器 - 解码器模型,左侧是输出,右侧是输入。在 它外部应用的留神机制已成为语言模型的首要算法。
当初咱们开始具体介绍每一层的作用。咱们将应用带有简略句子“I am a student”及其法语翻译模式“Je suis étudiant”的语言翻译工作示例。
Embedding layer
输出嵌入是 Transformer 编码器和解码器的第一步。机器无奈了解任何语言的单词,它只能辨认数字。所以咱们通过这一层失去了输出 / 输入中每个单词的嵌入,这些嵌入应用 GloVe 等办法很容易取得。对于这个嵌入值,咱们在句子中增加该词的地位信息(基于奇数或偶数地位呈现的不同值)以提供上下文信息。
Multi-Head Attention
多头注意力层由组合在一起的多个自注意力层组成。注意力层的次要目标是收集无关句子中每个单词与其余单词的相关性的信息,这样能够取得其在句子中的含意。上图形容了咱们句子中的每个单词如何依赖其余单词来提供含意。但要让机器了解这种依赖性和相关性并不是那么容易。
在咱们的注意力层中,咱们采纳三个输出向量,即查问(Q)、键(K)和值(V)。简略的说:查问就像在浏览器上搜寻的内容,浏览器会返回一组要匹配的页面它们就是是键,而咱们失去真正须要的后果是值。对于句子中的给定词(Q),对于它中的其余词(K),咱们失去它(V)对另一个词的相关性和依赖性。这种自我留神过程应用 Q、K 和 V 的不同权重矩阵进行了屡次激素按。因而就是多头留神层,作为多头注意力层的后果,咱们失去了多个注意力矩阵。
在架构中,咱们能够看到解码器中还有另外两个注意力层。
Masked multi-head attention
这是咱们解码器端的第一层注意力。但为什么它是 Masked attention?
在输入的状况下,如果以后单词能够拜访它之后的所有单词,那么它不会学到任何货色。它会间接持续并倡议输入这个词。然而通过掩蔽咱们能够暗藏以后单词之后的单词,它将有空间来预测到目前为止对给定单词和句子来说什么单词是有意义的。它曾经有了以后单词的嵌入和地位信息,所以咱们应用它之前应用 Q、K 和 V 向量看到的所有单词让它变得有意义并找出最可能的下一个单词。
Encoder-Decoder attention
解码器端的下一个多头注意力层从编码器端获取两个输出(K,V),从解码器的前一个注意力层获取另一个(Q),它能够拜访来自输出和输入的注意力值。基于来自输出和输入的以后注意力信息,它在两种语言之间进行交互并学习输出句子中每个单词与输入句子之间的关系。
Residual layer
这些注意力层将返回一组注意力矩阵,这些矩阵将与理论输出进行合并,并且将执行层 / 批量标准化。这种归一化有助于平滑损失,因而在应用更大的学习率时很容易优化
Feed Forward Layer
在编码器块中前馈网络是一个简略的模块,它取出均匀的注意力值并将它们转换为下一层更容易解决的模式。它能够是顶部的另一个编码器层,也能够传递到解码器端的编码器 - 解码器注意力层。
在解码器块中,咱们还有另一个前馈网络,它执行雷同的工作并将转换后的注意力值传递到顶部的下一个解码器层或线性层。
Transformer 的一个次要的特色就产生在这一层,与传统的 RNN 不同,因为每个单词都能够通过其注意力值独立地通过神经网络,因而这一层是并行化激素按的。咱们能够同时传递输出句子中的所有单词,编码器能够并行处理所有单词并给出编码器输入。
Output
在所有解码器端解决实现后,数据就被传送到带有线性层和 softmax 层的输入解决层。线性层用于将来自神经网络的注意力值扁平化,而后利用 softmax 来找到所有单词的概率,从中咱们失去最可能的单词,模型其实就是预测下一个可能的单词作为解码器层输入的概率。
整体总结
当初让咱们疾速浏览一下整个过程。
编码器 Encoder
将输出句子中的每个单词并行传递。采纳词嵌入并增加地位信息以提供上下文。而后有多头注意力层它学习与其余单词的相关性,从而产生多个注意力向量。而后将这些向量平均化并利用归一化层以简化优化。这些向量又被传递到前馈网络,该网络将值转换为下一个编码器或编码器 - 解码器注意力层可读的维度。
解码器 Decoder
首先是一个相似的词嵌入和增加上下文的预处理步骤。而后通过一个带有掩蔽的注意力层,它能够学习输入句子的以后单词和它之前看到的所有单词之间的注意力并且不容许行将呈现的单词。而后通过残差连贯的加和归一化层进行归一化操作,将编码器层的输入作为键、值向量到下一个留神层,解码器下一层将应用的注意力的值(V)作为查问(Q)。输出和输入语言之间的在这里进行了理论交互,这样使得算法更好地了解语言翻译。
最初是另一个前馈网络,它将转换后的输入传递到一个线性层,使注意力值变扁平,而后通过 softmax 层来获取输入语言中所有单词下一次呈现的概率。概率最高的单词将成为输入。
编码器和解码器的重叠
重叠编码器和解码器也很无效,因为它能够更好地学习工作并进步算法的预测能力。在理论论文中,Google 重叠了 6 个编码器和解码器。但也要确保它不会适度拟合并使训练过程变得低廉。
最初总结
自从 Google 推出 Transformers 以来,它在 NLP 畛域就始终是革命性的。它被用于开发各种语言模型,包含备受赞美的 BERT、GPT2 和 GPT3,在所有语言工作中都优于以前的模型。理解基础架构必定会让你在游戏中处于领先地位。
感谢您浏览本文!我心愿这篇文章能让你对 Transformer 的整体架构有所理解。
作者:Logeshvar L