LLM架构自注意力机制Transformers architecture Attention is all you need
使用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
相关文章:
LLM架构自注意力机制Transformers architecture Attention is all you need
使用Transformers架构构建大型语言模型显著提高了自然语言任务的性能,超过了之前的RNNs,并导致了再生能力的爆炸。 Transformers架构的力量在于其学习句子中所有单词的相关性和上下文的能力。不仅仅是您在这里看到的,与它的邻居每个词相邻&…...
计算机网络 QA
DNS 的解析过程 浏览器缓存。当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址(曾经访问过该域名并且没有清空缓存)系统缓存。当浏览器缓存中无域名对应的 IP 地址时,会自动检测用户计算机…...
安果天气预报 产品介绍
软件介绍版本号 2.0.5 安果天气预报:全世界覆盖,中国定制 想要查找北京、上海、纽约、东京还是巴黎的天气?一款简约的天气预 报应用为你呈现。专注于为用户提供纯净的天气体验,我们不发送任何打扰的通知。包含空气质量、能见度、…...
net start Mysql 启动服务时 ,显示“Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误
一、问题 有时候,输入net start Mysql 启动服务时 mysql>net start Mysql 显示 Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误 二、原因 由于mysql的默认端口是3306,因此在启动服务的时候,如果此端口被占用,就会出…...
DAY24
题目一 啊 看着挺复杂 其实很简单 第一种方法 就是纵轴是怪兽编号 横轴是能力值 看看能不能打过 逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱 这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间 所以引出下一种做法 纵…...
Redis过期数据的删除策略
1 介绍 Redis 是一个kv型数据库,我们所有的数据都是存放在内存中的,但是内存是有大小限制的,不可能无限制的增量。 想要把不需要的数据清理掉,一种办法是直接删除,这个咱们前面章节有详细说过;另外一种就是…...
如何使用CSS实现一个拖拽排序效果?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现拖拽排序效果的CSS和JavaScript示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦…...
leetcode 118.杨辉三角
⭐️ 题目描述 🌟 leetcode链接:https://leetcode.cn/problems/pascals-triangle/description/ 代码: class Solution { public:vector<vector<int>> generate(int numRows) {// 先开空间vector<vector<int>> v;v.…...
微服务框架之SpringBoot面试题汇总
微服务框架之SpringBoot面试题汇总 什么是Spring Boot? 多年来,随着新功能的增加,spring变得越来越复杂。Spring项目,我们必须添加构建路径或添加Maven依赖关系,配置应用程序服务器,添加spring配置。因此&…...
Promise详解
目录 一、前言:为什么会出现Promise?二、Promise是什么?2.1 Promise的初体验 三、使用Promise的好处?3.1 指定回调函数的方式更加灵活3.2 可以解决回调地狱问题,支持链式调用 四、Promise实例对象的两个属性五、resolve函数以及reject函数六、Promise…...
Oracle 查询(当天,月,年)的数据
Trunc 在oracle中,可利用 trunc函数 查询当天数据,该函数可用于截取时间或者数值,将该函数与 select 语句配合使用可查询时间段数据 查询当天数据 --sysdate是获取系统当前时间函数 --TRUNC函数用于截取时间或者数值,返回指定的…...
什么是梯度下降
什么是梯度下降 根据已有数据的分布来预测可能的新数据,这是回归 希望有一条线将数据分割成不同类别,这是分类 无论回归还是分类,我们的目的都是让搭建好的模型尽可能的模拟已有的数据 除了模型的结构,决定模型能否模拟成功的关键…...
开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)
安装环境 PHP 拓展 直接使用 宝塔一键安装 (Windows系统不支持) 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot 配…...
Vue 中hash 模式与 history 模式的区别
hash 模式: - 地址中永远带着 # 号,不美观。 - 兼容性比较好。 - 通过手机 app 分享地址时,如果 app 效验严格,该地址会被标记为不合法。 history 模式: - 地址干净,美观。 - 兼容性和 hash 模式相比…...
Dockerfile推送私有仓库的两个案例
一,编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。 具体要求如下: (1)基于centos基础镜像; (2)指定作者信息; ÿ…...
【指标】指标公式大全,款款经典(建议珍藏)!-神奇指标网
三、指标源码: 1、连续三天高开高走的选股公式 count(o〉ref(c,1)andc>o,3)3; 2、连续3天每天的最低价都比前一天高 count(l〉ref(c,1),3)3; 3、周量缩小50%或40%或n&#x…...
面试题目收集
Zset排行榜功能如何设计key? key就设计成排行榜的名字,比如下面插入或者更新数据 Long zadd(final String key, final double score, final String member) key : 排行榜的名字 memeber : 用户 score : 用户的分数 项目…...
创建R包-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)
目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标:在RStudio中创建一个R包,这个R包中包含C函数,接口是Rc…...
chatGPT如何解释泽众PerformanceRunner性能测试工具?
PerformanceRunner 是一个性能测试工具,可以帮助测试人员进行性能测试。它的主要功能包括: 1. 脚本录制和回放: PerformanceRunner可以录制 HTTP/HTTPS 通信协议的脚本,并能够回放模拟真实用户的行为。通过录制和回放,…...
LA@向量组线性相关性
文章目录 向量组线性相关性线性相关线性无关多向量向量组线性相关单向量向量组的线性相关性单位向量向量组线性相关性双向量向量组的线性相关性双向量线性相关的几何意义三向量线性相关的几何意义包含零向量的向量组线性相关概念迁移:线性方程组和线性相关齐次线性方程组和向量…...
One API 部署教程(下):使用指南
导读:前面两篇讲了本地和线上部署,现在 One API 已经跑起来了,接下来就是真正的使用环节! 理解核心概念 在开始之前,咱们先搞清楚几个关键概念,不然后面容易晕。 渠道(Channel):就是你的各个 AI 平台的 API Key。比如你有 DeepSeek 的 Key、OpenAI 的 Key、通义千问…...
Vibe Coding 工具选型决策树:5 类项目场景对应 7 种组合配置方案
1. 项目概述:为什么“选对组合”比“选对单个工具”更重要 大多数人第一次听说 vibe coding,是在看到某位工程师用 Cursor 写完一个 Vue3 表单组件只花了 90 秒,或者用 Claude Code 在 VS Code 里补全了整套 Express 路由逻辑后脱口而出的那句“这哪是写代码,这是调 API”…...
Vue3生态系统:打造完整的前端开发体系
Vue3生态系统:打造完整的前端开发体系 前言 大家好,我是前端老炮儿。今天咱们来聊聊Vue3的生态系统。 如果说Vue3是一辆超级跑车,那它的生态系统就是配套的加油站、维修站和改装厂。一个好的框架不仅要有强大的核心能力,还要有…...
告别阿里云物联网平台:用免费公共MQTT服务器玩转ESP32远程监控
告别商业云平台:用免费公共MQTT服务器实现ESP32远程监控 在物联网项目开发中,远程数据传输是核心需求之一。许多开发者习惯性选择阿里云、腾讯云等商业物联网平台,却常常被复杂的配置流程、高昂的服务费用所困扰。实际上,对于个人…...
八大排序算法 - 冒泡排序
一、算法简介冒泡排序是最基础的交换类排序,思路简单易懂。原理是相邻元素两两比较,逆序则交换,大数逐步向后沉,小数向前冒,如同气泡上浮。时间复杂度:最优(O(n)) 最坏 / 平均(O(n^2))空间复杂度࿱…...
FFXIV TexTools:如何用3个步骤打造你的专属艾欧泽亚冒险形象
FFXIV TexTools:如何用3个步骤打造你的专属艾欧泽亚冒险形象 【免费下载链接】FFXIV_TexTools_UI 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_TexTools_UI 想象一下,你站在艾欧泽亚的冒险广场上,周围的玩家都穿着独特的装备…...
从零到告警:用Prometheus+SNMP监控华为交换机,并配置Grafana看板与告警规则
从零构建华为交换机智能监控体系:PrometheusSNMP实战指南 当机房里的华为交换机突然宕机时,运维团队往往要面对业务部门的连环追问。传统的人工巡检方式就像用体温计量火山喷发——既滞后又无力。本文将手把手带您搭建从数据采集到告警响应的完整监控闭环…...
别再让烙铁头‘烧死’了!手把手教你电烙铁日常保养与复活术(附温度设置建议)
电烙铁头养护全攻略:从氧化原理到实战修复技巧 1. 烙铁头氧化背后的科学原理 烙铁头氧化并非单纯由高温引起,而是高温与氧气共同作用的结果。当烙铁头暴露在空气中时,高温会加速金属表面与氧气的化学反应,形成一层致密的氧化层。这…...
5步实现Windows电脑直接运行安卓应用:APK安装器终极指南
5步实现Windows电脑直接运行安卓应用:APK安装器终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK安装器是一款革命性的Windows工具,让…...
ESP32 OTA升级避坑指南:用Python脚本一键搭建本地服务器,告别手动配置
ESP32 OTA升级实战:Python自动化方案与高频问题破解 当你的ESP32设备部署在难以物理接触的场合——比如嵌入墙体的智能开关、高架桥上的环境监测节点,或是旋转机械内部的振动传感器,固件更新就成了开发者的噩梦。传统烧录器方案需要专人携带设…...
