1.由来

在Transformer之前,做翻译的时候,一般用基于RNN的Encoder-Decoder模型。从X翻译到Y。

但是这种方式是基于RNN模型,存在两个问题。
一是RNN存在梯度消失的问题。(LSTM/GRU只是缓解这个问题)
二是RNN 有时间上的方向性,不能用于并行操作。Transformer 摆脱了RNN这种问题。

2.Transformer 的整体框架




输入的x1,x2x_{1},x_{2}x1,x2共同经过Self-attention机制后,在Self-attention中实现了信息的交互,分别得到了z1,z2z_{1},z_{2}z1,z2,将z1,z2z_{1},z_{2}z1,z2分别经过各自的全连接神经网络之后,得到了r1,r2r_{1},r_{2}r1,r2
self-attention的意义是
当使用Transformer模型翻译’’ The animal didn’t cross the street because it was too tired"。当翻译到it时, 我们知道 it 指代的是 animal 而不是street. 所以, 如果有办法可以让 it 对应位置的embedding 适当包含 animal 的信息,就会非常有用. self-attention的出现就是为了完成这一任务.

如上图右侧所示,self-attention会让单词it和某些单词发生比较强的联系, 得到比较高的attention分数.

3.Self-attention机制

3.1Self-attention解释


假设x1,x2∈R1×4x_{1},x_{2}\in R^{1 \times 4}x1,x2R1×4
同时引入三个矩阵,Queries矩阵:WQ∈R4×3W^{Q}\in R^{4 \times 3}WQR4×3,Key矩阵:WK∈R4×3W^{K}\in R^{4 \times 3}WKR4×3,Values矩阵:WV∈R4×3W^{V}\in R^{4 \times 3}WVR4×3

x1x_{1}x1WQW^{Q}WQWKW^{K}WKWVW^{V}WV分别作矩阵乘法,分别得到q1,k1,v1∈R1×3q_{1},k_{1},v_{1}\in R^{1 \times 3}q1,k1,v1R1×3,同理可得到q2,k2,v2∈R1×3q_{2},k_{2},v_{2}\in R^{1 \times 3}q2,k2,v2R1×3

之后来到上图的右半部分,
q1,k1q_{1},k_{1}q1,k1中的对应位置元素相乘再求和(点积的方式)得到q1⋅k1=112q_{1}\cdot k_{1}=112q1k1=112,将1128=14\displaystyle\frac{112}{8}=148112=14,在经过Softmax之后得到0.88,

同理,将q1,k2q_{1},k_{2}q1,k2点积相乘得到q1⋅k2=96q_{1}\cdot k_{2}=96q1k2=96,将968=12\displaystyle\frac{96}{8}=12896=12,在经过Softmax之后得到0.12,

最后将0.88v1+0.12v2=z10.88 v_{1}+0.12v_{2}=z_{1}0.88v1+0.12v2=z1。同样的,可以得到z2z_{2}z2

3.2Self-attention矩阵表示


表示称矩阵形式为
X=(x1x2)∈R2×4X=\left(\begin{array}{ll}{x_{1}} \\ {x_{2}} \end{array}\right) \in R^{2\times4}X=(x1x2)R2×4,分别与WQW^{Q}WQWKW^{K}WKWVW^{V}WV作矩阵乘法,分别得到Q,K,V∈R2×3Q,K,V\in R^{2 \times 3}Q,K,VR2×3Z=Softmax(Q×KT8)VZ=Softmax(\displaystyle\frac{Q \times K^{T}}{8})VZ=Softmax(8Q×KT)V

如果有8个WQW^{Q}WQWKW^{K}WKWVW^{V}WV,就会得到8个的ZiZ_{i}Zi(类似卷积神经网络),那么这8个ZiZ_{i}Zi又该如何组合呢?

这里的话使用了一个全连接的神经网络来组合,将8个ZiZ_{i}Zi拼接成R24×2R^{24\times 2}R24×2,经过一个全连接的神经网络,最终得到ZZZ
Multi-headed Self-Attention整体结构

观察一下结果,下图右是整体的结果,下图左是其中2个attention的结果,以下图左举例,橙色的attention注意力机制“注意到”it与The animal这个关联性较强,而绿色的attention注意力机制“注意到”it与tired关联性较强,这也是设计多个header的原因。

4.Positional Encoding

对于输入的XXX,不仅需要将单词转化成词向量的形式,而且需要加入每个单词的位置的信息,如图所示,输入的x1=x_{1}=x1=词向量+词的位置信息


dmodeld_{model}dmodel为词向量的维度,下图是例子

5.Layer Normalization

使用Layer Normalization的原因是当网络比较深的时候,使用梯度下降法向后传递误差时,误差项会越来越弱,训练起来就会比较慢,比较困难


因此在self-attention之后,加入Layer Normalization(X+Z)(X+Z)(X+Z),得到新的ZZZ

6.Decoder过程

假设Encoder的输出为mmm,如图,将mmm输入到Decoder过程中,此时在红框所在的self-attention中,分别是
q=xWQk=mWKv=mWV\begin{array}{l}{q=x W^{Q}} \\ {k=m W^{K}} \\ {v=m W^{V}}\end{array} q=xWQk=mWKv=mWV

而Decoder最下面的输入为
假设我们现在要翻译一段法语“Je suis etudiant”成英文“I am a student”
而假设目前已经翻译了“I am”,需要对后面进行翻译,那么就将I am转化成词向量输入,在得到I am a之后再次输入,直至完成。
这其中还有一个mask机制,作用是因为我们在训练时需要覆盖还没有输出的单词(通过0,0,0,1,1,1,1,1:1为mask,0为可见)(mask具体是如何表现的,我也有点迷糊,待我研究一下代码再来…)

