【NLP】温和解读:transformer的核心思想

变压器模型及其关键组件的概述。

一、介绍

        在这篇博文中,我将讨论本世纪最具革命性的论文“注意力是你所需要的一切”(Vaswani et al.)。首先,我将介绍自我注意机制,然后介绍变形金刚的架构细节。在之前的博客文章《从Seq2Seq到注意力:革命性的序列建模》中,我讨论了注意力机制和Bahdanau注意力的起源。在本博客中,我将以之前的信息为基础。因此,如果您还没有查看上一篇文章,请去查看。Bahdanau注意力模型使用2个RNN和注意力机制为编码器的隐藏状态分配权重。在“注意力是你所需要的一切”论文中,作者已经摆脱了所有的RNN。他们引入了一种新的架构,它不使用递归,而是完全依赖于自我注意机制。让我解释一下什么是自我注意机制:

二、自我注意机制

        自我注意机制使模型能够通过同时关注所有位置来捕获序列中不同位置之间的依赖关系。在上一篇博客中,我们讨论了使用查询和键值对来计算注意力分数。注意力分数决定了每个键值对对给定查询的重要性或相关性。自我注意扩展了这种机制,使其在单个序列内运行,而无需外部输入。

 

        在上图中,您可以看到自我注意机制。让我从左到右解释一下这个数字。首先,我们有一个输入 x。我们将此输入与可训练的权重矩阵(Wq,Wk,Wv)相乘。作为输出,我们得到查询、键和值矩阵。我们使用查询和键矩阵来查找它们的相似性。上图仅取点积,但在变压器架构中我们也对其进行缩放。此点积的输出是注意力权重 (a)。以同样的方式,我们将计算所有输入 x(t) 的注意力权重。计算完所有注意力权重后,将应用 softmax 函数对点积进行归一化,从而生成总和为 1 的注意力权重。从 softmax 运算获得的注意力权重用于计算值向量的加权和。此加权总和表示输入序列中每个位置的自参与表示。自我注意的优势在于它能够对序列中的局部和全局依赖关系进行建模。它从整个序列中捕获上下文信息,从而更全面地了解不同位置之间的关系。

三、缩放点积

        如上一段所述,我们不仅使用点积来查找相关性。但是我们也通过键维数(dk)的平方根的因子来缩放它。这有助于确保查询和键之间的点积对于大型 dk 不会变得太大。如果点积变得太大,则softmax输出将非常小。 为了避免这种情况,我们缩放点积。

四、多头注意力

        多头注意力只是自我注意机制的补充。它允许模型共同关注不同的位置,并同时学习输入序列的多种表示。通过并行执行多组注意力计算,多头注意力捕获了输入序列的不同方面,并增强了模型捕获复杂依赖关系的能力。每个注意力头都有不同的查询、键和值矩阵。

多头注意事项

来自不同注意力头的输出通过线性投影进行组合和转换,从而产生从多个角度整合信息的最终表示。

五、transformer架构

        “注意力就是您所需要的一切”一文中介绍的转换器体系结构由几个关键组件组成,这些组件协同工作以实现有效的序列建模。主要组件是编码器、解码器、位置编码、残差连接、层归一化、多头注意力块、屏蔽多头注意力块和前馈网络。

                                                变压器架构

        我们已经讨论了多头注意力块。蒙面多头注意力与此相同,但有一个变化。我们屏蔽后续序列元素。即,只允许参加当前职位之前和包括当前职位的职位。这是通过将那些的 softmax 值设置为负无穷大来实现的。

        编码器:变压器架构中的左侧部分是编码器部分。它由一个多头注意力块、一个前馈网络、多个残差连接和层归一化组成。它接受输入序列的嵌入以及添加到其中的位置编码。在原始论文中,他们使用了6个编码器。

        解码器:转换器架构中的正确部分是解码器部分。它由一个屏蔽的多头注意力块、一个简单的多头注意力块、一个前馈网络以及多个残差连接和层归一化组成。它接受输出序列的嵌入以及添加到其中的位置编码。在原始论文中,他们使用了6个解码器。

        残差连接和层规范化: 残差连接(也称为跳过连接)是绕过神经网络中的一个或多个层的直接连接。在转换器架构的上下文中,残差连接用于将子层的输出连接到其输入,允许原始输入流过层不变层归一化是一种用于规范化神经网络层内的激活的技术。它旨在通过减少内部协变量偏移来提高训练稳定性和泛化,内部协变量偏移是指网络学习时激活分布的变化。层归一化独立应用于每个神经元或特征,在小批量维度上规范化其值。

        前馈网络:在变压器架构中,前馈网络是一个组件,它在每个位置上独立运行,并且在每层内以相同方式运行。它负责转换自注意机制和位置前馈子层中输入序列的表示。在第一次变换之后,使用Relu激活函数将两个线性变换应用于自注意力机制的输出。

        位置编码: 输入和输出序列的嵌入与位置编码连接。这些编码注入有关序列中元素的相对位置的信息。

