本文主要介绍了transformer模型的大概原理及模型结构。这篇学习笔记的学习资料主要是《Attention is All you Need》这篇神作,还有两位大神的指点(见参考资源),希望通过这篇学习笔记让刚入门transformer模型的小伙伴们有一个大致的认识!

       其实,在刚开始提出tarnsformer这个模型时是用在机器翻译中,但是,BERT、GBT等模型中transformer表现很好。不同于RNN和CNN,它没有采用卷积和循环神经网络的结构,仅仅采用多头注意力机制,这也使transformer拥有了很好的并行性。而且,由于采用多头注意力机制而使transformer吸收了卷积神经网络中具有多通道输出的优势。

      这个模型主要采用Encoder栈和Decoder栈的模式,这些Encoder的结构相同,但是每一个Encoder的参数是不同的,需要单独训练,Decoder也是如此,但是Encoder和Decoder的结构是不同的。预训练模型中有一个Albert,就是通过共享transformer中这些层的参数达到减少bert参数的目的。

下图是Transformer的整体结构:

        Encoder主要由两部分组成:注意力机制和前馈神经网络。在进入Encoder之前还有输入部分,其中,输入部分分为Embedding和位置嵌入。Embedding的作用是给定任何一个词,学习一个向量来表示它。之所以要引入位置编码就是因为transformer不同于RNN,RNN是按照时序依次处理,而transformer由于引进了多注意力机制可以同时处理多个输入,这样做加快了速度,但是忽略了单词的序列关系,所以要利用位置编码加以识别。

       下图是注意力机制的计算公式,Q(qury)、K(key)、V(value)分别是三个矩阵,V这个权重是等价于Q和K的相似度。通过softmax(归一化指数函数)处理,算出相似度,再利用V进行加权,最后确定出注意力值。同时,多个头就会有多个输出,需要和在一起输出。在多头注意力机制的末端还有残差网络,Layer Normalization是针对样本去进行处理,而Batch Nomalization是针对每一个特征进行处理,由于针对特征进行处理时,样本的长度变化比较大的时候,小批量计算均值和方差的时候抖动会比较明显,故Layer Normalization较Batch Nomalization效果更好,所以使用之。

        在经过输入部分后进入注意力机制部分时,将一条线复制成三条,这里的三条线分别代表Q、K、V,三者值相等,将自己本身作为输入值,所以叫自注意力机制。

         之所以使用残差网络连接的原因是在公式中由于最后一行是1+……,所以可以缓解了梯度的消失,模型使用了残差网络连接可以增加深度和准确度。

       Encoder的输出会作为Decoder的输入,从多头注意力层输入。Decoder与Encoder在结构上的不同主要是增加了一个交互层,由于它采用自回归机制,所以在Decoder中增加了一个带掩码的注意力机制,从而保证在t时刻输入时不会看到t时刻之后的那些输入,使得训练和预测的时候行为一致。负责Encoder和Decoder之间的交互,他们的工作机制是每一个Encoder的值都要和所有的Decoder分别进行交互,最终得出结果。Decoder中中间那个注意力机制层使用的就不再是自注意力机制,这里的前面两条线代表V和K,来自Encoder,两者值相等,而最后一条线代表Q来自解码器下一个Attention的输入。这里的意义是在解码时根据输入的不同,根据当前的那一个向量,在编码器的输出里挑选感兴趣的东西,即“注意”到的东西,没有被“注意”到的东西就被忽略了。

如果这篇文章对你有一点点帮助的话,记得“三键三连”哦!点点关注,爱你么么哒!

参考资源:

论文:《Attention is All you Need》

B站up主:跟李沐学AI、NLP从入门到放弃     两位大神真的讲的超级好!i了i了!

