Transformer

从整体框架来讲,Transformer其实就是encode-decode框架,即就是编码解码。只不过在编码和解码的内部比较复杂,经过了多次复杂计算。

比如说,encode编码阶段,其内部整体框架如图所示。

在图上可以看出,首先输入所有的向量,然后经过多次block的计算,最终得到相同数量的输出结果向量。其中每个block内部包含一层自注意力机制、一层全连接层。同样,在自注意力机制中,计算每个向量时都会考虑其他元素。区别是,在transformer的自注意力机制结束后,不是直接送入下一层,而是将自注意力机制的结果和输入向量相加后再送入下一层

Encoding 编码

其中,详细来讲,整个encode的详细计算过程如图所示。

在上图中,其右侧为官方所给出的encoding内部的结构。其过程为:

  1. 首先,将输入向量输入到embedding中,从而得到embedding后的结果,然后加上位置编码结果。

  2. 再将结果送入block。再block中首先进行多头注意力机制,然后将执行Add & Norm,Add & Norm指的是首先执行Residual,而Residual如下图所示,指的是将自注意力机制的结果和输入向量进行相加,其结果为residual集合。

  3. 然后进行layer norm操作,该操作如下图所示,输入一个向量则对应输出一个向量,在此过程中首先计算输入向量的均值、方差,以及标准差,然后根据以下公式

    分别计算norm后的结果。

  4. 最后,将结果送入全连接层,同样再进行一次Add和Norm操作,输出结果向量,编码阶段完成。

Decoding 解码

整体而言,以语音识别为例,再解码阶段,首先将编码结果作为输入,具体过程:

  • 第一步:自定义一个指定符号的开始字符,和编码结果一起输入到解码器中,解码器会输出结果再进行一次softmax,最终输出一个结果向量,向量值为第一个词是词库里每一个词的概率,其最大概率所对应的字符即为第一个词。

  • 第二步:将第一步的记过作为输入,输入到解码器中,用同样的方法得出第二个值,一次类推,最终得到输出结果。

具体如下图所示。

解码过程中,官网所给出的详细解码过程如图所示:

整体上看,和解码过程非常的类似,区别就是再解码过程中多了一层Masked注意力机制。Masked self-attention的核心是:在计算每一个元素时,并不是和之前一样考虑所有的输入元素,而是只考虑当前计算元素之前的元素,并不考虑还未计算的元素。如下图所示。

在上图左图中可以清晰的看到,在计算b1的时候,不考虑任何元素,因为在计算b1时,还未生成任何元素,即就是a1之前没有其他输入元素。在计算b2时,只考虑a2前面的元素a1,而不考虑a2之后的元素(a3, a4)。同样计算b3时,只考虑a1, a2而不考虑a4。计算过程如上图右图所示。其实也很好理解,在解码阶段中,当计算a2时,a3和a4并未生成。

编码->解码

在整个transformer中,分为编码和解码阶段。其中在解码阶段的中间一个block(如上面解码框架图所示)中,包含编码的两个输入和解码阶段第一个block的输出结果,一起输入到中间的block。如下图中蓝色圈所示。整个block称为cross attention。

在cross attention中,具体计算如下图所示,首先,从编码的输出结果中计算得出ki和vi,在通过将解码阶段第一个block的输出结果计算得到q,然后,使用ki和q进行一定的得分运算,得到权重分数后将所有对应的vi和得分进行加权求和得到最终结果,送入到第三个block,即全连接层。

总结

以上就是对于本次学习的整个过程,在自然语言处理里transformer网络使用较为普遍,所以在此记录一下,以供日后学习和复习,存在问题的话记得留言指出。

