Attention Is All You Need--论文笔记

论文笔记

资料

1.代码地址

2.论文地址

https://arxiv.org/abs/1706.03762

3.数据集地址

论文摘要的翻译

主要的序列转导模型是基于复杂的RNN(循环神经网络)或CNN(卷积神经网络),一个编码器和一个解码器。表现最好的模型还通过注意机制连接的编码器和解码器。我们提出了一个新的简单的网络架构,Transformer,完全基于注意力机制,完全摒弃循环和卷积。在两个机器翻译任务上的实验表明,这些模型在质量上更优越,同时更具并行性,并且需要更少的训练时间。我们的模型在WMT 2014英语-德语翻译任务上实现了28.4 BLEU,比现有的最佳结果(包括集合)提高了2个BLEU以上。在WMT 2014英法翻译任务中,我们的模型在8个gpu上训练3.5天后,建立了一个新的单模型最先进的BLEU分数41.8,这是文献中最佳模型训练成本的一小部分。我们通过将Transformer成功地应用于具有大量和有限训练数据的英语选区解析,证明了它可以很好地推广到其他任务。

1 背景

1.1 自注意力机制

Self-attention
有时称为内注意,是一种将单个序列的不同位置联系起来的注意机制,以便计算该序列的表示。

1.2 端到端记忆网络

端到端记忆网络基于循环注意机制,而不是顺序排列的递归,

2论文的创新点

  • 本文提出了一个新的简单的网络架构,Transformer,完全基于注意力机制,完全摒弃循环和卷积。
  • 用多头自注意取代了编码器-解码器架构中最常用的循环层。

3 论文方法的概述

这里,编码器映射符号表示 ( x 1 , … , x n ) (x_1,…,x_n) (x1xn)的输入序列。, xn)到连续表示序列 z = ( z 1 , … , z n ) z = (z_1,…,z_n) z=(z1zn)。给定 z z z,解码器然后生成输出序列 ( y 1 , … , y m ) (y_1,…, y_m) (y1ym)符号,一次一个元素。在每一步中,模型都是自回归的,在生成下一个符号时,将之前生成的符号作为额外的输入。

3.1 编码器和解码器

  • Encoder
    编码器由 N = 6 N = 6 N=6个相同层的堆栈组成。每一层有两个子层。第一层是多头自注意机制,第二层是简单的、位置完全连接的前馈网络。我们在每一个子层周围使用残差连接,然后进行层归一化。也就是说,每个子层的输出是 L a y e r N o r m ( x + S u b l a y e r ( x ) ) LayerNorm(x + Sublayer(x)) LayerNorm(x+Sublayer(x)),其中 S u b l a y e r ( x ) Sublayer(x) Sublayer(x)是子层本身实现的函数。为了方便这些残差连接,模型中的所有子层以及嵌入层产生的输出维度为 d m o d e l = 512 d_{model} = 512 dmodel=512。解码器架构如下图
    在这里插入图片描述
  • Decoder
    解码器也由 N = 6 N = 6 N=6层相同的堆栈组成。除了每个编码器层中的两个子层之外,解码器插入第三个子层,该子层对编码器堆栈的输出执行多头注意。与编码器类似,我们在每个子层周围使用残差连接,然后进行层归一化。我们还修改了解码器堆栈中的自注意子层,以防止位置关注后续位置。这种掩蔽,再加上输出嵌入被偏移一个位置的事实,确保了位置i的预测只能依赖于位置小于i的已知输出。解码器结构如下图
    在这里插入图片描述

3.2注意力机制

注意力机制实现可以描述为将查询和一组键值对映射到输出,其中查询、键、值和输出都是向量。输出是作为值的加权和计算的,其中分配给每个值的权重是由查询与相应键的兼容性函数计算的。

3.2.1 Scaled Dot-Product Attention

我们称我们的特殊注意力机制为“Scaled Dot-Product Attention”(图2)。输入 d k d_k dk的查询和键以及维度 d v d_v dv的值组成。我们计算查询与所有键的点积,每个点积除以 d k \sqrt{d_k} dk 并应用softmax函数来获得值的权重。
在这里插入图片描述
在实践中,我们同时计算一组查询的注意力函数,它们被打包成一个矩阵 Q Q Q。键和值也打包到矩阵 K K K V V V中。我们计算输出矩阵为: A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V \mathrm{Attention}(Q,K,V)=\mathrm{softmax}(\frac{QK^{T}}{\sqrt{d_{k}}})V Attention(Q,K,V)=softmax(dk QKT)

### 关于 'Attention is All You Need' 论文中自注意力机制的概念解释 #### 自注意力机制定义 自注意力,即内部注意力,是一种特殊的注意力机制,它能够将单个序列中的不同位置相互关联来计算该序列的表示形式[^1]。这种机制允许模型在处理某个词时考虑整个输入序列的信息。 #### 应用领域 此技术已被广泛应用于多个自然语言处理任务之中,比如但不限于阅读理解、抽象摘要创建以及文本蕴含分析等场景中,在这些应用里展示了强大的性能提升效果[^2]。 #### 工作原理概述 具体来说,Attention的工作流程可以通过三个核心组件——Query(查询)、Key(键)和Value(值)来进行描述。输出是由所有的Values经过加权求和得到的结果;而权重则是基于Queries与Keys之间的匹配程度通过Softmax函数进行标准化后的得分决定的[^3]。 #### 实验设置详情 为了验证提出的架构的有效性,研究人员利用了一台配备有八个NVIDIA P100 GPU的强大硬件平台来进行实验性的训练工作。基础版本模型每一步骤耗时约为0.4秒完成一次迭代更新操作,并且总共经历了十万次这样的循环过程或者说持续约十二个小时的时间长度才能达到收敛状态。而对于更大规模配置下的变体,则需要更长时间——大约三十五万六千分钟也就是接近三天半才可结束全部的学习周期[^4]。 ```python import torch.nn.functional as F def scaled_dot_product_attention(q, k, v, mask=None): d_k = q.size()[-1] scores = torch.matmul(q, k.transpose(-2, -1)) / (d_k ** 0.5) if mask is not None: scores = scores.masked_fill(mask == 0, -1e9) attention_weights = F.softmax(scores, dim=-1) output = torch.matmul(attention_weights, v) return output, attention_weights ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wbzuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值