transform是2017年提出来的,当时横扫NLP领域的多个任务,Vaswani et al. Attention Is All You Need. In NIPS,2017.

transform模型是Seq2Seq模型

transform不是RNN

transform是基于attention机制和全连接层的

这里通过最初的基于RNN的Seq2Seq模型,到基于RNN+attention的Seq2Seq模型,在到把RNN去掉全部基于attention的Seq2Seq模型,然后transform模型的思路进行讲解,这里前面几个都是前面讲过的,这里只是简单介绍即可

基于RNN的Seq2Seq模型

先介绍RNN是怎么更新状态的

基于RNN的Seq2Seq模型

这里简单的说一下,为什么在编码器中只需要使用最后一个状态的输出,为什么不使用中间的状态,因为最后一个状态包含了输入的所有信息,中间的状态,包含的信息不全

接着:

基于RNN+attention的Seq2Seq模型

可以发现基于attention的Seq2Seq的模型增加了context状态,通过context状态在计算输出状态h如下:

因此基于attention的RNN解决了长序列依赖问题,因为每个状态都包含了输入的整个信息。

计算context方法

上面采用的计算context方法并不是很常用,常用的方法是如下:

即引入三个矩阵和三个状态,其实本质上和上面的目的是一样的,只是处理方式不同,增加更多的参数,使模型表达能力更强。

他们的区别是什么?其实大家可以这样想,在获取解码器的输出状态时,使用RNN对seq2seq进行建模时,会发现,输入和上一个状态的S进行concat,然后乘上一个矩阵A,那么我们是否可以拆开呢?单独对输入创建一个参数矩阵和单独对状态创建一个矩阵,当然可以啊,两个矩阵的目的都是一样的,增加参数矩阵的表达能力,为了引入注意力机制,就需要计算相关性 ,那么也可以引入一个矩阵即可,因此,本质上transform就是通过计算相关性,然后把输出状态和每个输入的状态都关联起来,至于关联度其实就是相关性了,如何计算相关性,方法很多,而目前比较受欢迎的方法就是transform的这个方法,即设置参数矩阵Q、K、V:

Q矩阵是query就是当前的状态需要和编码器的状态计算相识度,因此需要解码器当前状态S乘上一个参数矩阵Q,表示该矩阵需要询问编码器所有的状态

K矩阵是key的意思,因为解码输出状态Q需要和编码器输出状态计算相关性,那么编码器的输出就是key了,因为每个编码器的输出都需要和Q相乘,因此称为key

V值其实很简单,在Q和K计算输出后是以矩阵,而相关性系数是一个值,因此需要另一个矩阵把Q和K的矩阵值在乘上一个矩阵V使其结果为一个相关性向量,这样就可以获取完整的α了,下面介绍基于RNN和attention的seq2seq模型

从上可以发现key和value的输出向量都是编码器的输出h状态,还是所有的状态,而q的输入是解码器当前的输出S状态,其中S0的状态为h_m,C0初始化为0,把S0和C0进行concat在通过激活函数就可以得到S1了,关键是如何通过attention计算法C1,其实很简单,此时S1和编码器的h_i都是知道的,那么分别创建W_Q矩阵和W_K矩阵和W_V矩阵,q矩阵是解码器当前输出状态S的参数矩阵,K是编码器的输出状态h的参数矩阵,V是为了计算相识度α的矩阵,该输入也是编码器的输出状态。

通过K和q的矩阵相乘,在通过softmax获取相识度α权重,然后计算当前输出状态的上下文C了

基于Attention的Seq2Seq模型

上面的是全部基于attention实现的seq2seq模型,从上可以发现,K和V的输入都是基于编码器的输入x_i,q的输入是解码器的上一个输出x^',其他的很基于rnn的attention类似,这里不过多解释,下面介绍如何组建成transform模型

Attention Layer

把上面模块化形成attention层

Self-attention层

Self-attention层和attention类似,只是这里的输入全为x_i,同样没有RNN网络,只有attention,其中Q、K、V的输入都是x,通过类似的方式及时α值,具体如下:

计算α值:

计算C值:

Self-attention层:

简化:

ViT (Vision Transformer) ---- Transformer Model(1)相关推荐

  1. Transformer课程 业务对话机器人Rasa 3.x Tuning Your NLU Model(二)

    Transformer课程 业务对话机器人Rasa 3.x Tuning Your NLU Model(二) Rasa 官网 https://rasa.com/ Choosing the Right ...

  2. Transformer综述大全(1)【A Survey of Visual Transformers】

    Transformer 1 Introduction 2 原始Transformer 1注意力机制Attention Mechanism 2多头注意力机制Multi-Head Attention Me ...

  3. Transformer综述大全(2)【A Survey of Visual Transformers】

    Transformer 4 TRANSFORMER FOR DETECTION目标检测 1Transformer Neck 1)原始检测器 2)稀疏关注的Transformer 3)空间先验Trans ...

  4. 深入理解深度学习——Transformer:解码器(Decoder)部分

    分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(Attention Mechanism):基础知识 ·注意力机制(Attention Mechanism):注意力汇聚与Na ...

  5. 深入理解深度学习——Transformer:解码器(Decoder)的多头注意力层(Multi-headAttention)

    分类目录:<深入理解深度学习>总目录 相关文章: ·注意力机制(Attention Mechanism):基础知识 ·注意力机制(Attention Mechanism):注意力汇聚与Na ...

  6. Segment Anything Model(SAM)

    Segment Anything Model(SAM)是Facebook Research近来开源的一种新的图像分割任务.模型.Segment Anything Model(SAM)可以从输入提示(如 ...

  7. The Annotated Diffusion Model(翻译)

    The Annotated Diffusion Model(翻译) 来源: https://huggingface.co/blog/annotated-diffusion code: 在这篇博文中,我 ...

  8. 在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图

    在ASP.NET MVC 模型中 选择最好的方法将多个model(数据模型)传递到视图 前提介绍 这个文章我们要讨论,在ASP.NET MVC模型的项目中,怎么选择一个最有效的方式来将多个数据模型(m ...

  9. Django中的Model(字段) - 第五轻柔的code - 博客园

    Django中的Model(字段) - 第五轻柔的code - 博客园 Django ORM 中的批量操作 - AlphaJx - 博客园

  10. Django中的Model(操作表) - 第五轻柔的code - 博客园

    Django中的Model(操作表) - 第五轻柔的code - 博客园

最新文章

  1. 1055 The World‘s Richest (25 分)【难度: 一般 / 知识点: 多关键字排序】
  2. Android Studio Problems
  3. C#LeetCode刷题之#933-最近的请求次数(Number of Recent Calls)
  4. 判断数据类型的几种办法
  5. 用信号量及其PV操作处理实际问题
  6. ROS2 Galactic Depth to World coordinate RGBD相机的深度数据转换到世界坐标系
  7. Android Contentprovider的学习实例总结
  8. 初识kmp算法(呕心沥血之文----看视频+总结)
  9. 虚拟机服务器安装iis报错,Windows2008R2安装iis和iis下搭建web服务器(9.18 第七天)...
  10. jQuery实现广告图片轮播切换
  11. 逐步推进的团队项目准备工作全记录
  12. Zircon - Fuchsia 内核分析 - 启动(平台初始化)
  13. 微软应用商店打不开代码: 0x80131500
  14. 热敏电阻和压敏电阻的区别与特性
  15. 遗传算法(GA)求解TSP问题
  16. ESP32 LVGL8.1 ——Style local style 样式当地的风格 (Style 11)
  17. 三千预算进卡吧的顺口溜是啥
  18. Jackson膜封闭:选择合适的封闭试剂孵化时间和洗涤
  19. Mac上将dmg文件转成iso的方法
  20. oracle11.2.0.4全套安装包及最新补丁包(珍藏版)

热门文章

  1. 8月23号,来上海整整一年
  2. NetBeans 时事通讯(刊号 # 80 - Nov 15, 2009)
  3. redhat as4 上安装 MySQL5
  4. Mybatis 动态传入order by 参数排序无效
  5. python将list转为数组_python如何将list中的字符转为数字
  6. 一个mapper接口有多个mapper.xml 文件_MyBatis 源码解析:映射文件的加载与解析(上)
  7. 山西省职业技能鉴定计算机操作员(中级工)理论知识试卷,山西省职业技能鉴定统一试卷 中级...
  8. DBSCAN聚类︱scikit-learn中一种基于密度的聚类方式
  9. Three.js 学习笔记 - 给跳一跳小游戏添加光源,阴影
  10. JS高程5.引用类型(6)Array类型的位置方法,迭代方法,归并方法