【期末考复习向】transformer的运作机制

1.transformer的encoder运作

transformer的encoder部分包括了输入和处理2大部分。首先是输入部分inputs,这里初始的inputs是采用独热向量进行表示的,随后经过word2vec等操作把独热向量(采用独热向量的好处就是可向量是正交的,可以采用矩阵乘法来快速的计算向量之间的相似度)转变成了稠密向量(解决了高纬矩阵稀疏的问题,同时还可以用向量之间的距离来表示词与词之间关系的远近)。当然转换过程就是由独热向量乘上一个W矩阵,这个W矩阵就是由w2v训练得到的。W的行数等于独热向量的维度,W的列数则是期望的稠密向量每个字的维度。

不采用直接输入独热向量的原因是,独热向量的效果和稠密向量的是一样的,但是会增加网络的参数。

随后是给输入添加位置信息,之所以要添加位置信息是因为transformer中采用的自注意力机制是没有考虑到每个词之间的位置信息,而位置信息往往又是非常重要的,就比如:我欠他100W 和 他欠我100W。这两句话的意思一个地狱一个天堂。那么具体具体做法就是让变成稠密向量的输入input embedding直接加上一个相同维度大小的(一般都是512维)位置向量ei。并且ei的值也是提前确定的,并不需要通过数据学习得到。

之后便是让添加了位置信息的输入向量(多个向量)经过一个多头注意力机制得到新的一排向量,然后采用残差机制,把新的一排向量加上原来的输入向量(这里可以设置权重调整添加的程度)。这里之所以采用残差机制,就是为了防止在训练过程中发生退化的问题,也就是残差机制存在的意义。可以自行查询残差机制的作用~随后把输入向量进行层归一化。层归一化的操作就是计算一个样本中所有维度的平均值和标准差,然后每个维度的值减去平均值除以标准差。层归一化的意义在于加快训练速度和提高训练的稳定性。注意Add&Norm是先残差机制再层归一化。

最后把新的一排向量输入到全连接神经网络中,并经过Add&Norm操作得到encoder的输出。其中全连接神经网络先是一个线性变换抬高向量的维度,然后一个激活函数进行非线性变换,最后再是线性变换降低维度。

2.transformer的decoder运作

decoder的输入有2种,根据输入的不同可以分为自回归模式和非自回归模式。

(1)自回归模式

自回归模式的decoder在训练的时候采用教师强制模式。它会首先输入一个BOS符号(同样先用独热编码然后转成稠密向量表示,并添加位置信息),然后经过一个掩码注意力机制后,经过Add&Norm操作。所谓的教师强制模式就是无论BOS对应的输出是什么,decoder的下一个输入都是正确的数据集,而不采用decoder的输出,这是为了防止错误传播。而采用掩码注意力机制,则是防止训练的时候受到真实数据的影响,即参数更新时不受影响。

掩码多头注意力机制:

对于一排向量的qkv,第一个向量的q只能与自己的k相乘得到a,然后a乘v得到新的向量;第二个向量的q只能与第一个和自身相乘。即掩码注意力机制就是在训练时只能依赖当前时刻以及之前的信息,而不能看到未来的信息,所以需要把当前时刻后面的信息掩盖掉。

(2)非自回归模式

这种就是一次性输入固定长度个BOS,然后一次性得到对应的输出。

 在经过掩码注意力机制以及第一个Add&Norm操作后,来到了cross attention部分,在图中写的是多头注意力机制,但是也被称为cross attention。

(3)cross attention

这里的cross attention之所以是交叉,就是因为q向量来自于decoder的第一个Add&Norm操作后的一排向量,乘一个新的Wq矩阵得到的,而k,v向量则来自于encoder的输出向量乘上新的Wk和Wv矩阵得到的,然后q向量对k相乘加上v向量得到新的输出向量。最后得到同样长度的新的向量

之后同样经过一个全连接网络,以及第二个Add&Norm操作。到这里的话整个decoder部分就运作完了。总结一下就是根据不同的输入,给出不同的输出向量。如果是自回归模式,那么输出会是w1,w1+w2,w1+w2+w3······。如果是非自回归模式,那么输出会是一排向量。

3.transforme的完整运作机制-以文字生成为例

以翻译为例,自回归模式。训练数据集是“深度学习-Deep learning”。encoder的输入是深度学习的独热编码,经过encoder block后得到4个词向量。同时decoder的输入是bos的独热向量,在cross attention部分bos的词向量会得到q,结合深度学习的词向量的kv,重新得到一个新的bos的词向量。然后经过一个全连接网络和一个Add&Norm操作后,decoder block就结束了。最后是整个transformer的输出部分。

输出的bos的词向量先经过一个线性层,然后经过softmax归一化得到概率分布,再结合词典找出概率最大的位置对应词典中的词。得到Deep一词。

 第二次的输入是Bos + Deep,同样经过decoder后得到2个词向量,经过线性层后变为1维,最后经过softmax得到概率最大的词是learning。最后下一个输出是End则结束文字生成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

re:Invent 产品体验分享:Amazon ElastiCache Serverless 缓存即时扩展功能与感受

授权说明:本篇文章授权活动官方亚马逊云科技文章转发、改写权,包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道)。 文章目录 前言产品介绍产品使用步骤1.创建缓存服务2.安全组开放访问权限…

C++从bing采集各行业的企业官网信息

作为一名合格的销售,除了自己的人脉,还应该有新鲜的客户加入并发掘。不管哪行哪业,知彼知己,方才能做到百战百胜。今天我就用我们的专业技能,让销售获取更多同行业的公开企业信息,让业绩顺风顺水。 通常在C…

如何实现电脑文件夹自动备份?以下是图解教程

