深度学习系列之1----直观解释Transformer

news/2024/9/30 16:40:01

Abstract

这个系列主要用来记录我自己这种的AI小白的学习之路,通过将所学所知总结下来,记录下来。之前总喜欢记录在笔记本上,或者ipad上,或者PC端的Typora上,但总是很难回头检索到一些系统的知识,因此我觉得博客是一个不错的选择,因为时不时我就会登录网站翻看过去的痕迹,我觉得这是一种很不错的学习习惯,特此开坑,以后研究生三年时间,我将不断更新的随笔日志,既为了系统记录我的新知,也为了便于后人学习。
所以如有不当之处,欢迎评论指出,因为鄙人也是在学习。

【tip】之后的学习中我将大量使用"3W"原则来记录,就是Why?HOW?WHAT?将为什么用它、怎么用它到将它用在哪里一一说明。
这里贴出我的学习源头:
https://www.bilibili.com/video/BV13z421U7cs/?spm_id_from=333.337.search-card.all.click&vd_source=dbf0a5b21ee3e608136d2de2f7aa4035

WHY

GPT

GPT全称是一种“生成式预训练Transformer”
即:Generative Pre-trained Transformer,从名字不难看出,我们为啥要了解Transformer了

  1. Generative指的是生成文本这种
  2. Pre-traned指的是模型经历了从大量数据中学习的过程。预是预先的意思,指的是模型能够针对具体任务,通过额外的训练来进行微调
  3. Transformer就是一种特殊的神经网络,也是一种机器学习的模型

语言翻译

输入数据,预测输出,取softmax,作为预测的下一个值
image
但实际中GPT-3的输出感觉就比GPT-2要舒服太多了,这也是由于模型规模所造成的。

与GPT交谈的过程

step1

你的输入媒体被翻译为Token,也即是小片段,可以是单词、单词片段、语音片段或者图像小块
image

一个token就是一个向量

step2

Attention注意力机制。就是找出上下文中那些词会改变哪些词的含义,然后更新这些词的含义,就比如下文中的model和model是含义完全不同的两个词。
image

step3

多层感知机 Multilayer Perception
前馈神经网络层,类比于神经网络的计算

step4、5、6、7、8、9………………

image
最终得到所有token的概率分布,进而预测下一个词

以上就是我们为啥要学习Transformer的原理了

HOW?

这个地方就详细说明他的原理了。
比方说我们想得到这么一种函数,就是输入图像我们可以让它输出对图像的描述,或者就上面所述,输入文本,能够预测输出。

AI初期做法

写死model,也就是控制领域的”开环“
即:try to explicitly define a procedure for how to do that task in code
试图在代码中,明确定义如何执行一个任务
image

AI现在做法

一堆参数,给我什么类型的数据,我就改变对应的参数。像一堆仪表盘一样,调整数值。
image

机器学习最基本的模型

线性回归
比如你们老师上课常举得例子:房价预测模型
image
就是找一条曲线来尽可能的拟合所有数据。当然这种数据也是一对一的,自变量为1,因变量也为1.

将参数矩阵分为几大类

俗话说的好,数据越多越复杂(当然你很可能认为是废话)
由于参数多,所以集成化
image

几何角度的加权求和

向量点乘
image

词嵌入(Word Embedding)

我们为什么要将单词映射到向量?
image
这就不得不提到词向量模型了,这是自然语言处理领域一大重点。
词向量模型可以分为两类:基于统计的方法和基于深度学习的方法。基于统计的方法包括one-hot编码、n-gram等,而基于深度学习的方法则包括Word2Vec、GloVe和Transformer等。我们重点介绍Transformer的。

在Transformer模型中,词向量是通过嵌入层实现的。嵌入层将输入的单词转换为固定大小的向量,这些向量表示单词的语义信息。与传统的词向量方法不同,Transformer使用的是位置编码(Positional Encoding)技术来捕获单词的位置信息。

那么是如何实现的呢?

我们常用one-hot编码,也就是独热编码:
image
这种编码方式有一个缺点,那就是一个单词对应一个向量,所不同的仅仅是1的位置不同而已,这也就是独热编码的特点,也是缺点。。。。

