Transformer学习笔记(一)

Transformer学习笔记

基于 3B1B 可视化视频

自注意力机制

1.每个词的初始嵌入是一个高维向量,只编码该单词含义,与上下文没有关联

2.对初始向量进行位置编码,在高维向量中编码进位置信息(单词在语言序列中的位置信息),称此时的向量为E(GPT3中为12288维)

3.每个向量E,配有一个查询向量Q,用于向自身前面的向量序列查询信息(比如一个名词的查询向量中可能就蕴含着下面的问题:我的前面有没有对我的形容词?),每个向量的查询向量通过查询矩阵Wq生成: E·Wq -> Q. 因此,Wq的横向维度会与词向量的维度相match,纵向维度未要求(GPT-3中是128维)。所以E·Wq -> Q这个过程相当于把一个较高维的词向量映射到了一个低维空间。Wq矩阵在一个模型中是固定的,其中的参数是通过训练得到的。

4.每个向量E,同时配有一个键向量,用于回应查询向量的提问(比如后方有个词向量的查询向量问到:我的前方有没有形容我的形容词?键向量就用于回应这个查询向量),每个词向量的键向量通过键矩阵Wk生成:E·Wk -> K. 因此这个过程也是会把原本较高维度的词向量映射到一个低维空间(GPT-3中是128维)中。具体回应过程可以看成是在对比Q和K的匹配程度,匹配程度越高,说明该向量E与发出查询向量Q的E的关联性也就越大。这里用点积来衡量两个向量的匹配程度,点积结果越大,二者间的匹配程度越高,于是我们说,这个词E“注意到了”后面的词的嵌入。

在这里插入图片描述

5.如上图,在求出上述匹配度矩阵后,以匹配度作为权重,对每一列进行加权求和。因此我们想要把权重调整为在0-1之间的值并且其权重总和为1。因此,对每列权重数据做一次softmax()

在这里插入图片描述

将得到的矩阵称为Attention Pattern。

在一些模型中,我们往往会看到Cross-Attention,在Cross-Attention中,Wq和Wk会作用在不同的数据集上,如下图:

回到Self-Attention上,可以看见Transformer的原始论文中对Attention Pattern的表现形式:

在这里插入图片描述


从以上可以看出,每个词向量既接收来自身后的询问Q也接收来自词向量之前的询问Q。这样的做法会产生以下的效果:

训练时输入,“a fluffy blue creature roamed the verdant forest”,最终经过上述一系列计算根据forest的向量值输出下一个预测词,再根据输出与原本结果对模型参数进行调整,这样的过程固然可以,但效率太低。这一长串的文本只能对模型进行一次训练。由此我们提出一个方法:每输入一个词便进行一次预测训练。即达到以下效果:

a -预测下一个词                     
a fluffy -预测下一个词
a fluffy blue -预测下一个词
a fluffy blue creature -预测下一个词
a fluffy blue creature roamed -预测下一个词
a fluffy blue creature roamed the -预测下一个词
a fluffy blue creature roamed the verdant forest -预测下一个词

为了能使运算同步进行,每个词向量只对自己身后的词向量的查询进行匹配度回应,而不对自己之前的词向量发出的查询进行回应。或者说,每个向量只对自己之前的词向量发出查询请求,而不对自己身后的词向量发出查询请求(体现了自回归特性)。不然的话,比如此时训练序列为a fluffy blue creature roamed the此时forest收到了来自其前面词向量的查询并进行了回应,那就相当于透露了答案信息。

所以,在此,我们希望在Attention Pattern矩阵中主对角线的下半部分的值都为0。为了实现这一效果,在softmax之前将主对角线以下的值全部设为负无穷。这个步骤被称为Masking。(并不是所有的注意力机制都会运用此方法)

Masking这一步骤不仅在GPT的训练中用到,在使用GPT作为工具的时候也同样在运用。

从这也可以发现,随着文本输入越来越长,其Attention Pattern呈现平方指数级增长,因此这也成为了大语言模型的一个瓶颈,为解决这一瓶颈,有很多新的研究在进行中。


得到Attention Pattern过后,接下来介绍值向量V。每个词向量E配有一个值向量V,用于衡量自身的动量(例如:red hat,对于hat来说在高维空间指向的是初始embeding的位置,而加上red的值向量后,hat在高维空间中将指向红色帽子的位置)。每个词向量的值向量V通过值矩阵生成:Wv·E -> V。由于V最终要作为动量与词向量相加,所以V的维度要与词向量的维度一致,也因此Wv的纵向维度要与E一致(12288*12288)。Wv在模型中是固定的,其参数通过训练得到。在得到每个向量的值向量后,根据Attention Pattern中的响应程度,对每个词向量更新:
E j = E j + ∑ i = 1 j V i ∗ a t t e n t i o n S c o r e Ej=Ej+\sum_{i=1}^j Vi*attentionScore Ej=Ej+i=1jViattentionScore
以上为Single-Head Attention的工作流程。

