Attention is all you need

Transformer模型

Model Architecture

Transformer结构上和传统的翻译模型相同,拥有encoder-decoder structure

encoder:将一系列输入的符号表示\((x_1...,x_n)\)映射到连续表示\(z=(z_1....,z_n)\)

decoder:将\(z\)解码出系列输出序列\((y_i,....,y_n)\)

模型结构图:

上述结构图中:左侧为encoder结构,右侧为decoder结构

1、encoder结构:整体上encoder由两部分构成:1、Multi-head Attention2、Feed Forwarded构成。在每一部分里面都是通过残差进行连接。(论文中对此的描述为:\(LayerNorm(x+Sublayer(x))\)其中\(x+Sublayer(x)\)就是一个残差连接的操作,而\(LayerNorm\)就是一个Norm所进行的一个操作。)

2、decoder结构整体与encoder相似,只是多了一个Masker Multi-Head Attention结构,这部分结构起到的作用为:因为如果是做序列预测(时间序列、翻译等)一般来说都是不去借助未来的数据,也就是说保证我们在预测\(i\)时候只考虑了\(i\)之前的信息。

This masking, 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.

Attention模型

在Transformer函数中设计的注意模型:

1、Scaled Dot-Product Attention

\[Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V
\]

对于上层结构通过翻译的角度进行理解:

下述步骤都是针对关键字Thinking

第一步imputvalues

第二步:计算Score:通过计算QK的点积;通过分数来确定在对某个位置的单词进行编码时,对输入句子其他部分的关注程度。

第三步:从Dividesofmax就是上述Attention公式里面\(softmax\)部分,后续然后乘V就是一层Attention

第四步:对加权值向量求和,这会在该位置(第一个单词)产生自注意力层的输出

QKV理解视频

https://www.youtube.com/watch?v=OyFJWRnt_AY

补充内容

1、encoder-decoder

https://proceedings.neurips.cc/paper_files/paper/2014/hash/09c6c3783b4a70054da74f2538ed47c6-Abstract.html

2、norm

Training state-of-the-art, deep neural networks is computationally expensive. One way to reduce the training time is to normalize the activities of the neurons.

正则化:\(x=\frac{x-x_{min}}{x_{max}- x_{min}}\)将数据都转化到\([0,1]\);以及标准化:\(x=\frac{x- \mu}{\sigma}\)将数据都转化为0均值同方差。在深度学习中常见4类标准化操作:

1、Bath-Norm;2、Layer-Norm;3、Instance-Norm;4、Group-Norm。这4类标准化化唯一区别就在对样本\(\mu,\sigma\)的计算区别。

定义如下计算公式:

\[\mu_i= \frac{1}{m}\sum_{k\in S_i}x_k
\]
\[\sigma_i= \sqrt{\frac{1}{m}\sum_{k\in S_i}(x_k- \mu_i)^2+\epsilon}
\]

4类标准化区别就在于对于参数\(S_i\)的定义!!!

如:对一组图片定义如下变量:\((N,C,H,W)\)分别代表:batch、channel、height、width

Bath-norm:\(S_i=\{k_C=i_C\}\)

Layer-norm:\(S_i=\{k_C=i_N\}\)

Instance-norm:\(S_i=\{k_C=i_C,K_N=i_N\}\)

Group-norm:\(S_i=\{k_N=i_N, \lfloor \frac{k_C}{C/G} \rfloor=\lfloor \frac{i_C}{C/G} \rfloor\}\)

\(G\)代表组的数量,\(C/G\)每个组的通道数量

对于Layer-normbatch-normInstance-normGroup-norm理解直观的用下面一组图片了解:

图片来源:http://arxiv.org/abs/1803.08494

2.1 Batch-norm详细原理

参考:https://proceedings.mlr.press/v37/ioffe15.html

在原始论文中主要是将Batch-norm运用在图算法(CNN等)中,作者得到结论:通过添加Batch-norm可以加快模型的训练速度,模型效果较以前算法效果更加好

原理:对每一个特征独立的进行归一化

we will normalize each scalar feature independently, by making it have zero mean and unit variance.

对于每一层\(d\)维输入\(x=(x^{(1)},...,x^{(d)})\)通过:

\[\widehat{x}^{(k)}=\frac{x^{k}- E[x^{k}]}{\sqrt{Var[x^{k}]}}
\]

问题一:如果只是简单的对每一层输入进行简单的正则化将会改变该层所表示的内容(原文中提到:对于通过sigmoid函数处理的输入进行正则化将会导致原本应该的非线性转化为线性)

Note that simply normalizing each input of a layer may change what the layer can represent. For instance, normalizing the inputs of a sigmoid would constrain them to the linear regime of the nonlinearity.

通过构建\(y^{(k)}=\gamma^{(k)}\widehat{x}^{(k)}+\beta^{(k)}\)其中\(\gamma^{(k)}=\sqrt{Var[x^{(k)}]}、\beta^{(k)}=E[x^{(k)}]\)

