Multi-Head Attention和Transformer Decoder(GPT)详解

news2024/7/6 19:18:38

文章目录

  • 一、Transformer的Attention
    • 1. Self-Attention
    • 2. Masked Self-Attention
    • 3. Multi-Head Attention
  • 二、Transformer Decoder(GPT)
    • 1. GPT的网络结构
    • 2. GPT的计算原理

一、Transformer的Attention

  

1. Self-Attention

  如前篇文章所述(https://blog.csdn.net/liuqiker/article/details/130599569?spm=1001.2014.3001.5501),Scaled dot-prodect Attention是先计算Query和各个Key的相似性,即每个Key对应Value的权重系数,进而对Value进行加权求和(矩阵乘法),即得到了最终的Attention数值。其中,Key和Value是相同的数值,即代表同一个来源的句子,Query代表的是目标句子,Query和Key往往是不同的。
  而在Self-Attention中,Query则和Key、Value相同,故而这时的Attention称为Self-Attention,即句子中每个词在这个句子中的Attention,如下图:
在这里插入图片描述

2. Masked Self-Attention

  Masked Self-Attention是对Self-Attention的改进,在Self-Attention中,会计算每个单词与句子中所有其他单词的关系权重。而在实际的自然语言生成过程中,句子都是逐字生成的,当前字正在生成时,该字后边的句子内容还是未知的,即为空,因此,影响当前字的只有当前位置之前的句子,而不包括当前位置之后还处于未知状态的内容。此时Masked Self-Attention应运而生,如下图:
在这里插入图片描述
  上述公式中,给Q和K的权重系数矩阵,加上一个右上角的值全为“负无限大”的矩阵,这样就掩盖了当前的Query与其后所有字的权重系数(置为0),称为Masked Self-Attention。
  上节中的例子经过Mask后,变为如下形式:
在这里插入图片描述

3. Multi-Head Attention

  Multi-Head Attention即将QKV映射到不同的空间让多个Head去学习不同的特征,从而均衡同一种注意力机制可能产生的偏差,让词义拥有来自更多元的表达,实验表明可以提升模型效果。原理如下图:
在这里插入图片描述
  那么,如何获得同一组QKV的不同空间特征呢?答案是进行线性变换,即对每组QKV,通过Linear计算,取得对应的特征矩阵,再对不同的特征矩阵组做Attention计算,最后将计算结果合并到一起且再经过Linear计算,得到最终的Multi-Head Attention,如下图:
在这里插入图片描述
  注:d_model(词向量的维度)等于d_k(Linear变换的矩阵维度)乘以h(Head的数量)。

二、Transformer Decoder(GPT)

1. GPT的网络结构

在这里插入图片描述
  上图是一个标准的GPT(Transformer Decoder)的网络结构,从下往上,共分为如下几个部分:
  1. Inputs:GPT的输入,常见的是一段文字输入。在GPT中,我们会先将输入的句子中每个文字(或词语)映射为机器可以识别的token(即一个数字),常见的方法是维护一个词汇表,取该文字(或词语)在词汇表中的index为token。对于中文的句子,还要注意一句话中某些字可以组成一个词语,代表某一个完整的意思,那么这个词语在词汇表中的index就作为token,而不是将词语中的每个字拆开分别查找index;
  2. Input Embedding:Embedding即词向量,该层是将输入的token映射为更紧凑的矩阵(1中映射得来的token转换成one-hot编码后,是一个稀疏矩阵,浪费了大量的计算资源,故需要转换成更紧凑的矩阵);
  3. Positional Encoding:位置编码是将每个字(词)在句子中的位置做相应编码(即一个代表[1, 2, 3, …]的向量),并将其与输入相加,目的是让模型知道每个字(词)在句子中的位置信息,实验表明,该方式可以提高模型的准确度;
  4. Multi-Head Attention:如上节所述,该层用于计算QKV的权重系数矩阵,即Attention,注意,这里的Attention是Masked Self-Attention;
  5. Add&Norm:类似于残差网络的设计,将经过Multi-Head Attention前的输入,和经过Multi-Head Attention之后的输出相加并做Norm,可以让信息保存的更加完整;
  6. Feed Forward:该层由两个Dense层组成,激活函数是relu,作用是对Attention做线性变换,更好的识别其代表的特征;
  7. Add&Norm:同5;
  8. Linear&Softmax:输出层,输出一个固定长度的文字序列,每个文字有不同的准确率(由于存在Softmax,所有的概率相加为1),如果想让模型输出更加多样化,则可以随机选择准确率最大的几个字,反之,则减小选择的范围;
  注:图中的N,代表重复N次,不同的GPT版本N的大小不同,代表的参数规模也不同。

2. GPT的计算原理

  GPT的计算过程基本如1中所述,这里引用一张网络上的图片做个总结:
在这里插入图片描述

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

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

相关文章

如何开发一个人人爱的组件?

组件,是前端最常打交道的东西,对于 React、Vue 等应用来说,万物皆组件毫不为过。 有些工作经验的同学都知道,组件其实也分等级的,有的组件可以被上万开发者复用,有些组件就只能在项目中运行,甚…

Springboot +spring security,配置多个数据源:验证不同用户表

一.简介 上篇文章写到,我们在配置jdbc和mybatis 来源,进行登录后,出现了如下错误! 后面解决方案是:屏蔽了其中一个来源,登陆成功,也分析了其原因。 但是,但是如果需要配置多个数据来源&#…

2023年认证杯SPSSPRO杯数学建模B题(第一阶段)考订文本全过程文档及程序

2023年认证杯SPSSPRO杯数学建模 B题 考订文本 原题再现: 古代文本在传抄过程中,往往会出现种种错误,以至于一部书可能流传下来多种版本。在文献学中,错误往往被总结成“讹”、“脱”、“衍”、“倒”等形式,也可能同…

cda 1级模拟题错题知识点总结

Sql truncate函数 格式:TRUNCATE(number, decimals) number: the number to be truncated decimals:the number of decimal places to truncate to 截断到的小数位数,如果为0则表示不保留小数 例如: select truncate(2.83,0) 结果为2 select truncate(…

解读kubernetes部署:配置docker私服密钥与SSL证书创建

为k8s配置docker私服密钥 为了kubernetes有权访问您的docker私服,需要在kubernetes的凭证中建立docker私服的密钥: kubectlcreatesecretdocker-registryaliyun-secret--docker-server--docker-username--docker-password--docker-email--namespacens-jav…

2.golang的变量、常量、数据类型、循环和条件判断

一、变量 变量(Variable)的功能是存储数据。Go语言中的每一个变量都有自己的类型,并且变量必须经过声明才能开始使用。 Go语言的变量声明格式为: var 变量名 变量类型 例如: var name string var age int var isOk b…

线上问题处理案例:出乎意料的数据库连接池 | 京东云技术团队

导读 本文是线上问题处理案例系列之一,旨在通过真实案例向读者介绍发现问题、定位问题、解决问题的方法。本文讲述了从垃圾回收耗时过长的表象,逐步定位到数据库连接池保活问题的全过程,并对其中用到的一些知识点进行了总结。 一、问题描述…

LabVIEWCompactRIO 开发指南29 数据通信

LabVIEWCompactRIO 开发指南29 数据通信 LabVIEW FPGA中的数据通信分为两类:进程间和目标间。进程间通信通常对应于FPGA目标上的两个或多个环路之间的数据共享。目标间数据通信是在FPGA目标和主机处理器之间共享数据。对于这两种情况,在决定使用哪种机…

扩散能垒计算在电池材料领域的革新应用

扩散能垒计算在电池材料领域的革新应用 随着能源需求的增长和环境意识的提高,电池技术成为解决可再生能源存储和移动电子设备需求的关键。电池材料的研究和开发变得日益重要,而扩散能垒计算作为一种先进的计算方法,为电池材料领域带来了革新的…

设计模式之【观察者模式】,MQ的单机实现雏形

文章目录 一、什么是观察者模式1、观察者模式应用场景2、观察者模式的四大角色3、观察者模式优缺点 二、实例1、观察者模式的一般写法2、微信公众号案例3、鼠标响应事件API案例 三、实现一个异步非阻塞框架1、EventBus2、使用MQ 四、源码中的观察者模式1、Observable/Observer2…

pygam第3课——画图小程序

前言:我们前两节课已经学习了,界面的设计、图片的加载、那么今天我们将继续学习pygame的基础知识,我们的今天学习的内容是:鼠标滑动时坐标的实时获取、鼠标的移动事件、鼠标的点击事件、图形绘制等。希望大家能 搭建界面&#xf…

firewalld防火墙(又到了可以看日落和晚霞的日子了)

文章目录 一、firewalld概述二、firewalld和iptables的关系三、firewalld区域的概念四、firewalld数据处理流程五、firewalld检查数据包源地址的规则六、firewalld防火墙的配置种类1.运行时配置2.永久配置 七、firewalld防火墙的配置方法八、使用命令配置firewalld防火墙1.获取…

Ventoy 多合一启动盘制作工具神器 - 将多个系统 Win/PE/Linux 镜像装在1个U盘里

最近很多操作系统都纷纷发布了新版本,比如 Windows 11、Ubuntu、Deepin、优麒麟、CentOS、Debian 等等,对喜欢玩系统的人来说绝对是盛宴。 不过一般用 Rufus 等工具,一个 U 盘往往只能制作成一个系统的启动盘/安装盘,想要增加另一…

零入门kubernetes网络实战-33->基于nat+brigde+veth pair形成的跨主机的内网通信方案

《零入门kubernetes网络实战》视频专栏地址 https://www.ixigua.com/7193641905282875942 本篇文章视频地址(稍后上传) 本文主要使用的技术是 nat技术Linux虚拟网桥虚拟网络设备veth pair来实现跨主机网桥的通信 1、测试环境介绍 两台centos虚拟机 # 查看操作系统版本 cat …

VIBRO-METER VM600 IRC4 智能继电器卡

额外的继电器,由来自MPC4和/或AMC8卡的多达86个输入的方程驱动,用于需要2oo3表决等更复杂的逻辑时8个继电器,可配置为8个SPDT或4个DPDT使用IRC4配置器软件进行完全软件配置继电器可配置为正常通电(NE)或正常断电(NDE),具有可配置的…

小航助学GESP_C++一级模拟测试试卷(含题库答题软件账号)

GESP在线模拟训练系统请点击 电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)在线答题_程序猿下山的博客-CSDN博客_小航答题助手 答案:A 第1题人们在使用计算机时所提到的 Windows 通常指的是()。 A、操作系统B、多…

Science Bulletin:张占军教授团队提出“额叶保持,颞叶损伤” 假说解析成功认知老化

步入老年后,各项认知能力会逐渐衰退,我们把这一过程称之为认知老化。认知老化的过程与速度因人而异,走向阿尔茨海默病(AD)等认知障碍疾病为结局的属于病理认知老化,也就是经历轻度认知障碍阶段,…

【分享】PowerPoint如何设置保护和加密?

想保护自己做好的PPT,通常用的方法就是给PPT加密。下面我们来看看PPT加密保护方式有几种,具体如何操作。 打开PPT,点击菜单【文件】,再依次点击【信息】-【保护演示文稿】,就可以看到设置密码保护的5个选项。 选项1&a…

小航助学2022年NOC初赛图形化(小低组)(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统(含题库答题软件账号)_程序猿下山的博客-CSDN博客 单选题3.0分 删除编辑 答案:D 第1题如果想要从造型库中自选一个喜欢角色,可以点击哪个按钮呢? A、①B、②C…

Go语言核心编程-流程控制

第 5 章 程序流程控制 5.1 程序流程控制介绍 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控 制语句。 顺序控制分支控制循环控制 5.2 顺序控制 程序从上到下逐行地执行,中间没有任何判…