而词嵌入的方式:
image
使用的是向量,向量在三维空间包含了方向、大小,不同向量之间还包含了夹角,代表两个词的关系程度,可以通过向量之间的点乘来实现,如下图:
image
我们两个向量的关系越近,那么我们点乘的值应该越大,关系越远,点乘之间的值应该越小(负数)。这些代表单词的向量可以像数学那样随意加减,构成了一张复杂的关系网络,比如:
image

有趣的一点是,当使用cats-cat向量,将生成复数向量(这个复数不是虚数实数那个复数,是单词的复数!!!!!!)
image

嵌入矩阵(Embedding Matrix)---大字典

这是GPT-3所用到的所有的词嵌入,总规模有6亿的参数量
image
大家可以把这个理解为一个大字典,你要的啥单词,查一下这个矩阵字典,就可以找到其对应的向量是啥。下面我们还会用到这个大字典。

语义分析

我们人类在思考问题时,常常会结合上下文来分析一个词的含义,比如:
image
这个词就受到很多词意思的左右。当然我帮大家查了这个词是羽毛笔的意思。
image

预处理

GPT拿来一个句子,首先进行的是将句子理解为一个一个的Token,注意哈:这时并没有考虑上下文的意思,仅仅是把Token从大字典里拿来进行一个简单的替换,得到对应的向量值是多少。
image

而流经这个神经网络(Transformer)的作用,就是让这些向量能够获得比单个词更丰富更具体的含义

然而我们注意到矩阵含有行和列,其中行代表着语义宽度,也就是GPT一次所能处理的单词长度,注意:我这里的话指的是能够结合上下位语义的长度,也就是说,一旦问的多了,问的久了,你再问之前的,超过了这个长度,那么GPT就会遗忘之前你说的话。
image
哈哈,这就是为什么早期GPT版本会遗忘的原因。
image

预测结果

我们来看看结果我们是如何操作的。
比如生成了这样一个矩阵:
image
我们会根据上述矩阵的最后一列,将其映射到一个含有5000元素的列向量,这个矩阵叫做”Unembedding matrix“,解嵌入矩阵。
image
最后通过softmax分类器进行概率预测
image

softmax

这个网上就比较多了,这里不再赘述,仅记录个人发现。
我们又引入了一个温度T参量,当参量的值很大时,会给小的概率值匀更多的机会,看起来会更均匀些:
image
反之。
image

同样我们也可以操作这个T值,来改变GPT的文本生成特点
image
左边就很古板,而右边就很创新,但逐渐趋向于无稽之谈了,因为其更倾向于选择可能性更小的词了。官网API不允许T大于2

Logits

We call the logits for the next word prediction

《Attention is all you need》

【回顾】:
step1:三个向量初始化一样,因为这个时候是没有上下文参考的。当然,实际中他们代表着不同的含义。
image
step2:等到Transformer这一步,才会改变传到的意思,集合上下文
还记得我们提到的这里用到的向量的集合意义吗?
image
把实际的含义”扳“到正确的向量上
举个简单的例子
Candy,给他一个普通的向量,会和棒棒糖、蛋糕等甜食联系到一起,然而如果是 Spicy candy,则就会和辣联系到一起,如果是spicy candy cannon,就会和糖果大炮联系起来,就不再是食物了。

这便是注意力机制

那么注意力机制到底是如何运作的呢??

一个单词,会问前面和后面的单词:我前面还有形容词吗?这时可能前面的俩哥们就说我在我在!!
image
这个疑问,就是一个询问矩阵Query,比如假设有128维。
image
通过一个变化矩阵得到询问矩阵
image
同样,应答的矩阵我们叫做应答矩阵,也叫”键矩阵“
image
因为有问就得有答嘛,所以:
image
可以看向量的匹配程度(不记得了,网上翻看,我前面讲了)
然后汇成一个图,用来指示二者的匹配程度:
image
然后我们找到了匹配点乘最大的值,我们认为二者的匹配程度是最大的。
image
也就说明了二者的相关程度。
但数值可能随意分配,所以再次需要使用softmax进行归一化,得到应答和询问的归一化数值。

注意力模型

我们管这个模型叫做注意力模型,得到的是询问和应答的相关性矩阵。
image
这是著名论文的给出的公式推导结果,非常精彩
image

掩码(masking)

一句话多次训练:
提供了多次训练的机会:
image
但注意的是不能让后面的词预测影响到前面,因为后面我都知道是啥词了,我还预测啥啊,对吧。。
image
所以我们把注意力模型里面的这些数值清零。。
image
但这样会影响softmax的结果,所以还需要先设置为-无穷
image
这一过程被称为Masking