在当今迅猛发展的科技时代,电脑已经成为不可或缺的办公工具。随着使用时间的增加,存储在电脑中的文件数量也逐渐增多。然而,由于设备故障、手动误删等原因,文件的丢失问题成为一个不可忽视的风险。如果丢失的文件具有重要性&#…

数学learning

目录 移动平均 简单移动平均 加权移动平均 指数移动平均 矩阵求导 矩阵对标量求导 Matrix-by-scalar 标量对矩阵求导 Scalar-by-matrix 参考博客 移动平均 优化算法里面会涉及到一个知识点:指数移动平均。 但是为了知识的完整性,这里会将常见的移动…

MCU平台下一种简单的文件系统设计构想

本文介绍MCU平台下一种简单的文件系统设计构想。 在使用MCU的项目中,经常会涉及到一些数据的存储,受限于硬件,又不太可能直接上文件系统(如FAT文件系统),直接指定存储地址,数据长度对数据进行读…

React antd如何实现<Upload>组件上传附件再次上传已清除附件缓存问题

最近遇到一个React上传组件的问题,即上传附件成功后,文件展示处仍然还有之前上传附件的缓存信息,需要解决的问题是,要把上一次上传的附件缓存在上传成功或者取消后,可以进行清除 经过一顿试错,终于解决了这…

SE考研真题总结(二)

接上条,今天继续更新~ SE考研真题总结(一)-CSDN博客文章浏览阅读340次,点赞6次,收藏11次。本帖开始分享考研真题中设计【软件工程】的部分,预计会出5期左右,敬请期待~https://blog.csdn.net/js…

EasyRecovery(数据恢复软件) 2024中文绿色无需激活版下载

EasyRecovery是一款功能强大且专业的数据恢复软件,软件能够对电脑误删的文件进行恢复,包括格式化硬盘是数据恢复、手机U盘数据恢复等,小编今天给大家带来的是根据官软件解压后直接使用。感兴趣的朋友快来下载使用吧。 EasyRecovery-2024mac最…

Pytorch-CNN轴承故障一维信号分类(二)

目录 前言 1 数据集制作与加载 1.1 导入数据 1.2 数据加载,训练数据、测试数据分组,数据分batch 2 CNN-2D分类模型和训练、评估 2.1 定义CNN-2d分类模型 2.2 定义模型参数 2.3 模型结构 2.4 模型训练 2.5 模型评估 3 CNN-1D分类模型和训练、评…

flink找不到隐式项

增加 import org.apache.flink.streaming.api.scala._ 即可

改进的A*算法的路径规划(2)

子节点优化选择策略 (1)子节点选择方式 为了找到从起始点到终点的路径,需定义一种可以选择后续节点的方式。在 A*算法中两种常见的方法为4-邻接(见图5-7(a) 和8-邻接(见图5-7(b)), 但考虑到 在复杂越野环境上,我们希望智能车辆允许更多的自由运动来更…

MSF学习

之前的渗透测试中 其实很少用到 cs msf 但是在实际内网的时候 可以发现 msf cs 都是很好用的 所以现在我来学习一下 msf的使用方法 kali自带msf https://www.cnblogs.com/bmjoker/p/10051014.html 使用 msfconsole 启动即可 首先就是最正常的木马生成 所以这里其实只需…

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现DBO-SVM蜣螂算法优化支持向量机的…

数理统计基础:参数估计与假设检验

在学习机器学习的过程中,我充分感受到概率与统计知识的重要性,熟悉相关概念思想对理解各种人工智能算法非常有意义,从而做到知其所以然。因此打算写这篇笔记,先好好梳理一下参数估计与假设检验的相关内容。 1 总体梳理 先从整体结…

串口通信(4)-C#串口通信入门实例

本文通过实例讲解C#串口通信。 入门实例设计一个串口助手,能够很好的涵盖串口要点的使用。 目录 一、成品图 二、界面文件 三、后台代码 四、实例中要点 一、成品图 如下: 实现的过程 创建winform项目,将Form1文件的名称改为MainForm&…

Windows汇编调用printf

VS2022 汇编 项目右键 生成依赖项 生成自定义 勾选masm 链接器 高级 入口点 main X86 .686 .model flat,stdcall option casemap:none includelib ucrt.lib includelib legacy_stdio_definitions.libEXTERN printf:proc.data szFormat db %s,0 szStr db hello,0.code main…

关于职场伪勤奋

前段时间看了一些关于勤奋学习、职场成长类的书籍,就在思考勤奋学习和职场的关系时,结合个人的理解,我定义了一种勤奋叫职场“伪勤奋”。那关于职场“伪勤奋”的定义和理解,与大家分享: 1、选择性任务完成 伪勤奋特征…

vue 图片等比例缩放上传

需求:上传图片之前按比例缩小图片分辨率,宽高不超过1920不处理图片,宽高超过1920则缩小图片分辨率,如果是一张图片请参考这篇博客:js实现图片压缩、分辨率等比例缩放 我根据这篇博主的分享,写下了我的循环上…

HarmonyOS使用Web组件

Web组件的使用 1 概述 相信大家都遇到过这样的场景,有时候我们点击应用的页面,会跳转到一个类似浏览器加载的页面,加载完成后,才显示这个页面的具体内容,这个加载和显示网页的过程通常都是浏览器的任务。 ArkUI为我…

chatGPT 国内版,嵌入midjourney AI创作工具

聊天GPT国内入口,免切网直达,可直接多语言对话,操作简单,无需复杂注册,智能高效,即刻使用.可以用作个人助理,学习助理,智能创作、新媒体文案创作、智能创作等各种应用场景! 地址: https://ai.wboat.cn/