【Bert101】变压器模型背后的复杂数学【03/4】

news2024/10/6 20:59:26

一、说明 

        在上一篇文章中,我们详细介绍了变压器模型的编码器块的工作原理。如果您还没有读过那篇文章,我建议您在开始这篇文章之前先阅读它,因为本文中介绍了其中涵盖的概念。您可以前往:

【Bert101】变压器模型背后的复杂数学【02/4】

        如果你已经读过它,太棒了!让我们开始深入了解解码器块以及与之相关的复杂数学。

二、变压器解码器

        与转换器模型的编码器块一样,解码器块由 N 个堆叠解码器组成,这些解码器按顺序运行并接受来自前一个解码器的输入。但是,这不是解码器接受的唯一输入。编码器块生成的句子表示形式将馈送到解码器块中的每个解码器。因此,我们可以得出结论,每个解码器接受两个不同的输入:

  • 来自编码器块的句子表示
  • 上一个解码器的输出

图1.编码器和解码器模块一起工作(图片来自作者)

        在我们深入研究构成解码器的不同组件之前,必须对解码器通常如何生成输出句子或目标句子有一个直觉。

三、目标句子是如何生成的?

        在时间步长 t=1 时,只有 <sos> 标记或句子的开头作为输入传递到解码器块。基于<sos>,目标句子的第一个单词由解码器块生成。

        在下一个时间戳中,即t=2,解码器块的输入包括<sos>令牌以及解码器块生成的第一个单词。下一个单词基于此输入生成。

        同样,随着时间戳的增量,解码器块的输入长度随着在上一个时间戳中生成的单词添加到当前输入句子中而增加。

        当解码器块完成整个目标句子的生成时,将生成<eos>或句子末尾标记。您可以将其视为递归过程!

图2 使用解码器递归生成输出令牌(图片来自作者)

        现在,当输入被提供给变压器模型并且我们期待输出时,这就是应该发生的情况。但是在训练/微调转换器模型时,我们已经在训练数据集中有了目标句子。那么它是如何工作的呢?

        它给我们带来了解码器的一个极其重要的概念:蒙面多头注意力。听起来很耳熟?当然,确实如此。在上一部分,我们了解了编码器块中使用的多头注意力的概念。现在让我们了解这两者的不同之处。

四、Mask多头注意力

        解码器块逐字生成目标句子,因此,必须对模型进行类似的训练,以便即使使用有限的标记集也可以做出准确的预测。

        因此,顾名思义,我们在计算自我注意矩阵之前屏蔽了句子右侧尚未预测的所有标记。这将确保自我注意机制仅考虑在预测的每个递归步骤中可供模型使用的令牌。

        让我们举一个简单的例子来理解它:

图3.遮罩多头注意力矩阵表示(图片来自作者)

        计算自我注意力矩阵的步骤和公式将与我们在编码器块中所做的相同。我们将在本文中简要介绍这些步骤。为了更深入地了解,请随时前往本系列文章的前一部分。

  • 为目标句子生成嵌入并获取目标矩阵 Y
  • 通过将随机权重矩阵 Wq、Wk 和 Wv 与目标矩阵 Y 相乘,将目标句子转换为 Q、K 和 V
  • 计算 Q 和 K 转置的点积
  • 通过将点积除以嵌入维度的平方根 dk) 来缩放点积)
  • 通过将所有单元格替换为 <mask> 来对缩放矩阵应用掩码 — inf
  • 现在在矩阵上应用 softmax 函数并将其与 Vi 矩阵相乘以生成注意力矩阵 Zi
  • 将多个注意力矩阵 Zi 连接成单个注意力矩阵 M

此注意力矩阵将与编码器块生成的输入句子表示形式一起馈送到解码器块的下一个组件。现在让我们了解解码器块如何使用这两个矩阵。

五、多头注意力

解码器块的这个子层也称为“编码器-解码器注意层”,因为它接受屏蔽的注意力矩阵(M)和编码器(R)的句子表示

图4.多头注意力机制(图片来自作者)

自我注意矩阵的计算与上一步中的计算方式非常相似,只是略有改动。由于我们有两个输入矩阵,因此它们被转换为Q,K和V,如下所示:

  • Q 使用 Wq 和 M 生成
  • K&V矩阵使用Wk&Wv和R生成

到现在为止,您必须已经了解,变压器模型背后的每个步骤和计算都有一个非常具体的原因。同样,这些矩阵中的每一个都是使用不同的输入矩阵生成的也是有原因的。你能猜到吗?

快速提示:答案在于如何计算自我注意力矩阵......

是的,你做对了!

如果你还记得,当我们使用输入句子理解自我注意的概念时,我们谈到了它如何在将源句子映射到自身时计算注意力分数。将源句子中的每个单词与同一句子中的每个其他单词进行比较,以量化关系并理解上下文。

在这里,我们也在做同样的事情,唯一的区别是,我们将输入句子的每个单词(K-转置)与目标句子单词(Q)进行比较。它将帮助我们量化这两个句子之间的相似程度,并理解单词之间的关系。

