LLM架构自注意力机制Transformers architecture Attention is all you need

news/2024/5/21 1:16:04/文章来源:https://blog.csdn.net/zgpeace/article/details/132391611

使用Transformers架构构建大型语言模型显著提高了自然语言任务的性能,超过了之前的RNNs,并导致了再生能力的爆炸。
在这里插入图片描述

Transformers架构的力量在于其学习句子中所有单词的相关性和上下文的能力。不仅仅是您在这里看到的,与它的邻居每个词相邻,而是与句子中的每个其他词。将注意力权重应用于这些关系,以便模型学习每个词与输入中的其他词的相关性,无论它们在哪里。
在这里插入图片描述

这使得算法能够学习谁有这本书,谁可能有这本书,以及它是否与文档的更广泛的上下文相关。这些注意力权重在LLM训练期间学到,您将在本周晚些时候了解更多。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这个图被称为注意力图,可以用来说明每个词与每个其他词之间的注意力权重。在这个风格化的例子中,您可以看到单词“book”与单词“teacher”和“student”强烈地连接或关注。
在这里插入图片描述

这被称为自注意力,这种跨整个输入学习注意力的能力显著地提高了模型编码语言的能力。
在这里插入图片描述

现在您已经看到了Transformers架构的一个关键属性,自注意力,让我们从高层次看看模型是如何工作的。这是一个简化的Transformers架构图,这样您可以从高层次关注这些过程发生的地方。Transformers架构分为两个不同的部分,编码器和解码器。
在这里插入图片描述

这些组件相互协作,并且它们有许多相似之处。此外,请注意,您在这里看到的图是从原始的“Attention is All You Need”论文中派生出来的。注意模型的输入是在底部,输出是在顶部,在可能的情况下,我们将尝试在整个课程中保持这一点。

现在,机器学习模型只是大型的统计计算器,它们使用数字而不是单词。因此,在将文本传递到模型进行处理之前,您必须首先对单词进行标记。简单地说,这将单词转换为数字,每个数字代表模型可以使用的所有可能单词的字典中的位置。您可以选择多种标记化方法。

例如,匹配两个完整单词的令牌ID,
在这里插入图片描述

或使用令牌ID表示单词的部分。
在这里插入图片描述

正如您在这里看到的。重要的是,一旦您选择了一个标记器来训练模型,您在生成文本时必须使用相同的标记器。现在您的输入表示为数字,您可以将其传递给嵌入层。这一层是一个可训练的向量嵌入空间,一个高维空间,其中每个令牌都表示为一个向量,并在该空间内占据一个唯一的位置。
在这里插入图片描述

词汇表中的每个令牌ID都与一个多维向量匹配,直觉是这些向量学会编码输入序列中单个令牌的含义和上下文。嵌入向量空间在自然语言处理中已经使用了一段时间,像Word2vec这样的上一代语言算法使用了这个概念。如果您不熟悉这个,不用担心。您将在整个课程中看到这方面的例子,本周末的阅读练习中还有一些链接到其他资源。

回顾样本序列,您可以看到在这个简单的情况下,每个单词都与一个令牌ID匹配,每个令牌都映射到一个向量。在原始的Transformers论文中,向量的大小实际上是512,所以比我们可以放到这个图像上的要大得多。
在这里插入图片描述

为了简单起见,如果您想象一个向量大小只有三个,您可以将单词绘制到一个三维空间中,并看到这些单词之间的关系。您现在可以看到如何关联嵌入空间中彼此靠近的单词,
在这里插入图片描述

以及如何计算单词之间的距离作为一个角度,
在这里插入图片描述

这使得模型具有数学上理解语言的能力。当您将令牌向量添加到编码器或解码器的基础时,您还添加了位置编码。
在这里插入图片描述

模型并行处理每个输入令牌。因此,通过添加位置编码,您保留了关于单词顺序的信息,并且不会丢失单词在句子中的位置的相关性。一旦您将输入令牌和位置编码相加,您就将结果向量传递给自注意力层。

在这里插入图片描述

在这里,模型分析输入序列中的令牌之间的关系。正如您之前看到的,这使得模型能够关注输入序列的不同部分,以更好地捕获单词之间的上下文依赖关系。在训练期间学到并存储在这些层中的自注意力权重反映了输入序列中每个单词与序列中所有其他单词的重要性。