对于Multi-Head Attention,即模型中有多个Wq、Wk、Wv矩阵,即每个词向量有多个查询向量V、键向量K,值向量V。可以将一幅Wq、Wk、Wv理解为一个Head(GPT3中有96个头),最终词向量的改变量为每个Head中的改变量相加。

在Transformer相关论文中Value矩阵通常会被转换为Wv↑和Wv↓两个矩阵相乘,此时Value矩阵特指Wv↓,这样做的目的是为了实现并行计算,但原理是相同的。


MLP多层感知器

我们对LLM输入Michael Jordan plays,大语言模型会输出basketball。对于一个不认识Michael Jordan的人来说,他能理解这句话的每个单词的含义,但是无法确定plays应该输出什么。所以,这个LLM一定存储了一个记忆,这个记忆就是Michael Jordan是打篮球的,这也是一个事实。LLM是如何记住这一事实的,即是我们要讨论的问题。

回想下手写数字识别的Neural Network,它的网络中也存储了一些记忆,能够识别输入图像的图形特征。带着这个思维,将能更好的理解Transformer中记忆的存储过程和结构。

在经过Self-Attention后,我们得到更新后的词向量序列。相较于初始的单词Embeding,此时的词向量序列embeded了更多的context信息。

MLP的结构如下图:

在这里插入图片描述

经过MLP时,各个词向量间不再相互影响,每个词向量并行的经过相同的运算。因此,关注一个词向量的运算过程就可以知道所有词的运算过程。

1.第一层映射

由于MLP的第一个矩阵会把词向量映射到更高的维度,所以称此矩阵为W↑。可以看成将矩阵W↑的行向量与词向量做点积,还记得Self-Attention中查询向量Q和键向量V吗?查询向量Q和键向量V做点积,从而计算出二者间的响应度(匹配度),这里也可以这样理解。可以把W↑的行向量看做一个个询问向量,向词向量询问各种问题,由此得出一个响应匹配度。在GPT3中W↑的纵向维度为4*12288。

之后加上一个Bias(用于增加参数调节的灵活度)。于是上述过程可用公式表示为:

接下来将蕴含响应度的向量通过一个激活函数,这里采用的是ReLU函数(很多模型会使用一个稍作修改的函数GELU)。

在经过激活函数后,我们得到类似于AttentionScore的向量,在Self-Attention中将值矩阵Wv乘以AttentionScore作为词向量的改变量。这里将该向量乘以W↓获得该词向量的补充信息(也要加上一个Bias向量),可以发现只有在第一轮映射中值大于0的地方(通过ReLU后被激活,这里没有考虑Bias对第一轮映射结果的改变),才会在第二轮映射中添加响应位置的向量。过程如下:

最后将获得的补充信息添加到词向量中得到一层MLP的完整运算过程:

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

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

相关文章

antd table表格设置最小宽度,列宽等比例显示

最近ui有个设计稿,表格要求如图: 由于本地antd table列宽column没有设置最小宽度minWidth属性,只有width属性,所以开发时我考虑按照列宽等比例计算后去设置width属性; 一、实现: 1.表头数组中设置minWidth…

算法沉淀一:双指针

目录 前言: 双指针介绍 对撞指针 快慢指针 题目练习 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.和为s的两个数 7.三数之和 8.四数之和 前言: 此章节介绍一些算法,主要从leetcode上的题来讲解&#xff…

若点集A=B则A必能恒等变换地变为B=A这一几何常识推翻直线(平面)公理

黄小宁 关键词:“更无理”复数 复平面z各点z的对应点z1的全体是z1面。z面平移变为z1面就使x轴⊂z面沿本身平移变为ux1轴。R可几何化为R轴,R轴可沿本身平移变为R′轴,R′轴可沿本身平移变为R″轴,...。直线公理和平面公理使几百年…

HelloMeme 上手即用教程

HelloMeme是一个集成空间编织注意力的扩散模型,用于生成高保真图像和视频。它提供了一个代码库,包含实验代码和预训练模型,支持PyTorch和FFmpeg。用户可以通过简单的命令行操作来生成图像和视频。 本文将详细介绍,如何在GPU算力租…

Vue2+ElementUI:用计算属性实现搜索框功能

前言: 本文代码使用vue2element UI。 输入框搜索的功能,可以在前端通过计算属性过滤实现,也可以调用后端写好的接口。本文介绍的是通过计算属性对表格数据实时过滤,后附完整代码,代码中提供的是死数据,可…

blind-watermark - 水印绑定

文章目录 一、关于 blind-watermark安装 二、bash 中使用三、Python 调用1、基本使用2、attacks on Watermarked Image3、embed images4、embed array of bits 四、并发五、相关 Project 一、关于 blind-watermark Blind watermark 基于 DWT-DCT-SVD. github : https://githu…

【小白可懂】微信小程序---课表渲染