图5.带有输入句子和目标句子的注意力矩阵表示(图片来自作者)

最后,生成的注意力矩阵 Zi 将是维度 N X 1,其中 N = 目标句子的字数。

由于这也是一个多头注意力层,为了生成最终的注意力矩阵,将多个注意力矩阵串联起来。

有了这个,我们已经涵盖了解码器块的所有独特组件。但是,其他一些组件的功能与编码器块中的功能相同。让我们也简要地看一下它们:

  • 位置编码 — 就像编码器块一样,为了保留目标句子的词序,我们在将目标嵌入添加到目标嵌入之前,将其馈送到屏蔽多注意力层。
  • 前馈网络 — 解码器块中的这个子层是具有两个密集层和 ReLU 激活的经典神经网络。它接受来自多头注意力层的输入,对同一层执行一些非线性变换,最后生成上下文化向量。
  • 添加和规范组件 — 这是一个残差层,然后是层规范化。它有助于加快模型训练,同时确保不会丢失来自子层的信息。

我们在第 1 部分中详细介绍了这些概念。

有了这个,我们也完成了解码器块的内部工作。正如您可能已经猜到的那样,编码器和解码器块都用于处理和生成输入句子的上下文化向量。那么谁来执行实际的下一个单词预测任务呢?让我们来了解一下。

六、线性和softmax层

        它位于解码器网络的顶部,接受堆栈中最后一个解码器生成的输出矩阵作为输入。此输出矩阵将转换为与词汇表大小相同大小的 logit 向量。然后,我们在此 logit 向量上应用 softmax 函数以生成对应于每个单词的概率。概率最高的单词被预测为下一个单词。该模型使用 Adam 优化器针对交叉熵损失进行了优化。

        为了避免过度拟合,在编码器/解码器网络的每个子层之后都添加了dropout层

        这就是整个变压器模型的全部内容。至此,我们用最简单的语言完成了变压器模型架构的深入演练。

七、结论

        既然您已经了解了变压器模型的所有知识,那么在此基础上构建知识并深入研究更复杂的LLM模型架构(如BERT,GPT等)应该不难。

        您可以参考以下资源:

  1. BERT 101 - State Of The Art NLP Model Explained
  2. The Illustrated GPT-2 (Visualizing Transformer Language Models) – Jay Alammar – Visualizing machine learning one concept at a time.

        我希望这篇由两部分组成的文章能让变压器模型不那么令人生畏。

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

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

相关文章

【图像分类】 理论篇(1) 图像分类的测评指标

对于分类模型的性能评估通常采用混淆矩阵的方式和计算准确率、正确率、召回率和 F1 分数。本文详细介绍图像分类的测评指标 在二分类问题中&#xff0c;样本有正负两个类别&#xff0c;模型对样本的预测结果存在四种组合&#xff1a;真阳性&#xff0c;即预测为正&#x…

无涯教程-Perl - qx函数

描述 此功能是使用反引号执行系统命令的替代方法。例如,qx(ls -l)将使用-l命令行options执行UNIX ls命令。实际上,您可以使用任何一组定界符,而不仅仅是括号。 语法 以下是此函数的简单语法- qx EXPR返回值 该函数从执行的系统命令中返回值。 例 以下是显示其基本用法的…

FPGA实践 ——Verilog基本实验步骤演示

0x00 回顾&#xff1a;AND/OR/NOT 逻辑的特性 AND&#xff1a;与门可以具有两个或更多的输入&#xff0c;并返回一个输出。当所有输入值都为 1 时&#xff0c;输出值为 1。如果输入值中有任何一个为 0&#xff0c;则输出值为 0。 OR&#xff1a;或门可以具有两个或更多的输入…

微信小程序页面交互

目录 案例&#xff1a;登陆——>跳转到个人中心&#xff08;并展示个人信息&#xff09; 登陆流程 一、前端页面标签 二、收集前端页面数据 三、前端验证账号密码是否合规 四、根据账号密码向后端发送请求 1.请求工具 2.请求调用 3.根据回调得到的状态进行处理 五.成…

第一章:计算机与编程导论

1.1引言 如何解决问题&#xff1a;通过一组精确陈述的指令来设计问题的解决方案。 程序&#xff1a;一组指令以计算机可以接收和执行的格式描述时。 例如&#xff1a;百货商店管理&#xff0c;编写一套指令&#xff0c;在商品购进和售出时对其跟踪。如果这些指令是正确的&…

某行业CTF一道流量分析题

今晚看了一道题&#xff0c;记录学习下。 给了一个hacktrace.pcapng&#xff0c;分析主要内容如下&#xff1a; 上传两个文件&#xff0c;一个mouse.m2s&#xff0c;一个mimi.zip&#xff0c;将其导出。 mimi.zip中存放着secret.zip和key.pcapng 不过解压需要密码&#xff…

FLStudio21水果最新中文版升级下载

FLStudio21最新中文版是一款非常专业的后期编曲音频处理软件&#xff0c;对于音乐编辑处理的领域内的人而言&#xff0c;是非常能够满足需求的一款工具。FL Studio21拥有强大且专业的创作工具&#xff0c;这是先进的创作工具&#xff0c;让你的音乐突破想象力的限制。FL Studio…