在这里插入图片描述

但这不仅仅发生一次,Transformers架构实际上具有多头自注意力。这意味着多组自注意力权重或头部并行独立地学习。注意力层中包括的注意力头数因模型而异,但范围在12-100之间是常见的。
在这里插入图片描述

直觉是每个自注意力头将学习语言的不同方面。例如,一个头可能会看到我们句子中的人实体之间的关系。
在这里插入图片描述

而另一个头可能专注于句子的活动。
在这里插入图片描述

而另一个头可能专注于其他属性,例如单词是否押韵。
在这里插入图片描述

重要的是要注意,您不会提前指定注意力头将学习的语言方面。每个头的权重都是随机初始化的,只要有足够的训练数据和时间,每个头都会学习语言的不同方面。虽然一些注意力图很容易解释,就像这里讨论的例子,但其他的可能不是。

现在所有的注意力权重都已经应用到您的输入数据,输出通过一个完全连接的前馈网络进行处理。
在这里插入图片描述

这一层的输出是与每个令牌在分词器字典中的概率得分成比例的logits向量。

然后,您可以将这些logits传递给最终的softmax层,其中它们被标准化为每个单词的概率得分。这个输出包括词汇表中每个单词的概率,所以这里可能有成千上万的分数。
在这里插入图片描述

一个单一的令牌将有一个比其他所有令牌更高的分数。这是最有可能预测的令牌。但是,正如您在课程后面将看到的,您可以使用多种方法从这个概率向量中选择最终的选择。

参考

https://www.coursera.org/learn/generative-ai-with-llms/lecture/3AqWI/transformers-architecture

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

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

相关文章

docker的资源控制及数据管理

docker的资源控制及docker数据管理 一.docker的资源控制 1.CPU 资源控制 1.1 资源控制工具 cgroups,是一个非常强大的linux内核工具,他不仅可以限制被 namespace 隔离起来的资源, 还可以为资源设置权重、计算使用量、操控进程启停等等。 …

苍穹外卖 day1 搭建成功环境

引入 idea找不到打包生成的文件目录怎么办,首先点击这个小齿轮 show ecluded files然后就能找到隐藏的文件 这个jar包内含tomcat,可以直接丢在linux上用 开发环境:开发人员在开发阶段使用的环境,一般外部用户无法访问 测试环…

shell脚本之循环语句

循环语句 循环含义 将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件 for循环语句 一般知道循环次数使用for循环 第一类 格式1: for名称 in 取值次数;do;done; 格式2: for 名称 in {取值列表} do done# 打印20次 for i i…

k8s之Pod及Probe 探针机制(健康检查机制)

文章目录 1、Pod1.1、定义1.2、Pod的形式1.2、Pod的使用1.3、 Pod生命周期1.4、生命周期钩子1.5、临时容器1.5.1、定义1.5.2、使用临时容器的步骤 1.6、静态Pod 2、Probe 探针机制(健康检查机制)2.1、探针分类2.2、Probe配置项2.3、编写yaml测试探针机制…

学C的第三十四天【程序环境和预处理】

相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十三天【C语言文件操作】_高高的胖子的博客-CSDN博客 1 . 程序的翻译环境和执行环境 在ANSI C(C语言标准)的任何一种实现中,存在两个不同的环境。 &#xff0…

PyTorch学习笔记(十六)——利用GPU训练