最后就是Decoder的输出,将蓝色框的向量输入到一个神经网络中去,这个神经网络的输出维度为一个词典的大小,然后经过一个softmax函数,得到概率,取概率最大的作为预测值。

Transformer的损失函数是交叉熵损失

Label smooting: 就是准备标签时不用绝对的0,1序列,可以通过smoothing 也就是正确的值 对应的不是1 而是比如当ϵ=0.05\epsilon=0.05ϵ=0.05时,1−ϵ=0.951-\epsilon=0.951ϵ=0.95 其他的值就是0.05K−1\displaystyle\frac{0.05}{K-1}K10.05
Noam Learing Rate:学习率首先以一个较大的速率增长,达到一定时,以指数的形式进行衰减比较好。

注:上述文章是本人在观看贪心科技视频整理的
链接:https://pan.baidu.com/s/1Ade9NH0D_KiEbKvCTo9UXA 提取码:8J33

Self-Attention与Transformer相关推荐

  1. attention seq2seq transformer bert 学习总结 _20201107

    https://blog.csdn.net/weixin_44388679/article/details/102575223 Seq2Seq原理详解 一文读懂BERT(原理篇) 2018年的10月1 ...

  2. 什么是self-attention、Multi-Head Attention、Transformer

    本文紧接<什么是Encoder-Decoder.Seq2Seq.Attention?>,目的是从输入输出.以及内部数据流和详细的计算过程角度,去剖析self-attention.Multi ...

  3. 从attention到Transformer+CV中的self-attention

    一.总体结构 由于rnn等循环神经网络有时序依赖,导致无法并行计算,而Transformer主体框架是一个encoder-decoder结构,去掉了RNN序列结构,完全基于attention和全连接. ...

  4. Attention Mechanism[Transformer、Transformer-XL、XLNet]

    Content Attention Mechanism--->聚焦关键点 1 History 2 Introduction 3 structure 4 application situation ...

  5. NLP经典论文:Attention、Self-Attention、Multi-Head Attention、Transformer 笔记

    NLP经典论文:Attention.Self-Attention.Multi-Head Attention.Transformer 笔记 论文 介绍 特点 模型结构 整体结构 输入 输出 Attent ...

  6. BOAT: Bilateral Local Attention Vision Transformer

    BOAT Attention 论文标题:BOAT: Bilateral Local Attention Vision Transformer 论文地址:http://arxiv.org/pdf/220 ...

  7. seq2seq到attention到transformer理解

    1.seq2seq 1.1 模型结构 encoder ,decoder都是用RNN实现的 所有信息共用一个语义表示C,C为隐藏状态 缺点:无法表达序列信息 句子长,效果差,丢失信息 训练时: enco ...

  8. 语言模型(五)—— Seq2Seq、Attention、Transformer学习笔记

    按:三个月前的一篇笔记,先发出来,后面还会有第二次学习的笔记,两者结合起来看,更加爽口. 本篇笔记5000余字,可细嚼,亦可跳阅. 机器翻译 本篇笔记中要开始介绍的Encoder-Decoder模型最 ...

  9. attention机制、self-attention、channel attention、spatial attention、multi-head attention、transformer

    文章目录 attention sequence attention attention 与 self-attention channel attention 与 spatial attention m ...

  10. Attention 和 Transformer

    本文参考d2l,搭配知识点和代码,助力一口气搞懂Transformer,参考: chapter_attention-mechanisms-and-transformers https://d2l.ai ...

最新文章

  1. HTML的标签描述22
  2. 又是加拿大!连年拒签NeurIPS参会者被指太荒唐,Hinton亲自过问也没辙
  3. 每日一皮:男人有三宝「胡子、发型和肌肉」...
  4. liunx mysql模块_linux下安装MySQLdb模块_MySQL
  5. 《系统集成项目管理工程师》必背100个知识点-39接驳缓冲和项目缓冲
  6. [svc][op]从历险压缩日志里网站pv uv统计
  7. [文摘20080919]小软件将网页变为3D世界
  8. STM32通用定时器输出PWM控制舵机 —— 重装载值、比较值、当前值
  9. WebForm 分页与组合查询
  10. 如何在centos7上安装FreeIPA的客户端
  11. Atitit 数据库存储引擎 目录 1.1. BLACKHOLE 黑洞引擎 1 1.2. Myisam innodb 1 1.3. Archive 档案类 1 1.4. Fed 连接引擎 2 1.
  12. php万能密码在线视频讲解,万能密码
  13. 玩转windbg软件调试视频教程发布-windbg入门教程
  14. Jekyll 语句语法、功能的实现方法和结构介绍小手册
  15. php网页显示中文乱码的解决办法!
  16. HEVC新技术(一):基于MVC的AMVP技术
  17. tor 安装及使用教程
  18. 全国大学生女子足球锦标赛
  19. SMTPSendFailedException: 554
  20. 肯德基门店 csv

热门文章

  1. C语言程序设计十个币,C语言程序设计复习(10页)-原创力文档
  2. 8个你最想知道的数据中台问题,我们这次聊个透
  3. UltraEdit 27.0.0.24 中文版 — 文本代码编辑工具
  4. Google谷歌未来如何占领“Web3高地”?
  5. 葡萄糖氧化酶(GOD)修饰纳米金(Nano-Au)/壳聚糖(CS)/1-丁基-3-甲基咪唑六氟磷酸盐(BMIMPF6)复合材料
  6. 悟空问答死于知乎十周年
  7. 十一、SpringCloud实用篇_Gateway服务网关
  8. 虎牙直播弹幕抓取 相关资料整理
  9. 制作篇3 - 制作agent-server镜像包
  10. 高分一号影像处理流程