注意力模型的尺寸

其大小等于上下文长度的平方,这也就是上下文长度不能太长
image

怎么“扳”?

我们前面知道,我们要将向量,根据正确的语义,扳到正确的位置上,那么我们要怎么扳???
而且前面论文公式里的V是什么意思呢?换言之,我们要如何知道向量的变换呢?
image
这时,我们其实可以这样来理解:
image

根据应答矩阵,被作用到Wv这个转换矩阵算子上,将产生一种作用(这个作用笔者认为可以理解为一个向量),然后询问矩阵加上这样一个响应,就变化了。最后就可以根据不同的语义产生向量的变换!!
这个Wv矩阵我们暂且称它为值矩阵。。
image
就像上图所说的那样
如果向量多了也一样:
image
但我们得到了三个矩阵参数
image
下面这个图将很好的说明这一点:
image
非常的清晰且明了

目前学到的参数

image

上面的值矩阵可以拆分为两个小矩阵

他们还各有自己的名字:
image
这种操作实质上就是对大矩阵进行“地址”

交叉注意力模型

这里不赘述,后面学到我也会详细介绍。

单注意力头

Single-attention
就是一个注意力的矩阵格式呗
Multi-attention
就是GPT-3内使用的96个注意力头,同时进行着并行的运算。
image

下面我接下来还会补充,未完待续。。。

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

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

相关文章

chrome-截图录屏插件-Awesome Screenshot

💖简介 Awesome Screenshot 截图录屏是一款浏览器扩展程序,它可以帮助用户进行网页截图、编辑图片以及录制屏幕视频 📖版本 4.4.22 🌟功能截图:可以截取整个网页(即使是需要滚动才能看到的部分)、可见部分或者选定区域。 编辑:截图后可以直接在浏览器中对图片进行编…

PARTI-Oracle关系数据结构-表和表簇

2. 表和表簇 2.1. 模式对象简介 数据库模式是数据结构的逻辑容器,这些数据结构称为模式对象。模式对象的例子有表和索引。模式对象是通过 SQL 创建和操作的。 一个数据库用户拥有密码和各种数据库权限。每个用户拥有一个与其同名的模式。模式包含了属于该用户的数据。例如,hr…

Python - [05] 爬虫

题记部分 001 || 爬虫的工作原理(1)获取数据。爬虫程序会根据提供的网址,向服务器发起请求,然后返回数据。 (2)解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 (3)提取数据。爬虫程序再从中提取出我们需要的数据。 (4)储存数据。爬虫程序把这些有…

(三)Style样式

一:定义样式作用于按钮<Window x:Class="WpfTest.WindowStyle"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/ex…

20240930模拟赛

T1连珠风暴 (necklace.pas/c/cpp) 问题描述:给定M种颜色的珠子,每种颜色珠子的个数均不限,将这些珠子做成长度为N的项链。 问能做成多少种不重复的项链. 并且两条项链相同,当且仅当两条项链通过旋转或是翻转后能重合在一起,且对应珠子的颜色相同。样例输入:2 5样例输出…

9.23 ~ 9.30

集训9.23 集训第一天。 早晨因为太多人没拿早读资料被老登 D 了。 不是哥们你不早说 现在我上哪给你找资料去 😅 上午模拟赛。 发现 T1 的图挂了,于是看形式化题意;初始有一张 \(n\) 个点的完全图,接着删除 \(m\) 条边。 询问有多少长度为 \(13\) 的序列 \(p_1,...,p_{13}…

实时语音交互,打造更加智能便捷的应用

随着人工智能和自然语言处理技术的进步,用户对智能化和便捷化应用的需求不断增加。语音交互技术以其直观的语音指令,革新了传统的手动输入方式,简化了用户操作,让应用变得更加易用和高效。 通过语音交互,用户可以在不方便使用触屏操作例如驾驶、烹饪时通过语音指令进行操作…

基于大模型搭建运力业务的“小红书”

作者:京东物流 朱飞 一、背景问题 1、职能人员(运营管理人员)日常工作所涉及的知识信息包括业务最新SOP、发文、操作手册等,获取渠道较分散,很多都依靠线下传递(发邮件、咚咚分享等),目前运力业务各种Sop、操作手册等文档上千个,累计文字过百万,缺乏统一查询入口,需…