论文笔记:Attention Is All You Need
Attention Is All You Need
2018-04-17 10:35:25
Paper:http://papers.nips.cc/paper/7181-attention-is-all-you-need.pdf
Code(PyTorch Version):https://github.com/jadore801120/attention-is-all-you-need-pytorch
Video Tutorial: https://www.youtube.com/watch?v=S0KakHcj_rs
另一个不错的关于这个文章的 Blog:https://kexue.fm/archives/4765
1. Introduction:
现有的做 domain translation 的方法大部分都是基于 encoder-decoder framework,取得顶尖性能的框架也都是 RNN + Attention Mechanism 的思路。而本文别出心裁,仅仅依赖于 attention 机制,就可以做到很好的性能,并且,这种方法并适用于并行(parallelization)。
2. Model Architecture:
大部分神经序列转换模型(neural sequence transduction models)都有 encoder-decoder structure。此处,encoder 将输入的序列(x1, x2, ... , xn)转换为连续的表示 z = (z1, z2, ..., zn)。给定 z,decoder 然后每一输出一个元素,构成了序列 (y1, y2, ... , ym)。在每一个时间步骤,该模型是 auto-regressive,当产生下一个输出时,会使用上一个时刻产生的符号作为额外的输入(consuming the previously generated symbols as additional input when generating the next)。

2.1 Encoder and Decoder Stacks :
Encoder:encoder 是由 6 个相同的 layer 堆叠起来的。每一个 layer 包括 两个 sub-layers:
第一个是:mutli-head self-attention mechanism ;
第二个是:position-wise fully connected feed-forward network.
每一个这样的 two sub-layers 附近都会用上 residual connection,然后加上 layer normalization。
Decoder:decoder 也有 6 层,不同的是:decoder layer 中包含 3个 sub-layers, which performs multi-head attention over the output of the encoder stack. 类似于 the encoder,我们采用 residual connections,followed by layer normalization. 我们也修改了 the self-attention sub-layer in the decoder。这个 masking,结合了这么一个事实:the output embeddings are offset by one position, 确保对于位置 i 的预测可以仅仅依赖于 the known outputs at positions less than i (less than i 是什么意思???). This maksing, combined with fact that the output embeddings are offset by one position, ensures that the predictions for position i can depend only on the known outputs at positions less than i.

2.2 Attention :
An attention function can be described as mapping a query and a set of key-value pairs to an output, where the query, keys, values, and output are all vectors. 输出可以看做是 the values 的加权组合,给每一个 value 的加权可以计算为:a compatibility function of the query with the corresponding key.
2.2.1 Scaled Dot-Product Attention
我们称我们特定的 attention 为:“Scaled Dot-Product Attention”。输入包括:queries and keys of dimension $d_k$, and values of dimension $d_v$。我们计算 the dot products of the query with all keys, divide each by
and apply a softmax function to obtain the weights on the values.
实际上,我们同时在一个 queries 的集合上计算 attention function,将其打包为 a matrix Q。The keys and values 也被打包为:K and V. 我们计算输出的矩阵为:

两个最常用的 attention functions 是:additive attention,and dot-product (multiplicative) attention.
2.2.2 Multi-Head Attention
用 $d_{model}-dimensional$ keys, values and queries,我们发现:it is beneficial to linearly project the queries, keys and values h times with different, learned linear projections to dk, dk and dv dimensions, respectively. 在每一个这些投影的版本,我们然后并行的执行 attention function,产生 dv-dimensional 的输出 values。这些东西组合起来,然后再次投影,得到最终的 values,如图2所示。
Multi-head attention allows the model to jointly attend to information from different reprentation subspaces at different positions. With a single attention head, averaging inhibits this.

本文才用 h=8 并行的 attention layers,or heads.
2.2.3 Applications of Attention in our Model :

2.3 Position-wise Feed-Forward Networks
除了 attention sub-layers, 我们 encoder and decoder 的每一层都包含一个全连接的 feed-forward network, 单独且平等的适用于每一个位置。这包含:two linear transformations with a ReLU activation in between:

2.4 Embeddings and Softmax
和其他序列转换模型一样,我们利用学习到的 embeddings 来转换输入的符号,然后输出符号为维度是 $d_{model}$ 的向量。
2.5 Positional Encoding
由于我们的模型没有任何 recurrence 和 convolution,为了使得模型充分利用 sequence 的序列信息,我们必须注入相对或者绝对位置的信息。因此,我们将 “Positional encoding” to the input embeddings at the bottoms of the encoder and decoder stacks. 位置编码和 embeddings 有相同的维度,所以这两个东西可以相加起来。
本文我们采用 sine and cosine functions of different frequencies:

其中,pos 是 位置,i 是维度。


论文笔记:Attention Is All You Need的更多相关文章
- Multimodal —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型
看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.这项任务要求模型可以识别图 ...
- Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记
Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...
- 论文笔记:语音情感识别(四)语音特征之声谱图,log梅尔谱,MFCC,deltas
一:原始信号 从音频文件中读取出来的原始语音信号通常称为raw waveform,是一个一维数组,长度是由音频长度和采样率决定,比如采样率Fs为16KHz,表示一秒钟内采样16000个点,这个时候如果 ...
- Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)
Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文, ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- Deep Learning论文笔记之(八)Deep Learning最新综述
Deep Learning论文笔记之(八)Deep Learning最新综述 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感觉看完 ...
- Twitter 新一代流处理利器——Heron 论文笔记之Heron架构
Twitter 新一代流处理利器--Heron 论文笔记之Heron架构 标签(空格分隔): Streaming-process realtime-process Heron Architecture ...
- Deep Learning论文笔记之(六)Multi-Stage多级架构分析
Deep Learning论文笔记之(六)Multi-Stage多级架构分析 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些 ...
- 论文笔记(1):Deep Learning.
论文笔记1:Deep Learning 2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...
- 论文笔记(2):A fast learning algorithm for deep belief nets.
论文笔记(2):A fast learning algorithm for deep belief nets. 这几天继续学习一篇论文,Hinton的A Fast Learning Algorithm ...
随机推荐
- 20165305 Linux安装及学习
一.虚拟机的安装 在根据老师所给的<基于VirtualBox虚拟机安装Ubuntu图文教程>的时候,我发现虚拟化处于被禁用状态,于是我在网上查找了一下解决办法,在我将bios中虚拟化设置为 ...
- LoadRunner录制登录机票网址,并回放,加断言
回放录制登录过程脚本,加断言 在页面登录的过程如下: 1先进入http://127.0.0.1:1080/WebTours/index.htm 2之后获取userSession信息 3在输入信息后点击 ...
- GUI常用对象介绍2
%示意line对象的用法 hf=figure; hl=plot([:]); %示意line对象的属性 get(hl) %设置line的颜色 set(hl,'Color','r'); %设置每个点形状 ...
- GUI常用对象的属性
%常用对象的属性 %.figure %hf=figure; %get(hf); %改变颜色 set Color %set(hf,'Color','w'); %去掉默认的菜单 Menubar %set( ...
- Codeforce 814A - An abandoned sentiment from past (贪心)
A few years ago, Hitagi encountered a giant crab, who stole the whole of her body weight. Ever since ...
- SQL Server双机热备之后项目的FailOver自动连接
SQL Server配置数据库镜像后,可能有朋友们会比较有疑惑,你一下搞两个数据库出来,他们的ip地址都不一样,到时候数据库切换过去了,我的数据库的连接字符串可如何是好?难道还得在代码中去控制是连接哪 ...
- bind的封装
1.bind.call.apply三者的区别: 1)bind的返回值是一个函数体,不会被立即调用 2)call.apply会立即调用,第一个参数都是用来改变this的指向,两者的区别是前者传递参数的时 ...
- 怎样从外网访问内网Django?
本地安装了一个Django,只能在局域网内访问,怎样从外网也能访问到本地的Django呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Django 默认安装的Django端口是8000. 实现步骤 ...
- 【移动端】js禁止页面滑动与允许滑动
禁止页面滑动 通常静止滑动方案:(阻止滑动事件) window.ontouchmove=function(e){ e.preventDefault && e.preventDefaul ...
- Spring AOP(基于代理类的AOP实现)
#基于代理类的AOP实现:step1: 1 package com.sjl.factorybean; /**切面类*/ import org.aopalliance.intercept.MethodI ...