transformer模型的奥秘-学习笔记相关推荐

  1. 《南溪的目标检测学习笔记》——模型预处理的学习笔记

    1 介绍 在目标检测任务中,模型预处理分为两个步骤: 图像预处理:基于图像处理算法 数值预处理:基于机器学习理论 关于图像预处理,请参考<南溪的目标检测学习笔记>--图像预处理的学习笔记 ...

  2. 【李宏毅机器学习】Transformer(p23) 学习笔记

    老二次元了... 文章目录 Transformer Sequence 用CNN取代RNN Self-Attention Self-attention is all you need. 流程 Self- ...

  3. |Boids|鸟群模型|鸟群算法|学习笔记 - 论文学习

    本文基于Craig Reynolds于1986年发布的<Flocks, Herds, and Schools: A Distributed Behavioral Model>进行学习和总结 ...

  4. java中集合的模型特点_Java 学习笔记(十四)集合

    集合 在开发的时候,如果需要存储多个数据,可以使用数组,不过数据是固定长度的,如果需要存储可变长度的多个数据,可以使用集合.集合提供存储空间可变的存储类型,存储的容量可以实时改变 集合分类 Colle ...

  5. sizebox模型下载_css 盒模型、box-sizing 学习笔记

    默认情况下,给元素设置的高度和宽度是元素内容区的宽度和高度,给元素加padding 和 border ,元素的实际宽度和高度的计算方式是下面的两个公式: 元素的宽度= 元素的内容区宽度 + 内边距宽度 ...

  6. Django中模型类 属性-学习笔记

    定义属性 Django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表创建自动增长的主键列,每个模型只能 ...

  7. 自动驾驶——模型部署的学习笔记

    2 剪枝 模型剪枝是很有效的,因为模型在初始化时会有很多的神经元,也就是"想的很多",通过剪枝可以消除一些作用小的神经元:

  8. 目标检测——模型加速的学习笔记

    1 PyTorch实现 1.1 推理部分 不要使用torch.utils.data import Dataset和torch.utils.data.DataLoader!!! 说明:时间消耗特别大,速 ...

  9. 预测分析 Python ARIMA模型预测(学习笔记)

    import numpy as np import pandas as pd import matplotlib.pyplot as plt import statsmodels.api as sm# ...

最新文章

  1. 调参必备--Grid Search网格搜索
  2. C++基础知识友元friend、友元函数和友元类
  3. python字典值求和_Python两个字典键同值相加的方法总结
  4. 2999元起!Redmi K40系列不止骁龙888:还将标配双扬声器
  5. 注册表把html设置成桌面,[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...
  6. 随想录(工业软件和消费级软件的区别)
  7. c语言中return,和exit的区别
  8. 【docker】关于docker 中 镜像、容器的关系理解
  9. mysql5.7.23安装详细过程
  10. Atitit.进程管理常用api
  11. 揭秘鲜为人知的酒店管理“黑洞”
  12. ue4导入abc文件问题
  13. Java代理(Proxy)模式
  14. 对应阻尼下的开环增益matlab,自动控制原理实验指导书MATLAB版解析.doc
  15. uubox.net (在线存储)项目的第一阶段终于完成了
  16. android+实现微信对话框样式,实现微信对话框的图片样式以及图片边框
  17. 小米路由器LuCI Web服务
  18. 【计算理论】图灵机 ( 图灵机引入 | 公理化 | 希尔伯特纲领 | 哥德尔不完备定理 | 原始递归函数 )
  19. python gui是什么_python gui是什么?
  20. Rabbitmq用户角色

热门文章

  1. 7英寸液晶显示屏应用行业 7寸TFT液晶显示屏供应
  2. arduino定时器pdf_Arduino基础入门篇18—数字时钟
  3. 每日新闻 | 特斯拉“太空跑车”完成第一圈绕日飞行 向火星靠近
  4. 数据分析师的自我修养
  5. python的matplotlib画饼状图
  6. C语言描述算法的常用方法是,认识C语言 -算法描述的5种方法
  7. java毕业论文云笔记_java毕业设计_springboot框架的云笔记记事本
  8. 2021年下半年系统集成项目管理工程师综合知识真题及答案解析
  9. 把当前web页面上的所有图片复制到特定目录
  10. Rook Ceph浅谈