Attention机制最早还是要来源Bengio在2015年发表的一篇文章Neural machine translation by jointly learning to align and translate,后面的self Attention 和 transform都是在此基础上进行演变而来的,因此详细理解这里的attention机制,将很有利于理解后面的transform,更有利于理解VIT的transform的应用

说起attention,这个注意力机制到底是怎么工作的,简单点来说其实就是相关性,且这个相关性是可以通过数据训练反向传播进行优化的,使其关注更相关的部分,这就是注意力机制的最本质的理解,这样说,可能还是不够容易理解,下面就通过实例进行讲解,该实例采用的就是SimpleRNN来设计attention。

Seq2seq的编码器和解码器的内部可以是RNN、可以是LSTM等如下:

这里需要特殊提醒一下就是输入的X和输出的h_t应都是向量

SimpleRNN如何引用attention,这里还需要引入seq2seq的问题,他的问题其实也是RNN、LSTM存在的问题,即长依赖问题,当编码器输入完整个序列时,输出最后一个状态h_m,使用这个状态输入到解码器上,如下图,此时令S0=h_m,然后输入到解码器,获取对应的解码输出,这个就是典型的RNN典型的seq2seq模型,但是存在的问题就是解码所有的状态输出只依赖解码输出的最后一个状态h_m,这就会导致如果是长序列翻译效果不佳的现象,因为h_m代表的是编码器输入的所有信息,那么前面的h_1、h_2、h_3、、、h_m-1的状态就是局部的信息,如果输入到解码器包含所有h的状态是不是可以解决长依赖问题呢?理论上是可以解决的,但是如何关联呢?

Bengio在2015年发表的一篇文章Neural machine translation by jointly learning to align and translate首次提出了关联的方法,他认为如果获取到编码器的各个阶段状态并可以获取当前解码器的输出和编码器最相关的那个状态,则更有利于解决长依赖问题,那么他给出的方法如下:

该文章计算相关性的方法很简单就是计算当前输入到解码器的状态S0和之前编码器输出的所有状态求相关性系数对应的所有α,然后获取的α是介于0-1的数且所有的α加起来等于1,可以看成对各状态的相关性系数,然后把计算出的相关性系数分别乘上各自对应的状态累加获得上下文向量C0,该C0向量携带了编码器的所有信息,且该信息是针对解码器的输出的相关性最大的信息,那么是如何后去使用α和C的呢?

上图可以发现,计算α其实很简单就是把S0状态和编码器对应状态h直接进行concat,然后乘上参数矩阵W,该矩阵是训练获取的,然后通过tanh激活函数使其值规范到-1到1之间,此时输出的还是一个向量,因此需要和向量V进行矩阵相乘,这样可以得到一个实数,V向量是通过训练得到的,同时V存在的目的是求取一个实数,同样的方式计算S0和其他h的相关性系数,然后计算出来的所有的α通过softmax计算对应的概率值,同理可以计算其他的上下文C0的值:

那么如何计算解码器的输出S1 S2 S3 ,,,,St呢?如何使用C0,C1,C2,,,,,Ct呢?

如果没有注意力机制,是怎么计算S1的呢?在SimpleRNN中直接把上一个解码器的输出的

ViT (Vision Transformer) ---- SimpleRNN + Attention相关推荐

  1. ViT (Vision Transformer) ---- SimpleRNN + Self-Attention

    首先attention第一次是在2015年应用在Seq2Seq模型上的,该模型有两个网络一个是Encoder,一个是decoder,后来研究者们发现,attention不仅仅可以应用到Seq2Seq模 ...

  2. VIT(vision transformer)结构解析

    文章目录 背景 网络结构 VIT简介 VIT模型概述 参考 transformer的出现彻底改变了自然语言处理的世界,然而在计算机视觉中,注意力机制保持原卷积网络整体结构,常与卷积网络结合.或是取代卷 ...

  3. ViT(Vision Transformer)学习

    ViT(Vison Transformer)学习 Paper:An image is worth 16×16 words: transformers for image recognition at ...

  4. ViT (Vision Transformer) ---- Transformer Model(2)

    上一节详细的介绍了transform的组件,本节就通过组件进行组装transform Self-attention层: 简化: 多头self-attention 上面是单头self-attention ...

  5. ViT (Vision Transformer) ---- Transformer Model(1)

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

  6. ViT (Vision Transformer) ---- Seq2Seq

    对于seq2seq模型,网上很多文章直接就把抽象模型拿出来,这样对初学者很不友好,这里采用例子进行阐述,最后在通过抽象模型理解 英语翻译成德语 这个网站有很多的数据集 Tokenization 和创建 ...

  7. ViT (Vision Transformer) ---- Vision Transformer

  8. ViT (Vision Transformer) ---- Text Generation(文本生成器)

    使用RNN对文本预测 假如输入的文本是:the cat sat on the ma     那么下一个字符什么呢? 这里采用的是many to many模型,如下: 此时模型的输出字符概率为: 如何训 ...

  9. ViT (Vision Transformer) ----LSTM网络

    LSTM是对RNN的改进,主要改进RNN的梯度消失的问题即长依赖问题,那么具体如何解决的呢? 由上图可以发现增加了三个门,那么这三个门是如何解决长依赖问题的呢?LSTM最大的设计就是传输带C,就是通过 ...

最新文章

  1. AD ---- 活动目录的日常管理操作
  2. python虚拟环境安装pyqt5_python虚拟环境安装pyqt5
  3. Flutter开发之HTTP网络请求:Http库(27)
  4. Ubuntu下安装node和npm
  5. 1.1 Java类的封装
  6. 用TLS实现安全TCP传输及配置和访问https的web服务(转)
  7. 基于工程经验的『RESTful接口设计规范』
  8. NYOJ 1068 ST(线段树之 成段更新+区间求和)
  9. 实战:从Mysql数据库frm文件中,提取表结构创建SQL语句
  10. MySql免安装版绿化版安装配置,附MySQL服务无法启动解决方案
  11. Qt视频直播软件--项目实战(Day7)
  12. win10安装visio2010出错_win10安装office2010时显示错误1907如何解决
  13. 注册apple id方法
  14. lucene 学习笔记之飞龙在天
  15. win7 命令行开启WiFi
  16. FreeBSD新的JAIL管理工具QJAIL
  17. 盘点2017全球最优秀的6款免费远程桌面软件
  18. win7下安装myODBC和使用
  19. Qt QTabWidget插入widget(重要的是编程思想)
  20. 射频毫米波芯片设计11:基于奇偶模法分析设计射频微波Wilkinson功分器

热门文章

  1. TCP协议的缺陷及其可选替代方案
  2. 如何更好利用大数据的优势
  3. 大数据可视化设计需遵守什么原则
  4. 如何使用大数据算法改善有效链接
  5. java jndi jboss_jboss结合spring中如何配置jndi
  6. 计算机word艺术字形状设置,4.11 Word 2016 自定义艺术字的形状效果,制作漂亮的艺术字...
  7. CDH6.2.1安装Kafka出现的问题
  8. R+大地图时代︱ leaflet/leafletCN 动态、交互式绘制地图(遍地代码图)
  9. possible SYN flooding on port 3690 Sending cookies
  10. Ubuntu安装配置JDK、Tomcat、SVN服务器