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

news2024/12/23 13:55:42

使用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.coloradmin.cn/o/903074.html

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

相关文章

无重复字符的最长子串——力扣3

滑动窗口 int lengthOfLongestSubstring(string s){int n=s.size();unordered_set<char

在jupyter notebook中使用海龟绘图

首先&#xff0c;安装ipyturtle3 ref:ipyturtle3 PyPI pip install ipyturtle3然后&#xff0c;安装ipycanvas ipycanvas是一个需要安装在与JupyterLab实例相同环境的包。此外&#xff0c;您需要安装nodejs&#xff0c;并启用JupyterLab ipycanvas小部件。 所有这些都在ipy…

阿里云2核4G服务器配置汇总表_轻量和ECS

阿里云2核4G服务器配置价格表&#xff0c;297元一年&#xff0c;配置为轻量应用服务器2核4G、4M带宽、60GB高效云盘&#xff0c;折合24元一个月。 目录 2核4G服务器轻量&#xff1a; 2核4G服务器ECS 关于轻量和ECS的区别&#xff1a; 2核4G服务器轻量&#xff1a; 云服务器…

2023前端面试笔记 —— HTML5(持续收集更新)

系列文章目录 内容链接2023前端面试笔记HTML5 文章目录 系列文章目录前言一、HTML 文件中的 DOCTYPE 是什么作用二、HTML、XML、XHTML 之间有什么区别三、前缀为 data- 开头的元素属性是什么四、谈谈你对 HTML 语义化的理解五、HTML5 对比 HTML4 有哪些不同之处六、meta 标签有…

【LeetCode-中等题】11. 盛最多水的容器

题目 题解一:双指针法 思路&#xff1a; 题目中的示例为&#xff1a; 在初始时&#xff0c;左右指针分别指向数组的左右两端&#xff0c;它们可以容纳的水量为 min⁡(1,7)∗88 此时我们需要移动一个指针。移动哪一个呢&#xff1f;应该移动对应数字较小的那个指针&#xff0…

数据结构 | 堆

本文简要总结堆的概念。 更新&#xff1a;2023 / 8 / 20 数据结构 | 堆 堆概念方法插入步骤 删除步骤 示例大根堆堆插入删除堆排序 代码实现Python大根堆1.2. heapq 小根堆1.2. heapq 参考链接 堆 概念 如果谈到堆排序&#xff0c;那么必然要说说什么是 大根堆 max heap 和 …

(排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

❓ 剑指 Offer 45. 把数组排成最小的数 难度&#xff1a;中等 输入一个非负整数数组&#xff0c;把数组里所有数字拼接起来排成一个数&#xff0c;打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459”…

不是说嵌入式是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染嵌入式可以拿高薪&#xff0c;这在行业内也是事实&#xff0c;但前提是你有足够的竞争力&#xff0c;真的懂嵌入式。 时至今日&#xff0c;能做嵌入式程序开发的人其实相当常见&#xff0c;尤其是随着树莓派、Arduino等开发板的普及&#xff0c;甚…

游戏找不到msvcr100.dll解决方法,常见的三种解决方法

在计算机领域&#xff0c;msvcr100.dll是一个非常重要的动态链接库文件。它是Microsoft Visual C 2010 Redistributable的一部分&#xff0c;用于支持Visual Studio 2010的开发环境。然而&#xff0c;在某些情况下&#xff0c;msvcr100.dll可能会出现问题&#xff0c;导致程序无…

Centos7内存高|查看占用内存命令

Centos7查看磁盘和CUP统计信息iostat命令 Centos7内存高|查看占用内存命令 docker实战(一):centos7 yum安装docker docker实战(二):基础命令篇 docker实战(三):docker网络模式(超详细) docker实战(四):docker架构原理 docker实战(五):docker镜像及仓库配置 docker实战(六…

Docker自学:利用FastAPI建立一个简单的web app

环境配置&#xff1a;下载Docker Desktop 文件一&#xff1a;main.py from typing import Unionfrom fastapi import FastAPIimport uvicornapp FastAPI()app.get("/") def read_root():return {"Hello": "World"}app.get("/items/{item…

跟着NC学作图 | 使用python绘制折线图

写在前面 今天分享一篇使用Python绘制折线图的教程&#xff0c;在我们前提的教程中&#xff0c;关于使用R语言绘制折线图的教程也很少&#xff0c;跟着PC学作图 | 小提琴图Tufte箱形图折线图的绘制教程也只有相关一部分。 Python自己也是一直在学习&#xff0c;那么也就顺带分…

透视俄乌网络战之一:数据擦除软件

数据擦除破坏 1. WhisperGate2. HermeticWiper3. IsaacWiper4. WhisperKill5. CaddyWiper6. DoubleZero7. AcidRain8. RURansom 数据是政府、社会和企业组织运行的关键要素。数据擦除软件可以在不留任何痕迹的情况下擦除数据并阻止操作系统恢复摧&#xff0c;达到摧毁或目标系统…

排名前 6 位的数学编程语言

0 说明 任何对数学感兴趣或计划学习数学的人&#xff0c;都应该至少对编程语言有一定的流利程度。您不仅会更有就业能力&#xff0c;还可以更深入地理解和探索数学。那么你应该学习什么语言呢&#xff1f; 1.python 对于任何正在学习数学的人来说&#xff0c;Python都是一门很棒…

Linux 线程并发运行

一、并发与并行 并行&#xff1a;两个线程在同一时刻同时执行&#xff0c;需要有两个处理器。 并发&#xff1a;两个线程在同一时刻交替执行&#xff0c;只有一个处理器。 并行是一种特殊的并发。 二、线程并发运行 代码如下&#xff1a; 代码分析&#xff1a; 主函数中第…

Excel/PowerPoint柱状图条形图负值设置补色

原始数据&#xff1a; 列1系列 1类别 14.3类别 2-2.5类别 33.5类别 44.5 默认作图 解决方案 1、选中柱子&#xff0c;双击&#xff0c;按如下顺序操作 2、这时候颜色会由一个变成两个 3、对第二个颜色进行设置&#xff0c;即为负值的颜色 条形图的设置方法相同

智能记账分享,轻松记录、分析和保存收支明细

在现代生活中&#xff0c;财务管理变得越来越重要。要想清晰地了解个人或家庭的财务状况&#xff0c;记录、分析和保存收支明细是必不可少的任务。现在&#xff0c;我们为你带来了一款智能记账分享工具&#xff0c;让你轻松记录、分析和保存收支明细 首先&#xff0c;我们要打…

一文带你了解如何在Java中操作Redis

文章目录 前言一、 Redis客户端简介1. Redis客户端分类2. Spring 整合 Redis 的两种方式 二、 使用 Jedis 操作 Redis1. Jedis的maven坐标2. 使用Jedis操作Redis的步骤3. Jedis 操作 Redis 示例 三、 使用 Spring Data Redis 操作 Redis1. Spring Data Redis 的 maven 坐标2. s…