翻译一篇非常赞的解释Transformer的文章,
原文链接
。
在之前的
文章
中,Attention成了深度学习模型中无处不在的方法,它是种帮助提升NMT(Neural Machine Translation)的翻译效果的思想。在本篇博客中,我们解析下Transformer,该模型扩展Attention来加速训练,并且在特定任务上 transformer 表现比 Google NMT 模型还要好。然而,其最大的好处是可并行。实际上
谷歌云
推荐将Transformer作为云TPU的推导模型。现在我们将Transformer拆解开来看看它是如何工作的。
Transformer是在"
Attention is All You Need
"中提出的,其中的TF应用是
Tensor2Tensor
的子模块。哈佛的NLP团队专门制作了对应的PyTorch的
指南说明
。本文旨在简化难度,一步一步地解释其中的概念,希望有助于初学者更容易地理解。
我们先将整个模型视为黑盒,比如在机器翻译中,接收一种语言的句子作为输入,然后将其翻译成其他语言输出。
细看下,其中由编码组件、解码组件和它们之间的连接层组成。
编码组件是六层编码器首位相连堆砌而成,解码组件也是六层解码器堆成的。
编码器是完全结构相同的,但是并不共享参数,每一个编码器都可以拆解成以下两个字部分。
编码器的输入首先流过一个self-attention层,该层帮助编码器能够看到输入序列中的其他单词当它编码某个词时。后面,我们会细看self-attention的内部结构。
self-attention的输出流向一个前向网络,每个输入位置对应的前向网络是独立互不干扰的。
解码器同样也有这些子层,但是在两个子层间增加了attention层,该层有助于解码器能够关注到输入句子的相关部分,与
seq2seq model
的Attention作用相似。
现在,我们解析下模型最主要的组件,从向量/Tensor开始,然后是它们如何流经各个组件们并输出的。
正如NLP应用的常见例子,先将输入单词使用
embedding algorithm
转成向量。
这里能看到Transformer的一个关键特性,每个位置的词仅仅流过它自己的编码器路径。在self-attention层中,这些路径两两之间是相互依赖的。
前向网络层则没有这些依赖性
,但这些路径在流经前向网络时可以并行执行。
正如之前所提,编码器接收向量的list作输入。然后将其送入self-attention处理,再之后送入前向网络,最后将输入传入下一个编码器。
不要被self-attention这个词迷惑了,看起来好像每个人对它都很熟悉,但是在我读到Attention is All You Need这篇文章之前,我个人都没弄懂这个概念。下面我们逐步分解下它是如何工作的。
以下面这句话为例,作为我们想要翻译的输入语句“The animal didn’t cross the street because it was too tired”。句子中"it"指的是什么呢?“it"指的是"street” 还是“animal”?对人来说很简单的问题,但是对算法而言并不简单。
当模型处理单词“it”时,self-attention允许将“it”和“animal”联系起来。当模型处理每个位置的词时,self-attention允许模型看到句子的其他位置信息作辅助线索来更好地编码当前词。如果你对RNN熟悉,就能想到RNN的隐状态是如何允许之前的词向量来解释合成当前词的解释向量。Transformer使用self-attention来将相关词的理解编码到当前词中。
当编码"it"时(编码器的最后层输出),部分attention集中于"the animal",并将其表示合并进入到“it”的编码中
上图是
Tensor2Tensor notebook
的可视化例子
我们先看下如何计算self-attention的向量,再看下如何以矩阵方式计算。
第一步
,根据编码器的输入向量,生成三个向量,比如,对每个词向量,生成query-vec, key-vec, value-vec,生成方法为分别乘以三个矩阵,这些矩阵在训练过程中需要学习。【注意:不是每个词向量独享3个matrix,而是所有输入共享3个转换矩阵;
权重矩阵是基于输入位置的转换矩阵
;有个可以尝试的点,如果每个词独享一个转换矩阵,会不会效果更厉害呢?】
注意到这些新向量的维度比输入词向量的维度要小(512–>64),并不是必须要小的,是为了让多头attention的计算更稳定。
输入乘以W^q得到query
所谓的query/key/value-vec是什么?
这种提取对计算和思考attention是有益的,当读完下面attention是如何计算的之后,你将对这些向量的角色有更清晰的了解。
第二步
,计算attention就是计算一个分值。对“Thinking Matchines”这句话,对“Thinking”(pos#1)计算attention 分值。我们需要计算每个词与“Thinking”的评估分,这个分决定着编码“Thinking”时(某个固定位置时),每个输入词需要集中多少关注度。
这个分,通过“Thing”对应query-vector与所有词的key-vec依次做点积得到。所以当我们处理位置#1时,第一个分值是q1和k1的点积,第二个分值是q1和k2的点积。
第三步和第四步
,除以8(
上述就是self-attention的计算过程,生成的向量流入前向网络。在实际应用中,上述计算是以速度更快的矩阵形式进行的。下面我们看下在单词级别的矩阵计算。
第一步
,计算query/key/value matrix,将所有输入词向量合并成输入矩阵
论文进一步增加了multi-headed的机制到self-attention上,在如下两个方面提高了attention层的效果:
-
多头机制扩展了模型集中于不同位置的能力。在上面的例子中,z1只包含了其他词的很少信息,仅由实际自己词决定。在其他情况下,比如翻译 “The animal didn’t cross the street because it was too tired”时,我们想知道单词"it"指的是什么。
-
多头机制赋予attention多种子表达方式。像下面的例子所示,在多头下有多组query/key/value-matrix,而非仅仅一组(论文中使用8-heads)。每一组都是随机初始化,经过训练之后,输入向量可以被映射到不同的子表达空间中。
编码"it"时,一个attention head集中于"the animal",另一个head集中于“tired”,某种意义上讲,模型对“it”的表达合成了的“animal”和“tired”两者
如果我们将所有的attention heads都放入到图中,就很难直观地解释了。
截止到目前为止,我们还没有讨论如何理解输入语句中词的顺序。
为解决词序的利用问题,Transformer新增了一个向量对每个词,这些向量遵循模型学习的指定模式,来决定词的位置,或者序列中不同词的举例。对其理解,增加这些值来提供词向量间的距离,当其映射到Q/K/V向量以及点乘的attention时。
一个真实的例子有20个词,每个词512维。可以观察中间显著的分隔,那是因为左侧是用sine函数生成,右侧是用cosine生成。
位置向量编码方法在论文的3.5节有提到,也可以看代码
get_timing_signal_ld()
,对位置编码而言并不只有一种方法。需要注意的是,编码方法必须能够处理未知长度的序列。
编码器结构中值得提出注意的一个细节是,在每个子层中(slef-attention, ffnn),都有残差连接,并且紧跟着
layer-normalization
。
如果我们可视化向量和layer-norm操作,将如下所示:
在解码器中也是如此,假设两层编码器+两层解码器组成Transformer,其结构如下:
现在我们已经了解了编码器侧的大部分概念,也基本了解了解码器的工作方式,下面看下他们是如何共同工作的。
编码器从输入序列的处理开始,最后的编码器的输出被转换为K和V,它俩被每个解码器的"encoder-decoder atttention"层来使用,帮助解码器集中于输入序列的合适位置。
在解码器中的self attention 层与编码器中的稍有不同,在解码器中,self-attention 层仅仅允许关注早于当前输出的位置。在softmax之前,通过遮挡未来位置(将它们设置为-inf)来实现。
"Encoder-Decoder Attention "层工作方式跟multi-headed self-attention是一样的,除了一点,它从前层获取输出转成query矩阵,接收最后层编码器的key和value矩阵做key和value矩阵。
解码器最后输出浮点向量,如何将它转成词?这是最后的线性层和softmax层的主要工作。
线性层是个简单的全连接层,将解码器的最后输出映射到一个非常大的logits向量上。假设模型已知有1万个单词(输出的词表)从训练集中学习得到。那么,logits向量就有1万维,每个值表示是某个词的可能倾向值。
softmax层将这些分数转换成概率值(都是正值,且加和为1),最高值对应的维上的词就是这一步的输出单词。
训练好之后,模型的输出是我们期望的翻译。当然,这并不意味着这一过程是来自训练集。注意,每个位置都能有值,即便与输出近乎无关,这也是softmax对训练有帮助的地方。
现在,因为模型每步只产生一组输出,假设模型选择最高概率,扔掉其他的部分,这是种产生预测结果的方法,叫做greedy 解码。另外一种方法是beam search,每一步仅保留最头部高概率的两个输出,根据这俩输出再预测下一步,再保留头部高概率的两个输出,重复直到预测结束。top_beams是超参可试验调整。
希望本文能够帮助读者对Transformer的主要概念理解有个破冰效果,如果想更深入了解,建议如下步骤:
1 阅读
Attention Is All You Need
paper,Transformer的博客文章
Transformer: A Novel Neural Network Architecture for Language Understanding
,
Tensor2Tensor
使用说明。
2 观看"
Łukasz Kaiser’s talk
",梳理整个模型及其细节。
3 耍一下项目
Jupyter Notebook provided as part of the Tensor2Tensor repo
4 尝试下项目
Tensor2Tensor
-
Depthwise Separable Convolutions for Neural Machine Translation
-
One Model To Learn Them All
-
Discrete Autoencoders for Sequence Models
-
Generating Wikipedia by Summarizing Long Sequences
-
Image Transformer
-
Training Tips for the Transformer Model
-
Self-Attention with Relative Position Representations
-
Fast Decoding in Sequence Models using Discrete Latent Variables
-
Adafactor: Adaptive Learning Rates with Sublinear Memory Cost
致谢:
Thanks to Illia Polosukhin, Jakob Uszkoreit, Llion Jones , Lukasz Kaiser, Niki Parmar, and Noam Shazeer for providing feedback on earlier versions of this post.
Please hit me up on
Twitter
for any corrections or feedback.
前言 翻译一篇非常赞的解释Transformer的文章,原文链接。在之前的文章中,Attention成了深度学习模型中无处不在的方法,它是种帮助提升NMT(Neural Machine Translation)的翻译效果的思想。在本篇博客中,我们解析下Transformer,该模型扩展Attention来加速训练,并且在Google的NMT中表现突出。然而,其最大的好处是可并行。实际上谷歌云...
原文链接:
Attention
Is All You Need
作者: Ashish Vaswani;Noam Shaze
er
;Niki Parmar;Jakob Uszkoreit;Llion Jones;Aidan N. Gomez; Łukasz Kais
er
;Illia Polosukhin
目录论文阅读:
Attention
Is All You Need摘要1 介绍2 背景3 模型架构3.1 编码器和解码器堆栈3.2 注意力机制3.2
写在最前边
看
transform
er
相关文章的时候发现很多人用了相同的图。直到我搜到作者的原文……于是决定翻
译
一下无删改的原文。
翻
译
讲究:信、达、雅。要在保障意思准确的情况下传递作者的意图,并且尽量让文本优美。但是大家对我一个理工科少女的语言要求不要太高,本文只能保证在尽量通顺的情况下还原原文。
作者博客:@Jay Alammar
原文链接:The
Illustrated
Transform
er
原文翻
译
在之前的文章中,我们讲了现代神经网络常用的一种方法——
Attention
机制。
本文章我们来介绍
传统的序列到序列的机器翻
译
大都利用
RNN
或CNN来作为encod
er
-decod
er
的模型基础。实际上传统机器翻
译
基于
RNN
和CNN进行构建模型时,最关键一步就是如何编码这些句子的序列。往往第一步是先将句子进行分词,然后每个词转化为对应的词向量,那么每个句子都可以由这些词向量来构造对应的句子的序列表示向量。
(1)
RNN
递归进行:
yt=f(yt−1,xt)
不管是LSTM、GRU还是S...
《
Attention
Is All You Need》是2017年由Google提出的论文,论文重点描述了
transform
er
结构及原理。
transform
er
在机器翻
译
等众多NLP领域取得了很大的进步,这次学习《
Attention
Is All You Need目的是为了搞懂
transform
er
,B
ER
T预训练模型原理及细节。
论文链接:https://arxiv.org/abs/17...
论文地址:https://proceedings.neurips.cc/pap
er
/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Pap
er
.pdf
项目地址:https://github.com/ tensorflow/tensor2tensor
The TCPIP Guide A Comprehensive,
Illustrated
Int
er
net Protocols Ref
er
ence 英文无水印pdf
pdf所有页面使用FoxitRead
er
和PDF-XChangeView
er
测试都可以打开
本资源转载自网络,如有侵权,请联系上传者或csdn删除
本资源转载自网络,如有侵权,请联系上传者或csdn删除
The
Illustrated
Network How TCPIP Works in a Mod
er
n Network(2nd) 英文无水印原版pdf 第2版
pdf所有页面使用FoxitRead
er
、PDF-XChangeView
er
、SumatraPDF和Firefox测试都可以打开
本资源转载自网络,如有侵权,请联系上传者或csdn删除
查看此书详细信息请在美国亚马逊官网搜索此书
The
Illustrated
Network - How TCPIP Works in a Mod
er
n Network 英文无水印pdf
pdf所有页面使用FoxitRead
er
和PDF-XChangeView
er
测试都可以打开
本资源转载自网络,如有侵权,请联系上传者或csdn删除
本资源转载自网络,如有侵权,请联系上传者或csdn删除
The TCPIP Guide A Comprehensive,
Illustrated
Int
er
net Protocols Ref
er
ence 英文epub
本资源转载自网络,如有侵权,请联系上传者或csdn删除
本资源转载自网络,如有侵权,请联系上传者或csdn删除
TCP/IP是一种网络协议,是互联网的基础协议。TCP/IP的全称是Transmission Control Protocol/Int
er
net Protocol,即传输控制协议/互联网协议,它包括了许多协议,如TCP、IP、UDP、HTTP、FTP等。
TCP/IP
Illustrated
是一本介绍TCP/IP协议的经典书籍,该书由美国计算机科学家W. Richard Stevens编著,共分为三卷,包括了TCP协议、IP协议、UDP协议、ICMP协议、IP路由、DNS协议、NFS协议、SNMP协议、SMTP协议、POP协议、TELNET协议、FTP协议、HTTP协议等众多协议。
通过TCP/IP
Illustrated
这本书,我们可以更深入地了解TCP/IP协议的原理和工作机制,以及各个协议的作用和交互细节。这对于网络工程师和网络安全工作者来说是一本非常重要的参考书。
在现代社会中,计算机网络已经成为了各种科技和应用的基础设施。而TCP/IP协议又是计算机网络的核心和基础。因此,对于计算机网络领域的从业人员以及对计算机网络感兴趣的人,学习TCP/IP协议是非常必要的。TCP/IP
Illustrated
这本书是学习TCP/IP协议的一个很好的工具和资料。
忆_恒心:
ChatGPT前传
EmotionFlying:
The Illustrated Transformer【译】
一个偶像:
PCA(主成分分析)与FA(因子分析)的直白理解
LiM_Z:
NMT:神经网络机器翻译
qq_53137116: