Attention is all you need阅读笔记

本文深入解析了Transformer模型,一种基于注意力机制的序列转换模型。该模型摒弃了传统的循环和卷积网络,采用堆叠的自注意力层和前馈神经网络,实现了高效并行处理和快速训练。文中还探讨了多头注意力机制、位置编码等关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一) Title

在这里插入图片描述
前言:我又来看老论文了,Transformer去年就在图像领域很火了,当时没有怎么了解这方面的内容,想着有时间的话,看看这方面的内容,要跟得上发展的步伐才行啊!首先先整理下Transformer原始论文中的内容(课上讲过),但是遗忘太多了。打算重新整理下再!不过这边笔记确实写的不好,等熟悉之后再重新修改修改!

(二) Summary

dominant sequence transduction models(显性序列显性转导模型)往往基于复杂的循环神经网络,或者卷积神经网络。并且包含着一个编码器和一个解码器。而注意力机制在编码器和解码器之间的引入能够提升模型的性能
本文中提出了完全基于注意力机制的Transformer,Transformer的优势:

  • 从而完全避免了循环和卷积网络。
  • 并行度更高
  • 训练时间更短

实验结果上的表现:

  • 在WMT 2014 English-to-German translation task上,提升了2BLEU
  • 在WMT 2014 English-to-French translation task上,训练时间缩短了,并且SOTA
  • 同时Transformer具有任务的可推广性

(三) Research Object

希望解决掉循环网络中由于隐状态导致的顺序问题,通过一种self-attention的方式以及非循环或者卷积的方式来实现。

(四) Problem Statement

循环神经网络中存在着一个问题: 隐状态 h t h_t ht是前一个时刻的状态 h t − 1 h_{t-1} ht1以及当前的时刻 t t t的一个函数,这种固有的顺序性使得并行性很难实现,而最近的工作是通过因子分解:factorization tricks以及条件计算:conditional computation.
另一个就是注意力机制成为循环网络的必备项,self-attention机制广泛应用于各种任务中

(五) Method

5.1 Transformer的架构

大多数的序列转导模型都具有编码-解码的结构。通过编码器将输入序列 ( x 1 , . . . , x n ) (x_1,...,x_n) (x1,...,xn)转换成连续表示 z = ( z 1 , z 2 , . . . , z n ) \mathbf{z} = (z_1,z_2,...,z_n) z=(z1,z2,...,zn)。然后给定 z \mathbf{z} z,解码器会生成一个输出序列 ( y 1 , . . . , y m ) (y_1,...,y_m) (y1,...,ym)
Transformer对于编码器和解码器来说,整体框架使用stacked self-attention and point-wise以及全连接层。

这里encoder是由 N = 6 N= 6 N=6个相同的层组成,每一个层都是由两个子层构成的,第一子层为: Multi-head self-attention mechanism。第二个子层是一个simple,position-wise fully connected feed-forward network。并且两个子层都采取了一种残差连接的方式,然后后面再跟着一个layer normalization。也就是每一个子层的输出都是:
O u t p u t = L a y e r N o r m ( x + S u b l a y e r ( x ) ) Output = LayerNorm(x+Sublayer(x)) Output=LayerNorm(x+Sublayer(x))
其中这个 S u b l a y e r ( x ) Sublayer(x) Sublayer(x)是子层以自己的功能实现的函数。这个地方为了能够使用残差连接,就要求 x x x S u b l a y e r ( x ) Sublayer(x) Sublayer(x)的维度是一样的。并且这个维度是512

解码器decoder也是由 N = 6 N=6 N=6个相同的层组成。在解码器中除了包含编码器中的两个子层之外,解码器还多插入了第三个子层,这第三个子层的作用是在encoder stack输出上进行multi-head attention。同时每一个子层都使用了residual connections,然后再进行Layer Normalization。同时还修改了decoder stack中的self-attention sub-layer 来prevent positions from attending to subsequent positions。这里的mask保证了计算的时候能够只依赖已知输出。

5.2 注意力机制

从上图中我们可以看出,输入为 Q , K , V Q,K,V Q,K,V分别对应着query查询,以及键值对。通过操作得到输出,这个输出实质上是对values的一个加权和,这个权重值的计算是由query以及对应的key的compatibility function函数计算得到.
这里需要对这些矩阵, Q ∈ R M × d , K ∈ R N × d , V Q \in R^{M \times d},K \in R^{N \times d},V QRM×d,KRN×d,V进行详细说明, Q Q Q可以看成是 M M M个维度为d的向量(也就是一个长度为M的sequence的向量表示)拼接而成,key可以看成是 N N N个维度为d的向量(长度为N的序列的向量表示),这样的话,计算 Q K T QK^T QKT的一个过程就是相当于是利用嵌入向量进行内积,然后得到实际上是每个word之间的一个相关程度。
attention的计算方式可以有加性attention以及点乘attention,以下的注意力指的是点乘attention,只不过这里多了一个缩放因子 1 d k \frac{1}{\sqrt{d_k}} dk 1,这里对于加性attention做一点补充,论文中提到加性注意力是通过带有一个隐层的feed-forward network计算compatibility function实现的,理论上和点乘attention相同,不过点乘attention更快,而且效率更高,更加方便使用矩阵运算。
在这里插入图片描述在这里插入图片描述
疑问是

  • 这里为什么有缩放因子 1 d k \frac{1}{\sqrt{d_{k}}} dk 1
    首先假设 Q , K Q,K Q,K中元素均值为0,方差为1.由上面的信息我们可以知道 A t t ( i , j ) = Q ( i ) K ( j ) T Att(i,j) = Q(i)K(j)^T Att(i,j)=Q(i)K(j)T,我们假设 Q ( i ) , K ( i ) Q(i),K(i) Q(i),K(i)中每一个元素都是相互独立的随机变量, Q ( i ) Q(i) Q(i)中的每一个元素和 K ( i ) K(i) K(i)中的每一个元素都是相互独立的,记作 Q ( i ) = [ X
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值