用于位置编码的正弦和余弦函数

学习的位置嵌入和通过正弦和余弦函数嵌入在语言任务中产生几乎相等的结果。

我将在另一篇博客文章中介绍评估指标、训练方法、推理时的解码方法和其他次要细节,其中我将从头开始实现 Transformer 架构。

六、结语

        总之,“注意力是你所需要的一切”论文介绍了一种称为变压器的开创性架构,它彻底改变了序列建模领域。这种架构在很大程度上依赖于自我注意的概念,允许它捕获输入序列中不同位置之间的依赖关系。Transformer的注意力机制使其能够对长期依赖关系进行建模,处理可变长度的输入,并在各种自然语言处理任务中实现最先进的性能。本文中介绍的体系结构已被许多语言模型使用,我将在以后的博客中讨论这些模型。在下一篇博文中,我将详细介绍自回归模型,如 GPT、GPT-2 和 GPT-3。

感谢您的阅读!

参考和引用

  1. 关注就是你所需要的一切
  2. 深入了解深度学习
  3. 图解变压器
  4. 旁白转换器语言模型
  5. 用于序列间建模的 RNN 和转换器
  6. 层归一化
  7. 深度残差学习

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

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

相关文章

基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章

最近在整理和编写基于C#的WinForm应用程序,然后碰到一个其他读者也可能碰到的问题,就是C#的Borderless无边框窗体的动画效果问题。 在Visual Studio 2022里,C#的WinForm程序提供了Borderless无边框窗体的样式效果,但是它没提供在无…

【Rust 基础篇】Rust 不可反驳模式与可反驳模式