问题二:在训练过程中运用的是全部的数据集,因此想要做到随机优化是不可能的,因为通过小批量随机梯度训练,在每一次小梯度过程中都会产生均值以及方差。(Batch Normalizing Transform

2.2 Layer-norm详细原理

参考:http://arxiv.org/abs/1607.06450

针对Batch-norm的部分缺点以及其在序列数据上的表现较差,提出通过使用Layer-norm在序列数据(时间序列、文本数据)上进行使用

原理:通过从一个训练样例中计算用于归一化的所有神经元输入之和的均值和方差(也就是说直接对某个神经元的所有的输入进行标准化)

we transpose batch normalization into layer normalization by computing the mean and variance used for normalization from all of the summed inputs to the neurons in a layer on a single training case

\[\mu^l= \frac{1}{H}\sum_{i=1}^{H}a_i^l \\
\sigma^l=\sqrt{\frac{1}{H}\sum_{i=1}^{H}(a_i^l- \mu^l)^2}
\]

其中\(H\)代表隐藏层的数量、\(a^l\)代表一层神经元的输入、\(\mu和\sigma\)则分别代表该层神经元的均值以及方差。

2.3 Group-norm

参考:http://arxiv.org/abs/1803.08494

参考

1、http://arxiv.org/abs/1706.03762

论文《Attention is all you need》阅读笔记的更多相关文章

  1. 《MuseGAN: Multi-track Sequential Generative Adversarial Networks for Symbolic Music Generation and Accompaniment》论文阅读笔记

    出处:2018 AAAI SourceCode:https://github.com/salu133445/musegan abstract: (写得不错 值得借鉴)重点阐述了生成音乐和生成图片,视频 ...

  2. (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!

    Introductory guide to Generative Adversarial Networks (GANs) and their promise! Introduction Neural ...

  3. 生成对抗网络(Generative Adversarial Networks,GAN)初探

    1. 从纳什均衡(Nash equilibrium)说起 我们先来看看纳什均衡的经济学定义: 所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处.换句话 ...

  4. 生成对抗网络(Generative Adversarial Networks, GAN)

      生成对抗网络(Generative Adversarial Networks, GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的学习方法之一.   GAN 主要包括了两个部分,即 ...

  5. StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 论文笔记

    StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks  本文将利 ...

  6. 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks

    Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...

  7. 《Self-Attention Generative Adversarial Networks》里的注意力计算

    前天看了 criss-cross 里的注意力模型  仔细理解了  在: https://www.cnblogs.com/yjphhw/p/10750797.html 今天又看了一个注意力模型 < ...

  8. Paper Reading: Perceptual Generative Adversarial Networks for Small Object Detection

    Perceptual Generative Adversarial Networks for Small Object Detection 2017-07-11  19:47:46   CVPR 20 ...

  9. SalGAN: Visual saliency prediction with generative adversarial networks

    SalGAN: Visual saliency prediction with generative adversarial networks 2017-03-17 摘要:本文引入了对抗网络的对抗训练 ...

  10. Generative Adversarial Networks,gan论文的畅想

    前天看完Generative Adversarial Networks的论文,不知道有什么用处,总想着机器生成的数据会有机器的局限性,所以百度看了一些别人 的看法和观点,可能我是机器学习小白吧,看完之 ...

随机推荐

  1. Ubuntu编译Xilinx的u-boot

    博主这里的是Ubuntu20.04LTS+Vivado2017.4+ZedBoard 注意:本文使用的环境变量导入方法是临时的,只要退出当前终端或者使用其他终端就会失效,出现异常问题,请随时expor ...

  2. C/C++ 简单特征码匹配

    特征码定位查杀 简单提取一段特征码字段. 代码编写. #include <stdio.h> #include <Windows.h> #define FileLEN 20 // ...

  3. C/C++ 提权与强制卸载DLL

    权限提升 #include <Windows.h> #include <stdio.h> BOOL SetPrivilege(LPCTSTR lpszPrivilege, BO ...

  4. C/C++ x64 Inline Hook 代码封装

    Hook 技术常被叫做挂钩技术,挂钩技术其实早在DOS时代就已经存在了,该技术是Windows系统用于替代DOS中断机制的具体实现,钩子的含义就是在程序还没有调用系统函数之前,钩子捕获调用消息并获得控 ...

  5. 2024-01-31:用go语言,机器人正在玩一个古老的基于DOS的游戏, 游戏中有N+1座建筑,从0到N编号,从左到右排列, 编号为0的建筑高度为0个单位,编号为i的建筑的高度为H(i)个单位, 起

    2024-01-31:用go语言,机器人正在玩一个古老的基于DOS的游戏, 游戏中有N+1座建筑,从0到N编号,从左到右排列, 编号为0的建筑高度为0个单位,编号为i的建筑的高度为H(i)个单位, 起 ...

  6. CF765F Souvenirs 题解

    题目链接:CF 或者 洛谷 想了很久,然后想起做过的一道题:秃子酋长,一开始以为差不多,结果写着写着就发现不对劲了.最后写出了个神仙回滚莫队解法,感觉很妙,记录下. 进入神仙分析时刻 首先,我们来考虑 ...

  7. Vulkan学习苦旅06:创建渲染通道(VkRenderPass)

    对于一个复杂的图形应用程序,需要多个过程的配合,以生成图像的各个部分.通常,各个过程间存在着依赖关系,例如某个过程生成的图像(输出)被另一个过程使用(作为此过程的输入).在Vulkan中,每个过程被称 ...

  8. OGG-01496 Failed to open target trail file ./dirdat/ra000002, at RBA 2179

    1.问题描述 在启动OGG源端的投递进程时,报错:OGG-01496 OGG-01496 Failed to open target trail file ./dirdat/ra000002, at ...

  9. 使用7-zip进行分卷压缩和解分卷压缩(Windows和Linux)

    现在一共有10个视频,一共313M,我对该文件夹进行分卷压缩,每个tar包100M,压缩过程如下: Windows环境首先选中所有的压缩包,然后在压缩包上单击鼠标右键,然后选择7-Zip,再选择提取到 ...

  10. OAuth2 Authorization Server

    基于Spring Security 5 的 Authorization Server的写法 先看演示 pom.xml <?xml version="1.0" encoding ...