【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. 深度残差学习

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

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

相关文章

STM32 SPI学习

SPI 串行外设设备接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线。 SCK时钟信号由主机发出。 SPI接口主要应用在存储芯片。 SPI相关引脚:MOSI(输出数据线&#xff…

Lambda表达式常见的Local variable must be final or effectively final原因及解决办法

目录 Local variable must be final or effectively final错误原因 解决办法按照要求定义为final(不符合实情,很多时候是查库获取的变量值)使用原子类存储变量,保证一致性AtomicReference常用原子类 其它 Local variable must be …

JavaScript中的this指向及绑定规则

在JavaScript中,this是一个特殊的关键字,用于表示函数执行的上下文对象,也就是当前函数被调用时所在的对象。由于JavaScript的函数调用方式多种多样,this的指向也因此而变化。本文将介绍JavaScript中this的指向及绑定规则&#xf…

高速数据采集专家-FMC140【产品手册】

FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道(5.2GSPS/通道)、单通道10.4GSPS、射频采样ADC模块,该板卡为FMC标准,符合VITA57.1规范,该模块可以作为一个理想的IO单元耦合至FPGA前端,8通道的JESD204…

【数据结构】实验八:树

实验八 树 一、实验目的与要求 1)理解树的定义; 2)掌握树的存储方式及基于存储结构的基本操作实现; 二、 实验内容 题目一:采用树的双亲表示法根据输入实现以下树的存储,并实现输入给定结点的双亲结点…

QT: 用定时器完成闹钟的实现

闹钟项目&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTimerEvent> #include <QTime> #include <QDebug> #include <QTextToSpeech> #include <QMessageBox> #include <QTimer>QT_BEGIN…

在本地git仓库查看远端的URL

右键调出选项栏 选择git-远端&#xff0c;选择远端的内容就可以看到URL了

大数据未来的前景怎么样?_光点科技

随着科技的迅猛发展和互联网的普及&#xff0c;大数据已成为当今社会中不可或缺的重要资源。大数据是指庞大而复杂的数据集合&#xff0c;这些数据通过高级计算技术进行处理和分析&#xff0c;可以揭示出有价值的信息和趋势。在过去几年中&#xff0c;大数据已经在各行各业产生…

JVM-类加载

1.了解冯诺依曼计算机结构 1.1计算机处理数据过程 (1)提取阶段:由输入设备把原始数据或信息输入给计算机存储器存起来 (2)解码阶段:根据CPU的指令集架构(ISA)定义将数值解译为指令 (3)执行阶段:再由控制器把需要处理或计算的数据调入运算器 (4)最终阶段:由输出设备把最后运…

一百三十七、Hive——HQL运行报错(持续更新中)

一、timestamp字段与int字段相加 &#xff08;一&#xff09;场景 change_time字段是timestamp字段&#xff0c;代表一个红绿灯周期的开始时间&#xff08;先是绿灯、再是黄灯、最后红灯&#xff09;&#xff0c;而green是int字段&#xff0c;代表绿灯的秒数&#xff0c;现在…

github前端开源json2html

软件介绍 前端低代码工具包&#xff0c;通过 JSON 配置就能生成各种页面。 应用场景 json解析超大数据动态渲染&#xff0c;渲染速度、性能解决问题 包引用列表 vue3 (cdn模式开发)element plusnodehttp-serveraxios 操作步骤 1.环境准备下载node&#xff1a;https://no…

【多任务编程-线程通信】

进程/线程通信的方式 某些应用程序中&#xff0c;进程/进程和线程/线程之间不可避免的进行通信&#xff0c;进行消息传递&#xff0c;数据共享等 同一进程的线程之间通信方式包括Windows中常用Event, Message等。 不同进程之间的通信可以利用Event, FileMapping(内存共享), W…

基于SSM+JSP+LayUI的宿舍管理系统

修正初始账号密码 默认账号&#xff1a;admin&#xff0c;默认密码&#xff1a;123456修复后台管理头像消失功能相对简单些&#xff0c;可能需要添加一些功能&#xff0c;需要源码免费提供需要运行服务、添加功能等联系我视频教程&#xff1a;【源码分享-Java系列】毕设 基于SS…

[NLP]使用Alpaca-Lora基于llama模型进行微调教程

Stanford Alpaca 是在 LLaMA 整个模型上微调&#xff0c;即对预训练模型中的所有参数都进行微调&#xff08;full fine-tuning&#xff09;。但该方法对于硬件成本要求仍然偏高且训练低效。 [NLP]理解大型语言模型高效微调(PEFT) 因此&#xff0c; Alpaca-Lora 则是利用 Lora…

【Kafka】消息队列Kafka进阶

目录 Kafka分区机制生产者分区写入策略轮询策略随机策略&#xff08;不用&#xff09;按key分配策略乱序问题自定义分区策略 消费者组Rebalance机制消费者分区分配策略Range范围分配策略RoundRobin轮询策略Stricky粘性分配策略 Kafka副本机制producer的ACKs参数acks配置为0acks…

Redis系列:Redis 的事务机制

1 复习下何为事务机制&#xff1f; Transaction&#xff08;事务&#xff09;是计算机的特有术语&#xff0c;它一般指单个逻辑工作单位&#xff0c;由一系列的操作组合而成&#xff0c;在这些操作执行的时候&#xff0c;要么都执行成功&#xff0c;要么都不执行&#xff0c;防…

okhttp原理分析

工程目录图 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 01okhttp module里 包含的设计模式&#xff1a;建造者设计模式、责任链设计模式 CustomInject 演示自定义注解 代码&#xff1a;okhttp原理分析、Andro…

transformer理解

transformer的理解 Q、K、V的理解 核心是自注意力机制。即每个位置的结果为所有位置的加权平均和。为了得到每个位置的权重,需要Q*K得到。 整个多头的self-attention过程 单个encoder encoder-decoder encoder中的K和V会传到decoder中的encoder-decoder attention中。 …

Docker 全栈体系(八)

Docker 体系&#xff08;高级篇&#xff09; 六、Docker轻量级可视化工具Portainer 1. 是什么 Portainer 是一款轻量级的应用&#xff0c;它提供了图形化界面&#xff0c;用于方便地管理Docker环境&#xff0c;包括单机环境和集群环境。 2. 安装 官网 https://www.portain…

第三章 数据链路层

第三章 数据链路层 3.1 数据链路层的几个基本概念 数据发送模型 数据链路层主要的两种信号类型 点对点信号&#xff1a;这种信道使用一对一的点对点通信方式&#xff1b;广播信道&#xff1a;这种信道使用一对多的广播方式&#xff0c;因此过程比较复杂。广播信道上连接的主机…