Redis缓存雪崩、击穿、穿透?

我们谈谈Redis在实际项目中用作缓存时经常碰到的&#xff0c;也是经常面试的三大问题&#xff1a;缓存穿透、缓存击穿、缓存雪崩&#xff0c;以及这些问题的常用解决方法。 在介绍这三大问题之前&#xff0c;我们需要先了解Redis作为一个缓存中间件&#xff0c;在项目中是如何…

阿里云服务器竞价实例是什么意思?优缺点对比_选择攻略

腾讯云服务器CVM计费模式分为包年包月、按量计费和竞价实例&#xff0c;什么是竞价实例&#xff1f;竞价实例和按量付费相类似&#xff0c;优势是价格更划算&#xff0c;缺点是云服务器实例有被自动释放风险&#xff0c;腾讯云服务器网来详细说下什么是竞价实例&#xff1f;以及…

【动态map】牛客挑战赛67 B

登录—专业IT笔试面试备考平台_牛客网 题意&#xff1a; 思路&#xff1a; 考虑动态的map 可以先定义一个状态&#xff0c;然后用map统计前缀这个状态的出现次数 在这里&#xff0c;定义{a,b}为cnt1 - cnt0和cnt2 - cnt0 当cnt0 和 cnt1都和cnt2相同时&#xff0c;统计贡献…

人机交互中的混合多重反馈

人机交互中态、势、感、知的混合多重反馈是指在交互过程中综合运用不同方面的反馈信息&#xff0c;包括用户态度&#xff08;态&#xff09;、行为动势&#xff08;势&#xff09;、情感体验&#xff08;感&#xff09;和认知反馈&#xff08;知&#xff09;。这种多重反馈可以…

《机器学习系统:设计与实现》读书笔记一

最近几年一直在做算法工程的工作&#xff0c;对机器学习系统有所涉猎&#xff0c;也很感兴趣。近期发现一本开源书籍《机器学习系统&#xff1a;设计与实现》。去图书馆找了它的纸质版&#xff0c;发现内容不尽相同。在这里结合两者做一个读书笔记。本文是第一篇&#xff0c;主…

04 mysql innodb record

前言 最近看到了 何登成 大佬的 "深入MySQL源码 -- Step By Step" 的 pdf 呵呵 似乎是找到了一些 方向 之前对于 mysql 方面的东西, 更多的仅仅是简单的使用[业务中的各种增删改查], 以及一些面试题的背诵 这里会参照 MySQL Internals Manual 来大致的看一下 i…

Karmada 多云容器编排引擎支持多调度组,助力成本优化

根据 Flexera 最新发布的《2023 年云现状调查报告》&#xff0c;在受访的750家企业中&#xff0c;使用多云的企业比例高达87%&#xff1a; 在使用多云的受访者中&#xff0c;排在前两位的多云挑战分别是&#xff1a;孤立在不同云上的应用程序和云之间的灾难恢复/故障切换。在所…

Spring源码系列:核心概念解析

前言 本文旨在为读者解析Spring源码中的关键类&#xff0c;以便读者在深入阅读源码时&#xff0c;能够了解关键类的作用和用途。在阅读Spring源码时&#xff0c;经常会遇到一些不熟悉的概念&#xff0c;了解关键类的作用可以帮助读者更好地理解这些概念。 BeanDefinition Be…

力扣:61. 旋转链表(Python3)

题目&#xff1a; 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 示例&…

有人真敢编,有人真敢信。

前几天发过一篇旅游小攻略 自由行的一些小tips 其实提到了一些关于泰国的话题&#xff0c;说实话&#xff0c;我知道有人编泰国噶腰子的小作文&#xff0c;但我一直以为只有一小撮人会信这种&#xff0c;然后从知乎上发现&#xff0c;挺让人无语的&#xff0c;什么去泰国被绑架…

运维监控学习笔记5

Linux的内存是虚拟内存&#xff0c;是物理内存和交换分区swap。 内存&#xff1a; 页&#xff1a;4K&#xff0c; 硬盘&#xff1a;块。 寻址&#xff1a; 空间&#xff1a;内存的合并。大页内存。 free命令&#xff1a; [rootvm1 ~]# free -htotal used fre…

AI项目一:mediapipe测试

若该文为原创文章&#xff0c;转载请注明原文出处。 一. 引言 MediaPipe 是一款由 Google Research 开发并开源的多媒体机器学习模型应用框架。在谷歌&#xff0c;一系列重要产品&#xff0c;如 YouTube、Google Lens、ARCore、Google Home 以及 Nest&#xff0c;都已深度整合了…

自我介绍的重要性:留下深刻的第一印象

标题&#xff1a;自我介绍的重要性&#xff1a;留下深刻的第一印象 摘要&#xff1a; 自我介绍是我们在社交和职业场合中常常需要面对的一项任务。一个出色的自我介绍可以帮助我们在短时间内给他人留下深刻的第一印象&#xff0c;从而建立良好的人际关系和职业机会。本论文旨在…