一、方式一 网络模型、损失函数、数据(包括输入、标注) 找到以上三种变量,调用它们的.cuda(),再返回即可 if torch.cuda.is_available():mynn mynn.cuda() if torch.cuda.is_available():loss_function loss_function.cuda(…

1339. 分裂二叉树的最大乘积

链接: ​​​​​​1339. 分裂二叉树的最大乘积 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

Java性能分析中常用命令和工具

当涉及到 Java 性能分析时,有一系列强大的命令和工具可以帮助开发人员分析应用程序的性能瓶颈、内存使用情况和线程问题。以下是一些常用的 Java 性能分析命令和工具,以及它们的详细说明和示例。 以下是一些常用的性能分析命令和工具汇总: …

Nacos配置管理、Feign远程调用、Gateway服务网关

1.Nacos配置管理 1.1.将配置交给Nacos管理的步骤 1.在Nacos中添加配置 Data Id服务名称-环境名称.yaml eg&#xff1a;userservice-dev.yaml 2.引入nacos-config依赖 在user-service服务中&#xff0c;引入nacos-config的客户端依赖 <!--nacos配置管理依赖--> <dep…

redis--主从复制

redis主从复制 Redis 主从复制是一种用于实现数据复制和数据备份的机制&#xff0c;它允许将一个 Redis 服务器的数据复制到其他 Redis 服务器上。主从复制在 Redis 中通常用于构建高可用性架构、读写分离以及数据分析等场景。 主从复制的角色 主服务器&#xff08;Master&a…

系统架构设计专业技能 · 软件工程之需求工程

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

Cpp学习——类与对象3

目录 一&#xff0c;初始化列表 1.初始化列表的使用 2.初始化列表的特点 3.必须要使用初始化列表的场景 二&#xff0c;单参数构造函数的隐式类型转换 1.内置类型的隐式类型转换 2. 自定义类型的隐式类型转换 3.多参数构造函数的隐式类型转换 4.当你不想要发生隐式类型转换…

Unity VR:XR Interaction Toolkit 输入系统(Input System):获取手柄的输入

文章目录 &#x1f4d5;教程说明&#x1f4d5;Input System 和 XR Input Subsystem&#xff08;推荐 Input System&#xff09;&#x1f4d5;Input Action Asset⭐Actions Maps⭐Actions⭐Action Properties&#x1f50d;Action Type (Value, Button, Pass through) ⭐Binding …

数据结构<树和二叉树>顺序表存储二叉树实现堆排

✨Blog&#xff1a;&#x1f970;不会敲代码的小张:)&#x1f970; &#x1f251;推荐专栏&#xff1a;C语言&#x1f92a;、Cpp&#x1f636;‍&#x1f32b;️、数据结构初阶&#x1f480; &#x1f4bd;座右铭&#xff1a;“記住&#xff0c;每一天都是一個新的開始&#x1…

Gin+微服务实现抖音视频上传到七牛云

文章目录 安装获取凭证Gin处理微服务处理 如果你对Gin和微服务有一定了解&#xff0c;看本文较容易。 安装 执行命令&#xff1a; go get github.com/qiniu/go-sdk/v7获取凭证 Go SDK 的所有的功能&#xff0c;都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的A…

Go语言入门指南:基础语法和常用特性解析(上)

一、Go语言前言 Go是一种静态类型的编译语言&#xff0c;常常被称作是21世纪的C语言。Go语言是一个开源项目&#xff0c;可以免费获取编译器、库、配套工具的源代码&#xff0c;也是高性能服务器和应用程序的热门选择。 Go语言可以运行在类UNIX系统——比如Linux、OpenBSD、M…

Python批量爬虫下载文件——把Excel中的超链接快速变成网址

本文的背景是&#xff1a;大学关系很好的老师问我能不能把Excel中1000个超链接网址对应的pdf文档下载下来。虽然可以手动一个一个点击下载&#xff0c;但是这样太费人力和时间了。我想起了之前的爬虫经验&#xff0c;给老师分析了一下可行性&#xff0c;就动手实践了。    没…

Platypus:Quick,Cheap,and Powerful Refinement of LLMs

Platypus:Quick,Cheap,and Powerful Refinement of LLMs IntroductionMethod2.1 Curating Open- PlatypusRemoving similar&duplicate questionsContamination CheckFine-tuning & mergingResult参考Introduction 现在大模型已经取得很不错的结果,如何把大模型的能…

sh 脚本循环语句和正则表达式

目录 1、循环语句 1、for 2、while 3、until 2、正则表达式 1、元字符 2、表示次数 3、位置锚定 4、分组 5、扩展正则表达式 1、循环语句 循环含义 将某代码段重复运行多次&#xff0c;通常有进入循环的条件和退出循环的条件 重复运行次数 循环次数事先已知 循环次…

1、攻防世界第一天

1、网站目录下会有一个robots.txt文件&#xff0c;规定爬虫可以/不可以爬取的网站。 2、URL编码细则&#xff1a;URL栏中字符若出现非ASCII字符&#xff0c;则对其进行URL编码&#xff0c;浏览器将该请求发给服务端&#xff1b;服务端会可能会先对收到的url进行解码&#xff0…