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. 【解决了一个小问题】vm-select中的`search.maxUniqueTimeseries`参数比vm-storage中的参数更大导致的问题

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 为了让vm查询更大的数据范围,修改了vm-select的参 ...

  2. Dubbo3应用开发—Dubbo注册中心引言

    Dubbo注册中心引言 什么是Dubbo注册中心 Dubbo的注册中心,是Dubbo服务治理的⼀个重要的概念,他主要用于 RPC服务集群实例的管理. 注册中心的运行流程 使用注册中心的好处 可以有效的 ...

  3. 深度学习应用篇-自然语言处理[10]:N-Gram、SimCSE介绍,更多技术:数据增强、智能标注、多分类算法、文本信息抽取、多模态信息抽取、模型压缩算法等

    深度学习应用篇-自然语言处理[10]:N-Gram.SimCSE介绍,更多技术:数据增强.智能标注.多分类算法.文本信息抽取.多模态信息抽取.模型压缩算法等 1.N-Gram N-Gram是一种基于统 ...

  4. 同时配置github和gitee秘钥

    1.设置用户名和邮箱 git config --global --list 查看全局配置信息 git config --global --list 删除配置:必须删除该设置 git config -- ...

  5. 关于elementui日期组件 date.getHours() is not a function 等问题

    问题 日期控件中,假设当前显示日期为2020-01-01,现在需要修改为2020-01-03:点开日期组件框点击选择其他日期时, 控制台有可能会报错,显示 date.getHours()  is  n ...

  6. Ubuntu 23.04 正式发布

    Ubuntu 23.04 "Lunar Lobster" 是 Ubuntu 操作系统的最新短期支持版本,该版本将获得 9 个月的支持,直到 2024 年 1 月.如果你需要长期支持 ...

  7. 基于minsit数据集的图像分类任务|CNN简单应用项目

    Github地址 Image-classification-task-based-on-minsit-datasethttps://github.com/Yufccode/CollegeWorks/t ...

  8. 尴尬:在Excel中为指定数据插入饼图失败

    本来是非常非常简单的一个需求,即便不会,随便百度下也都有说明. 可自己却在一次紧急工作中因此耽误了时间,需求是需要插入一个饼图但因操作错误一直无法正确显示饼图数据,非常尴尬,干脆记录下这一刻. 尴尬1 ...

  9. 小知识:统计Oracle的日归档量

    首先这对于Oracle DBA来说是个初级问题,即使不熟悉的初级DBA也可以快速在网上搜索到现成的SQL语句. 网上搜到的查询SQL基本类似这样的逻辑: select trunc(completion ...

  10. 24.3 向量化异常VEH--《Windows核心编程》

    Windows 提供了向量化异常处理(vectored excepation handing,VEH)机制.程序可以注册一个函数,每当异常发送或者一个未处理异常脱离标准SEH的控制时,这个函数就会被调 ...