作者 |Renu Khandelwal
编译 |VK
起源 |Towards Data Science
在这篇文章中,咱们将探讨以下无关 Transformer 的问题
- 为什么咱们须要 Transformer,Sequence2Sequence 模型的挑战是什么?
- 具体介绍了 Transformer 及其架构
- 深入研究 Transformer 中应用的术语,如地位编码、自注意力、多头注意力、掩码多头注意力
- 能够应用 Transformer 的 NLP 工作
Sequence2Sequence (Seq2Seq) 的毛病
- 程序计算 : 在 Seq2Seq 中,咱们以程序的形式在每个步骤中向编码器输出一个单词,以便在解码器中每次生成一个单词的输入。在 Seq2Seq 架构中咱们做不到通过并行化操作来进步计算效率。
- 长期依赖关系 : 长期依赖关系是 Seq2Seq 的一个问题,这是因为须要为长句执行大量操作造成的,如下所示。
这里的“it”指的是“Coronavirus”还是“countries”?。
让咱们深刻理解 Transformer 的体系结构和 Transformer 的要害概念,以理解 Transformer 如何应答这些挑战
Transformer 架构
Transformer 有 6 个编码器和 6 个解码器,不像 Seq2Seq,该编码器蕴含两个子层: 多头自留神层和一个全连贯层。
该解码器蕴含三个子层,一个多头自留神层,一个可能执行编码器输入的多头自留神的附加层,以及一个全连贯层。
编码器和解码器中的每个子层都有一个残差连贯,而后进行 layer normalization(层标准化)。
编码器和解码器的输出
所有编码器 / 解码器的输出和输入标记都应用学习过的嵌入转换成向量。而后将这些输出嵌入传入进行地位编码。
地位编码
Transformer 的架构不蕴含任何递归或卷积,因而没有词序的概念。输出序列中的所有单词都被输出到网络中,没有非凡的程序或地位,因为它们都同时流经编码器和解码器堆栈。
要了解一个句子的意思,了解单词的地位和程序是很重要的。
地位编码被增加到模型中,以帮忙注入对于句子中单词的绝对或相对地位的信息
地位编码与输出嵌入具备雷同的维数,因而能够将二者相加。
自留神 (self attention)
注意力是为了更好地了解句子中单词的含意和上下文。
自留神,有时也称为内留神,是一种将单个序列的不同地位分割起来以计算序列示意的注意力机制
一个自留神层用一个常数数量的间断执行的操作连贯所有的地位,因而比反复的层更快
Transformer 中的留神函数被形容为将查问和一组键值对映射到输入。查问、键和值都是向量。注意力权值是通过计算句子中每个单词的点积注意力来计算的。最初的分数是这些值的加权和。
让咱们用一句话来了解:“I enjoy nature.。”
输出是查问、键和值。向量的维数是 64,因为这导致了更稳固的梯度。
步骤 1: 点积
取查问和句子中每个单词的键的点积。点积决定了谁更关注输出句子中的其余单词。
步骤 2: 缩放
通过除以键向量维数的平方根来缩放点积。大小是 64; 因而,咱们将点积除以 8。
步骤 3: 应用 softmax
Softmax 使比例值归一。利用 Softmax 后,所有值均为正,加起来为 1
步骤 4: 计算各值的加权和
咱们利用归一后的分数和值向量之间的点积,而后计算总和
自留神的残缺公式
对句子中的每个单词反复这些步骤。
多头留神
Transformer 应用多个注意力头,而不是繁多的注意力函数,即由理论的单词自身来管制注意力。
每个留神头都有一个不同的线性变换利用于雷同的输出示意。该 Transformer 应用 8 个不同的留神头,这些留神头是并行独立计算的。有了 8 个不同的留神头,咱们就有了 8 个不同的查问、键和值集,还有 8 个编码器和解码器集,每个集都是随机初始化的
“多头注意力容许模型在不同的地位独特关注来自不同示意子空间的信息。”
在一个多头留神头中,输出示意的每一部分都与输出示意的其余局部进行交互,以取得更好的含意和上下文。当多头注意力在不同的地位察看不同的示意子空间时,它也有助于学习长期的依赖关系。
利用多头留神,咱们得悉下面句子中的“it”指的是“Coronavirus”。
掩码多头留神
解码器对多头注意力进行掩码,在此掩蔽或阻止了解码器对将来步骤的输出。在训练过程中,解码器的多头注意力暗藏了将来的解码器输出。
在机器翻译工作中,应用 Transformer 将一个句子“I enjoy nature”从英语翻译成印地语,解码器将思考所有输出的单词“I, enjoy, nature”来预测第一个单词。
下表显示了解码器将如何阻止来自将来步骤的输出
编码器和解码器中的每个子层都有一个残差连贯,而后进行层标准化。
残差连贯和层标准化
残差连贯是“跳过连贯”,容许梯度通过网络而不通过非线性激活函数。残差连贯有助于防止隐没或爆炸的梯度问题。为了使残余的连贯起作用,模型中每个子层的输入应该是雷同的。Transformer 中的所有子层,产生维度大小 512 的输入。
层标准化: 对每个特色的输出进层标准化,并且与其余示例无关,如下所示。层标准化缩小了前馈神经网络的训练工夫。在层标准化中,咱们在一个繁多的训练案例中,计算所有层神经元的累加输出的平均值和方差。
全连贯层
Transformer 中的编码器和解码器都有一个全连贯网络,它有两个线性变换,其中蕴含一个 ReLU 激活。
线性和 softmax 的解码器
译码器的最初一层利用线性变换和 softmax 函数对译码器输入进行转换,预测输入的概率
Transformer 的特点
利用 Transformer 解决了 seq2seq 模型的有余
- 并行计算 :Transformer 的体系结构去掉了 Seq2Seq 模型中应用的自回归模型,齐全依赖于自留神来了解输出和输入之间的全局依赖关系。自留神极大地帮忙并行化计算
- 缩小操作次数 :Transformer 的操作次数是恒定的,因为在多头留神中,留神权值是均匀的
- 长依赖关系 : 影响近程依赖学习的因素是基于信号必须在网络中通过的前向和后向门路的长度。输出和输入序列中任意地位组合之间的门路越短,就越容易学习长期依赖关系。自留神层通过一系列间断执行的操作连贯所有地位,学习长期依赖关系。
由 Transformer 解决的 NLP 工作
- 文本摘要
- 机器翻译
论断:
Transformer 有一个简略的网络结构,基于自留神机制,不依赖于递归和卷积齐全。计算是并行执行的,使 Transformer 效率高,须要更少的训练工夫
原文链接:https://towardsdatascience.co…
欢送关注磐创 AI 博客站:
http://panchuang.net/
sklearn 机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/