目录
-
解码器(Decoder)
-
掩码多头注意力(Masked Multi Head Attention)
-
Token预测(Token Prediction)
-
总结
01 解码器(Decoder)
到目前为止,通过前面的两篇文章,我们已经完成了编码器部分的所有计算步骤,从对数据集进行编码到通过前馈网络传递矩阵;接下来的步骤,我们将讲解Transformer的编码器,如下是在GPT中Transformer编码器预测Token的演示动图。
我们看一下到目前为止我们已经完成了哪些内容,以及我们还需要完成哪些内容:
我们不会计算整个解码器,因为它的大部分已经在编码器中完成了类似的计算,详细计算解码器只会使文章变得冗长,因为重复的步骤很多;下面,我们会更多关注解码器输入和输出的计算。
解码器有两个输入,一个输入来自编码器,顶层编码器的输出转换为一组注意力向量K和V;这些向量将在每个解码器的“交叉注意力”层中使用,用于帮助解码器集中注意力于输入序列中的适当位置;第二个输入是预测文本,假设我们输入给编码器的是 “用简单语言讲解Transformer”,解码器的输入是预测的文本"太棒了"。
以上动图展示了Transformer解码器训练过程在机器翻译任务中的运用。
接下来的步骤会重复这个过程,直到达到一个特殊的结束符,表示Transformer解码器已经完成了输出;每个步骤的输出都会在下一个时间步骤中被传递给底层解码器,解码器们会像编码器一样层层传递解码结果,并且,就像我们对编码器输入所做的那样,我们对这些解码器输入进行嵌入和添加位置编码,以指示每个单词的位置。
以上动图展示了Transformer解码器训练过程在机器翻译任务中的运用。
但是训练的目标输入文本需要遵循一种标准的token封装方式,这样Transformer就知道从哪里开始和结束。
在这里,引入了两个新的token,分别是<|im_start|>和<|im_end|>,此外,解码器一次只能接受一个token作为输入,也就是说,<|im_start|>会被作为一个输入,而"太”就是下一个预测token。
正如我们所知,这些词嵌入是有随机权重值的,这些权重将在训练过程中进行更新。
如下图所示,以之前在编码器部分计算的相同方式计算剩余的块。
在深入了解之前,我们需要通过一个简单的例子来理解什么是掩码多头注意力(masked multi-head attention)的概念。
02 掩码多头注意力
在Transformer中,掩码多头注意力就像是模型用来聚焦句子不同部分的灯光,它的特殊之处在于,它不允许模型查看句子中后面的单词,避免了作弊;这有助于模型逐步理解和生成句子,在对话或将单词翻译成其他语言等任务中尤为重要。
我们以上面的目标输入(”太棒了“)矩阵为例,其中每一行代表序列中的一个位置,每一列代表一个特征,如下所示为7 * 6的矩阵(d_model为6)。
现在,让我们来了解具有两个头的掩码多头注意力组件的构成:
1.线性投影(Q,K,V):假设每个头的线性投影为 Head 1: Wq1,Wk1,Wv1 和 Head 2: Wq2,Wk2,Wv2。
2.计算注意力分数:对于每个头,通过Q和K的点积计算注意力分数,并应用掩码以防止关注未来位置。
3.应用Softmax函数:将注意力分数应用于softmax函数,获得注意力权重。
4.加权求和(V):将注意力权重与值相乘,获得每个头的加权和。
5.加法和线性变换:将两个头的输出连接起来,并应用线性变换。
进行如下简化的计算:
加法和线性变换步骤将两个注意力头的输出合并为一组信息,这一步骤有助于从多个角度捕捉输入数据的不同方面,并提供一个更丰富的表示,供模型进一步处理使用。
03 预测(Token Prediction)
解码器最后一个加法和归一化层的输出矩阵必须具有与输入矩阵相同的行数,而列数可以是任意的。在这里,我们使用6列。
为了将解码器最后一个加法和归一化层的结果矩阵与一个线性层匹配,必须将其展平,以求得语料库中每个唯一Token的预测概率。
展平的层将通过一个线性层来计算语料库中每个唯一Token的逻辑值(分数)。
一旦我们获得逻辑值,我们可以使用softmax函数对它们进行归一化,并找到概率最高的Token。
并且,用户可以用temperature参数来控制softmax函数的输出分布,以增加或减少随机性。
根据我们的计算,解码器预测的单词是"太",它的Token是8192和103。
这个预测的单词"太"将被视为解码器的输入单词,并且这个过程会一直持续,直到预测到<|im_end|>标记。
04 总结
本文详细讲解了Transformer架构的解码器部分,阐述了其基于编码器输出和已生成Token进行预测的工作机制。
通过图解和动画形式展示了掩码多头注意力机制和Token预测过程,并解释了如何使用解码器预测的Token作为下一个输入,以实现自动生成文本的功能。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。