Transformer 网络
Transformer
从整体框架来讲,Transformer其实就是encode-decode框架,即就是编码解码。只不过在编码和解码的内部比较复杂,经过了多次复杂计算。
比如说,encode编码阶段,其内部整体框架如图所示。
在图上可以看出,首先输入所有的向量,然后经过多次block的计算,最终得到相同数量的输出结果向量。其中每个block内部包含一层自注意力机制、一层全连接层。同样,在自注意力机制中,计算每个向量时都会考虑其他元素。区别是,在transformer的自注意力机制结束后,不是直接送入下一层,而是将自注意力机制的结果和输入向量相加后再送入下一层。
Encoding 编码
其中,详细来讲,整个encode的详细计算过程如图所示。
在上图中,其右侧为官方所给出的encoding内部的结构。其过程为:
首先,将输入向量输入到embedding中,从而得到embedding后的结果,然后加上位置编码结果。
再将结果送入block。再block中首先进行多头注意力机制,然后将执行Add & Norm,Add & Norm指的是首先执行Residual,而Residual如下图所示,指的是将自注意力机制的结果和输入向量进行相加,其结果为residual集合。
然后进行layer norm操作,该操作如下图所示,输入一个向量则对应输出一个向量,在此过程中首先计算输入向量的均值、方差,以及标准差,然后根据以下公式
分别计算norm后的结果。
最后,将结果送入全连接层,同样再进行一次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 网络相关推荐
- 基于视觉的在线地图:一种Transformer网络方法
来源丨 计算机视觉深度学习和自动驾驶 arXiv在2021年10月3日上传论文"Translating Images into Maps",作者来自英国University of ...
- GNN手绘草图识别新架构:Multi-Graph Transformer 网络
点击我爱计算机视觉标星,更快获取CVML新技术 本文介绍一篇比较小众但非常有意思的手绘草图识别的新文章<Multi-Graph Transformer for Free-Hand Sketch ...
- 两个让Transformer网络变得更简单,更高效的方法
点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Sainbayar Sukhbaatar, Armand Joulin 编 ...
- Transformer网络
Transformer网络可以利用数据之间的相关性,最近需要用到这一网络,在此做一些记录. 目录 1.Transformer网络概述 2.transformer推理训练 3.nn.transforme ...
- 用于点云视频时空建模的点4D transformer网络(CVPR 2021)
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨paopaoslam@知乎 来源丨 泡泡机器人SLAM 标题:Point 4D Transfor ...
- IAT:实时完成暗光增强, 曝光矫正的超轻量级Transformer网络
作者丨信息门下奶狗@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/535695807 编辑丨极市平台 导读 本工作提出了一种超轻量级的快速照明自适应Transform ...
- BMVC 2022 (东京大学)仅需90K参数!实时完成低光增强, 曝光矫正的超轻量级Transformer网络IAT,已开源...
关注公众号,发现CV技术之美 本文由 52CV 粉丝投稿,作者:信息门下奶狗,知乎地址:https://zhuanlan.zhihu.com/p/535695807 我们提出Illumination- ...
- BMVC 2022 (东京大学)仅需90K参数!实时完成低光增强, 曝光矫正的超轻量级Transformer网络IAT,已开源
本文由 52CV 粉丝投稿,作者:信息门下奶狗,知乎地址:https://zhuanlan.zhihu.com/p/535695807 我们提出Illumination-Adaptive-Transf ...
- [自注意力神经网络]Swin Transformer网络
一.概述 Swin Transformer是一个用了移动窗口的层级式Vision Transformer. 在图像领域,Transformer需要解决如下两个问题: ①尺度问题:同一语义的物体在图像中 ...
最新文章
- 新兴解决方案增强了电动汽车电源(功耗)管理
- Continuous Intervals Gym - 102222L(2018宁夏邀请赛暨2019银川icpc网络预选赛)
- 前端学习(1272):Vue前端路由
- 【HihoCoder - 1880】地铁环线 (前缀和,水题,模拟)
- ros开发语言python效率_Python 的开发效率真的比 Java高吗?
- UVA11082 行列模型
- 用C语言开发最简单的小游戏(弹跳小球)
- matlab 多项式输入,MATLAB多项式
- 中国移动智能网关(光猫)超级管理员账户密码 型号: PT924G
- QtQuick TableView 操作
- Lightroom Classic CC 2019 for Mac(Lr CC 2019破解版)永久激活方法
- 电路与电子4.3.5隔离放大器和音频功率放大器
- 【Linux】进程终止与进程等待/僵尸进程与孤儿进程
- 这个好玩!用Python识别花卉种类,并自动整理分类!
- 谷粒商城高级篇(38)——异步编排之商品详情查询
- 余弦s=Acos(wt+φ)
- java心跳 谁发谁_java 心跳机制
- FIAS互动分析系统
- 八羧基铜酞菁[CuPc(COOH)8],酞菁铜的相对分子质量介绍
- 南通大学计算机科学与技术学院电话,2017年南通大学计算机科学与技术学院江苏省内第二批本科(院校代码:1301)...
热门文章
- C# vs2012 如何实现手写识别?快来看看吧~
- 投资中国就是投资希望 金融危机中的外资走势评析
- 组合数求法、卡特兰数
- 扒一扒航测人口中的“黑卡”
- Python编写动量交易策略
- 刚刚入职新公司,千万不要因为自己的失误被开除
- 2014年阿里巴巴校园招聘-软件研发工程师笔试题
- 找回Win10右键菜单固定到“开始”屏幕选项
- 云南大学计算机专业双一流排名,2017云南省大学双一流学科排行榜: 云南大学第一...
- Android12系统上支持Android手机的usb网络共享