Attention is all you need论文学习笔记

Attention is all you need论文学习笔记

看了Bert的论文,由于基础知识薄弱,且bert本质还是transformer,之前没有接触过所以不太懂,于是看了这篇论文了解一下transformer。
参考:https://cloud.tencent.com/developer/article/1377062,讲的很清楚,图源于该微信公众号文章。

1.背景知识: attention

 		transformer完全利用attention机制来解决自然语言翻译等问题,所谓的attention机制就是将有限的注意力集中在重点信息问题上。当神经网络对语言进行识别时,每次集中于部分特征上,识别更加准确。而衡量这些特征最直观的方法是权重,Attention模型的结果就是在每次识别时,首先计算每个特征的权值,然后对特征进行加权求和,权值越大,该特征对当前识别的贡献就大。 
		首先attention函数的本质是:一个查询到一系列(键key-值value)对的映射
	    计算attention的三个步骤:
		第一步: query 和 key 进行相似度计算,得到权值
		第二步:将权值进行归一化,得到直接可用的权重
		第三步:将权重和 value 进行加权求和

2.Introduction

		该论文用attention机制搭建了整个模型框架,完全避免循环和卷积。
		提出了多头注意力(Multi-headed attention)机制方法,在编码器和解码器中大量的使用了多头自注意力机制(Multi-headed self-		attention)。
		在WMT2014语料中的英德和英法翻译任务上取得了先进结果,并且训练速度比主流模型更快,并行性更好。

3.Model Architecture

Model Architecture
模型主要是编码器和解码器组成
encoder:6层 每层有两个子层,Muti-Head attention、前馈神经网络,其中multi-head self-attention mechanism,用来计算输入的self-attention,第二个子层是简单的全连接网络。
decoder:6层 每层有三个子层,第一个是Masked multi-head self-attention,也是计算输入的self-attention,第二个sub-layer是对encoder的输入进行attention计算。第三个sub-layer是全连接网络,与Encoder相同。
Encoder的输出,会和每一层的Decoder进行结合。
encoder的过程:
input->positional embedding->mutu-head attention->feed-forward
按照encoding的过程介绍
首先介绍一下positional embedding
由于模型不包含循环和卷积,为了让模型利用序列的顺序,必须注入序列中关于词符相对或者绝对位置的一些信息。 为此,将“位置编码”添加到编码器和解码器堆栈底部的输入嵌入中。通过使用不同频率的正弦和余弦函数来计算:(不太懂)
在这里插入图片描述
将原本的input embedding和position embedding加起来组成最终的embedding作为encoder/decoder的输入。
文章提出了缩放版的点积Attention和多头Attention
Scaled Dot-Product Attention:
第一步:输入X,通过3个线性转换把X转换为Q,K,V。例如单词Thinking通过嵌入变换将X1向量分别与Wq,Wk,Wv三个矩阵做点乘得到q1,k1,v1向量
在这里插入图片描述
第二步:向量{q1,k1}做点乘得到得分(Score) 112, {q1,k2}做点乘得到得分96。
第三步:对该得分进行规范,除以8。这个在论文中的解释是为了使得梯度更稳定。之后对得分[14,12]做softmax得到比例 [0.88,0.12]。
第四步:用得分比例[0.88,0.12] 乘以[v1,v2]值(Values)得到一个加权后的值。将这些值加起来得到z1。这就是这一层的输出。求得的z1就包含了其他位置的编码
在这里插入图片描述
接着文章提出了Multi-Head Attention,就是Scaled Dot-Product Attention的过程做H次,然后把输出Z合起来。
Position-wise Feed-forward Networks:在进行了Attention操作之后,encoder和decoder中的每一层都包含了一个全连接前向网络,对每个position的向量分别进行相同的操作,包括两个线性变换和一个ReLU激活输出:
在这里插入图片描述

在解码器中,transformer用到了masked self-attention,因为是生成过程,因此在时刻 i 的时候,大于 i 的时刻都没有结果,只有小于 i 的时刻有结果,因此需要做Mask,所谓的masked就是要做language modelling的时候,不给模型看到未来的信息。沿着对角线把灰色的区域用0覆盖掉。
图源见水印
encoder:
在每个子层我们都模拟了残差网络,每个子层的输出都是
在这里插入图片描述
Sublayer(x) 表示Sub-layer对输入 x 做的映射,
加粗样式
transfomer模型:
在这里插入图片描述

4.Experiment

在这里插入图片描述
可以看出,transformer 用了最少的资源得到了state-of-art的输出回报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值