导言 在Rust编程中,模式(Pattern)是一种强大的工具,用于匹配和解构数据。模式匹配不仅可以用于简单的变量绑定,还可以处理复杂的数据结构,从而让代码更加简洁和清晰。在本篇博客中,我们将探讨Rust模式的两种形式:不可反驳模式(Irrefutable Patterns)和可反驳模式(R…

区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型

区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型 目录 区间预测 | MATLAB实现基于QRF随机森林分位数回归多变量时间序列区间预测模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于QRF随机森林分位数回归多变量时间序列区间…

dp,最长上升子序列升级版

AcWing 896. 最长上升子序列 II - AcWing 896. 最长上升子序列 II 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数,表示完整序列。 输出格式 输出一个整数,表…

Visual Studio Code Python 扩展中的包管理

排版:Alan Wang Python 凭借其简单的语法和强大的库,目前已成为最流行的编程语言之一,也是最适合那些刚接触编程的人们的语言。但是,随着项目复杂性和规模的增长,管理依赖项的复杂性也会增加。当新用户不断承接更成熟的…

数分面试题-SQL常见面试题型1

目录标题 1、连续时间问题1.1 最近一周内的活跃天数1.2 每个用户一周内最大连续活跃天数1.3 计算截至当前,每个用户已经连续签到的天数 2、时间间隔问题举例3、sql窗口分析函数3.1 有一个日志登陆列表,获取用户在某个页面停留时长3.2 寻找至少连续出现3次…

【Docker】Docker容器编排

目录 一、Docker Compose1.2Docker Compose 环境安装1.3 YAML 文件格式及编写注意事项2.3 Docker Compose配置常用字段2.4 Docker Compose 常用命令 二、Docker Compose实验2.1编写Nginx的Dockerfile脚本2.2编写MySQL,Dockerfile脚本2.3编写PHP,Dockerfi…

K8S中网络如何通信

Kubernetes 提出了一个自己的网络模型“IP-per-pod”,能够很好地适应集群系统的网络需求,它有下面的这 4 点基本假设: 集群里的每个 Pod 都会有唯一的一个 IP 地址。Pod 里的所有容器共享这个 IP 地址。集群里的所有 Pod 都属于同一个网段。…

STM32MP157驱动开发——按键驱动(POLL 机制)

文章目录 “POLL ”机制:APP执行过程驱动使用的函数应用使用的函数pollfd结构体poll函数事件类型实现原理 poll方式的按键驱动程序(stm32mp157)gpio_key_drv.cbutton_test.cMakefile修改设备树文件编译测试 “POLL ”机制: 使用休眠-唤醒的方式等待某个…

MySQL主从复制、读写分离

目录 一、MySQL的复制类型 二、MySQL主从复制工作流程 三、MySQL的同步方式 1、异步复制(Async Replication) 2、同步复制(sync Replication) 3、半同步复制(Async Replication) 四、MySQL应用场景 …

《向量数据库指南》:向量数据库Pinecone移动到生产环境

目录 概述 准备项目结构 测试查询结果 估计pod和副本的适当数量和大小 对索引进行负载测试 备份索引 性能调优 配置监控 规划扩展 了解如何获取支持 本文档的目的是通过预见生产环境中的问题并确定生产索引的最佳实践来准备用户开始在生产环境中使用其Pinecone索引。…

TCP/IP 五层协议模型

转载大佬文章 我们每天使用互联网,本质上是在传输/接收各种数据,具体如何传输则是按照一系列互联网协议进行的。我们常说的网络七层模型,五层模型,四层模型都是对数据传输过程做了细化的分层。 按照五层模型比较好理解&#xff0c…

操作系统启动相关概念(BIOS、MBR、GPT、BRUB)

不管是 Windows 还是 Linux 操作系统,底层设备一般均为物理硬件,操作系统启动之前会对硬件进行检测,然后硬盘引导启动操作系统,如下为操作系统启动相关的各个概念。 一、BIOS 基本输入输出系统(Basic Input Output Sy…

牛客网-刷SQL(10)

题目:现在运营想要找到每个学校gpa最低的同学来做调研,请你取出每个学校的最低gpa。 示例:user_profile iddevice_idgenderageuniversitygpaactive_days_within_30question_cntanswer_cnt12138male21北京大学3.4721223214male复旦大学41552…

近期总结的一些TypeScript小tip

const vs readonly const 用于修饰变量&#xff0c;readonly 用于变量的属性 const x: boolean;const x: {readonly a: boolean; } {a: true; };对于数组&#xff0c;const 只能保证地址不改动&#xff0c;ReadonlyArray<Number>则可以直接禁用 push/pop never vs un…

基于Java+SpringBoot+vue前后端分离校园周边美食探索分享平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

opencv-19 图像色彩空间转换函数cv2.cvtColor()

cv2.cvtColor() 函数是 OpenCV 中用于图像颜色空间转换的函数。它允许你将图像从一个色彩空间转换为另一个色彩空间。在 Python 中&#xff0c;你可以使用这个函数来实现不同色彩空间之间的转换。 函数的基本语法为&#xff1a; cv2.cvtColor(src, code[, dst[, dstCn]])参数…

leetcode5. 最长回文子串(Manacher - java)

Manacher回文算法 leetcode5. 最长回文子串Manacher 算法 manacher 算法 leetcode5. 最长回文子串 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s “…

NestJS 的 中间件 学习

基本概念 中间件是在路由处理程序之前调用的函数。中间件函数可以访问请求和响应对象。在程序中我们可以让多个中间件串起来一起使用&#xff0c;当多个中间件一起使用时我们可以使用next()调用下一个中间件。 中间件主要是可以实现如下功能&#xff1a; 执行任何代码更改请…

CentOS7.9.离线安装Docker

CentOS 7上离线安装Docker 下载适用于CentOS 7的Docker安装包&#xff1a; https://download.docker.com/linux/static/stable/x86_64/将下载的 docker-24.0.4.tgz 文件上传到CentOS 7系统。例如&#xff0c;可以上传到 /root 目录下。 解压 docker-24.0.4.tgz 文件&#xff…