结果展示:(代码在最后) WeChat_20241116174431 项目简介 在数字化校园建设的大背景下,为了更好地服务于在校师生,我们开发了一款基于微信小程序的课表管理系统。该系统采用了现代化的前端技术和优雅的设计风格&#x…

Kafka一些常用的命令行操作【包含主题命令、生产者和消费者命令】

文章目录 1、主题命令2、生产者命令行操作3、消费者命令行操作 1、主题命令 查看当前服务器中的所有 topic: kafka-topics.sh --bootstrap-server node01:9092 --list 创建topic: kafka-topics.sh --bootstrap-server node01:9092 --create --topic to…

C# x Unity 从玩家控制类去分析命令模式该如何使用

本文部分内容出自游戏编程模式一书,游戏编程模式,有兴趣的小伙伴可以去看看,虽然不是unity x c#写的 但是思路挺好的 目录 目录 0.先说结论 发现问题 命令模式如何解耦 打个断点更利于分析 怎么实现延迟命令? 如何撤销命令? 脚本整体一览 不足分析(AI) 0.先说结论 …

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV买卖股票的最佳时机III

Day44 | 动态规划 :状态机DP 买卖股票的最佳时机IV&&买卖股票的最佳时机III&&309.买卖股票的最佳时机含冷冻期 动态规划应该如何学习?-CSDN博客 本次题解参考自灵神的做法,大家也多多支持灵神的题解 买卖股票的最佳时机【…

IDEA2024:右下角显示内存

使用场景: 实时知晓idea内存使用情况 解决方案: 开启内存显示 View -> Apperance -> Status Bar Widgets -> Memory Indicator 效果如下:

HBase理论_背景特点及数据单元及与Hive对比

本文结合了个人的笔记以及工作中实践经验以及参考HBase官网,我尽可能把自己的知识点呈现出来,如果有误,还请指正。 1. HBase背景 HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随机读写操作,HBase正是为此而出现。…

git创建远程仓库,以gitee码云为例GitHub同理

git远程Remote服务端仓库构建的视频教程在这 Git建立服务端Remote远程仓库,gitee码云例,Github_哔哩哔哩_bilibili 1、登gitee码云/Github 登录 - Gitee.com https://github.com/ (没账号的注册一下就行) 点击如下图位置的创…

windows工具 -- 使用rustdesk和云服务器自建远程桌面服务, 手机, PC, Mac, Linux远程桌面 (简洁明了)

目的 向日葵最先放弃了, todesk某些功能需要收费, 不想用了想要 自己搭建远程桌面 自己使用希望可以电脑 控制手机分辨率高一些 原理理解 ubuntu云服务器配置 够买好自己的云服务器, 安装 Ubuntu操作系统 点击下载 hbbr 和 hbbs 两个 deb文件: https://github.com/rustdesk/…

计算机网络各层设备总结归纳(更新ing)

计算机网络按照OSI(开放式系统互联)模型分为七层,每一层都有其特定的功能和对应的网络设备。以下是各层对应的设备: 1. 物理层(Physical Layer) 设备:中继器(Repeater)、集线器…

Oracle19C AWR报告分析之Wait Classes by Total Wait Time

Oracle19C AWR报告分析之Wait Classes by Total Wait Time 一、分析数据二、详细分析2.1 指标参数介绍2.2 数据库性能分析2.3 综合性能评估 在 Oracle 数据库的 AWR 报告中,Wait Classes by Total Wait Time 是评估数据库性能的重要部分。本篇文章主要是介绍指标参数…

基本数据类型和包装类型的区别、缓存池、自动拆箱装箱(面试题)

目录 1. 八种基本类型及对应包装类型 2. 基本类型和包装类型 区别 3. 自动拆箱装箱 3.1 自动装箱 3.2 自动拆箱 3.3 缓存池 4. 高频面试案例分析 1. 八种基本类型及对应包装类型 基本数据类型类型描述范围(指数形式)位数包装类型byte整型&#x…

Python酷库之旅-第三方库Pandas(221)

目录 一、用法精讲 1036、pandas.DatetimeIndex.to_pydatetime方法 1036-1、语法 1036-2、参数 1036-3、功能 1036-4、返回值 1036-5、说明 1036-6、用法 1036-6-1、数据准备 1036-6-2、代码示例 1036-6-3、结果输出 1037、pandas.DatetimeIndex.to_series方法 10…

基于SpringBoot网上超市的设计与实现录像

基于SpringBoot网上超市的设计与实现录像 SpringBoot网上超市的设计与实现录像

【vmware+ubuntu16.04】vm虚拟机及镜像安装-tools安装包弹不出来问题

学习机器人这门课需要下载虚拟机,做一下记录 首先我下载的是vm虚拟机16, 下载版本可参考该文章课堂上我下载 的镜像是16.04,虚拟机安装教程和镜像添加可参考该博主 按照教程安装成功 安装tools,但是我的弹不出来那个压缩包&…