论文《Attention is all you need》阅读笔记
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 Attention;2、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
\]
对于上层结构通过翻译的角度进行理解:

下述步骤都是针对关键字
Thinking
第一步:imput到values为
第二步:计算Score:通过计算Q和K的点积;通过分数来确定在对某个位置的单词进行编码时,对输入句子其他部分的关注程度。
第三步:从Divide到sofmax就是上述Attention公式里面\(softmax\)部分,后续然后乘V就是一层Attention
第四步:对加权值向量求和,这会在该位置(第一个单词)产生自注意力层的输出
QKV理解视频
https://www.youtube.com/watch?v=OyFJWRnt_AY
补充内容
1、encoder-decoder
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-norm、batch-norm、Instance-norm、Group-norm理解直观的用下面一组图片了解:

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)})\)通过:
\]
问题一:如果只是简单的对每一层输入进行简单的正则化将会改变该层所表示的内容(原文中提到:对于通过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
\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
参考
1、http://arxiv.org/abs/1706.03762
论文《Attention is all you need》阅读笔记的更多相关文章
- 《MuseGAN: Multi-track Sequential Generative Adversarial Networks for Symbolic Music Generation and Accompaniment》论文阅读笔记
出处:2018 AAAI SourceCode:https://github.com/salu133445/musegan abstract: (写得不错 值得借鉴)重点阐述了生成音乐和生成图片,视频 ...
- (转)Introductory guide to Generative Adversarial Networks (GANs) and their promise!
Introductory guide to Generative Adversarial Networks (GANs) and their promise! Introduction Neural ...
- 生成对抗网络(Generative Adversarial Networks,GAN)初探
1. 从纳什均衡(Nash equilibrium)说起 我们先来看看纳什均衡的经济学定义: 所谓纳什均衡,指的是参与人的这样一种策略组合,在该策略组合上,任何参与人单独改变策略都不会得到好处.换句话 ...
- 生成对抗网络(Generative Adversarial Networks, GAN)
生成对抗网络(Generative Adversarial Networks, GAN)是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的学习方法之一. GAN 主要包括了两个部分,即 ...
- StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 论文笔记
StackGAN: Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks 本文将利 ...
- 论文笔记之:Semi-Supervised Learning with Generative Adversarial Networks
Semi-Supervised Learning with Generative Adversarial Networks 引言:本文将产生式对抗网络(GAN)拓展到半监督学习,通过强制判别器来输出类 ...
- 《Self-Attention Generative Adversarial Networks》里的注意力计算
前天看了 criss-cross 里的注意力模型 仔细理解了 在: https://www.cnblogs.com/yjphhw/p/10750797.html 今天又看了一个注意力模型 < ...
- 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 ...
- SalGAN: Visual saliency prediction with generative adversarial networks
SalGAN: Visual saliency prediction with generative adversarial networks 2017-03-17 摘要:本文引入了对抗网络的对抗训练 ...
- Generative Adversarial Networks,gan论文的畅想
前天看完Generative Adversarial Networks的论文,不知道有什么用处,总想着机器生成的数据会有机器的局限性,所以百度看了一些别人 的看法和观点,可能我是机器学习小白吧,看完之 ...
随机推荐
- Windows 堆管理机制 [2] Windows 2000 – Windows XP SP1版本
2.Windows 2000 – Windows XP SP1 2.1 环境准备 环境 环境准备 虚拟机 32位Windows 2000 SP4 调试器 OllyDbg.WinDbg 编译器 VC6. ...
- vscode中文搜索乱码或搜索不到
使用vscode在全局搜索时,代码中的内容无法搜索出来,或者搜索出来是乱码. 经验证:与vscode的语言设置无关,设置为中文或英文都是一样的 后面猜想到会不会与文件自身的编码有关,因为我们项目中的代 ...
- 从零开始配置 vim(3)—— 键盘映射进阶
严格意义上来说,快捷键的绑定应该是键盘映射,将某些键映射为另一些键. 在上篇我们介绍了基本的键盘映射操作,知道了如何 :map.:imap.:vmap.:nmap这些命令来映射键盘快捷键.它们很方便, ...
- win10安装wget,从此可以更快的下载文件 and windows10 下 zip命令行参数详解
1.win10安装wget 1.1安装下载 GNU Wget 1.21.3 for Windows 依次如下: 2.将下载好的wget.exe放到 C:/windows/system32文件夹下 也可 ...
- 揭秘C语言的心脏:深入探索指针与数组的奥秘
欢迎大家来到贝蒂大讲堂 养成好习惯,先赞后看哦~ 所属专栏:C语言学习 贝蒂的主页:Betty's blog 1. strlen()和sizeof的区别 名称 区别 sizeof 1. sizeof是 ...
- CF763E Timofey and our friends animals题解
题目链接:CF 或者 洛谷 简单来说就是求 \([l,r]\) 这些点都存在的情况下,连通块的数量,看到七秒时限,而且每个点相连的边数很少,可以想到离线下来使用莫队类的算法解决 连通块问题,一般可以考 ...
- .NET周刊【1月第3期 2024-01-24】
国内文章 .NET开源的简单.快速.强大的前后端分离后台权限管理系统 https://www.cnblogs.com/Can-daydayup/p/17980851 本文介绍了中台Admin,一款基于 ...
- DBSAT脚本快速收集方法
DBSAT是Oracle官方提供的脚本,用于数据库的安全评估检查,用户可以放心下载使用. 下载链接具体参见MOS: Oracle Database Security Assessment Tool ( ...
- P9801 [NERC2018] King Kog’s Reception
题目传送门 前置知识 线段树 解法 第一眼感觉和 luogu P1083 [NOIP2012 提高组] 借教室 很像.本题同样采用线段树维护,\(sum_{l,r}(1 \le l \le r \le ...
- NC24141 [USACO 2011 Dec G]Grass Planting
题目链接 题目 题目描述 Farmer John has N barren pastures (2 <= N <= 100,000) connected by N-1 bidirectio ...