Transformer 网络相关推荐

  1. 基于视觉的在线地图:一种Transformer网络方法

    来源丨 计算机视觉深度学习和自动驾驶 arXiv在2021年10月3日上传论文"Translating Images into Maps",作者来自英国University of ...

  2. GNN手绘草图识别新架构:Multi-Graph Transformer 网络

    点击我爱计算机视觉标星,更快获取CVML新技术 本文介绍一篇比较小众但非常有意思的手绘草图识别的新文章<Multi-Graph Transformer for Free-Hand Sketch ...

  3. 两个让Transformer网络变得更简单,更高效的方法

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Sainbayar Sukhbaatar, Armand Joulin 编 ...

  4. Transformer网络

    Transformer网络可以利用数据之间的相关性,最近需要用到这一网络,在此做一些记录. 目录 1.Transformer网络概述 2.transformer推理训练 3.nn.transforme ...

  5. 用于点云视频时空建模的点4D transformer网络(CVPR 2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam@知乎 来源丨 泡泡机器人SLAM 标题:Point 4D Transfor ...

  6. IAT:实时完成暗光增强, 曝光矫正的超轻量级Transformer网络

    作者丨信息门下奶狗@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/535695807 编辑丨极市平台 导读 本工作提出了一种超轻量级的快速照明自适应Transform ...

  7. BMVC 2022 (东京大学)仅需90K参数!实时完成低光增强, 曝光矫正的超轻量级Transformer网络IAT,已开源...

    关注公众号,发现CV技术之美 本文由 52CV 粉丝投稿,作者:信息门下奶狗,知乎地址:https://zhuanlan.zhihu.com/p/535695807 我们提出Illumination- ...

  8. BMVC 2022 (东京大学)仅需90K参数!实时完成低光增强, 曝光矫正的超轻量级Transformer网络IAT,已开源

    本文由 52CV 粉丝投稿,作者:信息门下奶狗,知乎地址:https://zhuanlan.zhihu.com/p/535695807 我们提出Illumination-Adaptive-Transf ...

  9. [自注意力神经网络]Swin Transformer网络

    一.概述 Swin Transformer是一个用了移动窗口的层级式Vision Transformer. 在图像领域,Transformer需要解决如下两个问题: ①尺度问题:同一语义的物体在图像中 ...

最新文章

  1. 新兴解决方案增强了电动汽车电源(功耗)管理
  2. Continuous Intervals Gym - 102222L(2018宁夏邀请赛暨2019银川icpc网络预选赛)
  3. 前端学习(1272):Vue前端路由
  4. 【HihoCoder - 1880】地铁环线 (前缀和,水题,模拟)
  5. ros开发语言python效率_Python 的开发效率真的比 Java高吗?
  6. UVA11082 行列模型
  7. 用C语言开发最简单的小游戏(弹跳小球)
  8. matlab 多项式输入,MATLAB多项式
  9. 中国移动智能网关(光猫)超级管理员账户密码 型号: PT924G
  10. QtQuick TableView 操作
  11. Lightroom Classic CC 2019 for Mac(Lr CC 2019破解版)永久激活方法
  12. 电路与电子4.3.5隔离放大器和音频功率放大器
  13. 【Linux】进程终止与进程等待/僵尸进程与孤儿进程
  14. 这个好玩!用Python识别花卉种类,并自动整理分类!
  15. 谷粒商城高级篇(38)——异步编排之商品详情查询
  16. 余弦s=Acos(wt+φ)
  17. java心跳 谁发谁_java 心跳机制
  18. FIAS互动分析系统
  19. 八羧基铜酞菁[CuPc(COOH)8],酞菁铜的相对分子质量介绍
  20. 南通大学计算机科学与技术学院电话,2017年南通大学计算机科学与技术学院江苏省内第二批本科(院校代码:1301)...

热门文章

  1. C# vs2012 如何实现手写识别?快来看看吧~
  2. 投资中国就是投资希望 金融危机中的外资走势评析
  3. 组合数求法、卡特兰数
  4. 扒一扒航测人口中的“黑卡”
  5. Python编写动量交易策略
  6. 刚刚入职新公司,千万不要因为自己的失误被开除
  7. 2014年阿里巴巴校园招聘-软件研发工程师笔试题
  8. 找回Win10右键菜单固定到“开始”屏幕选项
  9. 云南大学计算机专业双一流排名,2017云南省大学双一流学科排行榜: 云南大学第一...
  10. Android12系统上支持Android手机的usb网络共享