Attention is all you need 论文笔记

news2025/1/13 19:37:42

该论文引入Transformer,主要核心是自注意力机制,自注意力(Self-Attention)机制是一种可以考虑输入序列中所有位置信息的机制。

RNN介绍

引入RNN为了更好的处理序列信息,比如我 吃 苹果,前后的输入之间是有联系的。

如图:

一文搞懂RNN图引用

引入Transformer的原因

  1. 解决长距离依赖的问题:传统的RNN存在梯度消失和梯度爆炸的问题,难以有效捕获长距离依赖关系。而Transformer引入了注意力机制,使模型可以在序列中捕获远距离依赖关系。
  2. 并行计算:RNN和循环连接的特点使得它们难以并行计算,限制了计算速度。相比之下,Transformer模型的注意力机制允许模型在每个时间步骤上并行计算,大大加速计算速度。
  3. 可扩展性:Transformer模型可以适用与不同长度的序列

Attention函数分析

注意力机函数值注意力机制的核心组成部分,它定义了如何计算注意力权重,以及使用这些权重聚合数据来获取上下文表示。注意力函数包括:

  • Query:查询用于确定关注哪些输入元素的向量或表示。在自注意力机制中,通常是前一个时间步骤的隐藏状态或者上下文表示。
  • key:键是与输入元素相关的向量表示。注意力机制通过比较query和key的相似性来决定要关注哪些输入
  • value:值是与键对应的输入元素的向量或表示。注意力机制根据query和key的相似性来为每个值分配权重,这些权重将用于生成上下文表示。
  • score:分数表示key和query的相似性,分数越高表示查询更关注与键相关的输入。例如向量a和向量b,它的点积a·b = |a||b|cos\Theta\Theta越小,cos\Theta越大,两个向量之间 相似性越高。
  • 注意力权重:是一个概率分布,表示对每个输入元素的关注程度。通常由softmax得到,确保总和为1.
  • 上下文表示:通过注意力权重对值进行加权求和得到,它是对输入元素的聚合表示,反应了模型的关注点。

注意力函数的一般计算步骤

  1. 计算query和key的相似性分数,通过点积、加性模型或者缩放点积等方式实现。
  2. 对相似性分数进行softmax操作,以此获得注意力权重,确保他们归一化为概率分布。
  3. 使用注意力权重对值加权求和,以此生成上下文表示。

对于自注意力机制来说

  1. query、key、value:自注意力的核心是通过三个线性变换来为每个位置生成这三个向量。这些向量在输入序列中的每个位置都有一个。对于给定的位置,query 用于提出问题,key 用于提供答案的位置信息,而value 包含了实际的信息。
  2. 计算注意力分数:计算分数通过将query和所有位置的key 进行点积操作得到的。注意力分户可以看成是度量两个位置之间关联性的分数,他表示了一个位置对于其他位置的关注程度。
  3. softmax 操作进行归一化:为了获得有效的注意力权重,对计算得到的注意力分数进行归一化处理。为了确保每个位置权重是有效的概率分布,从而更好的表达位置之间的关联性。
  4. 计算加权和:对得到的归一化之后的注意力权重和对应位置的value进行加权求和,得到每个位置的上下文表示。

多头注意力机制

是一种扩展的自注意力机制,它允许模型同时学习多个不同的关注模式。多头注意力机制将自注意力计算分为多个头,每个头学习不同的权重矩阵,以捕获不同类型的关联性。多个头的结果会拼接或合并,然后通过线性变换进行投影。

选择缩放点积原因

  1. 点积和加性注意力理论复杂度相似,但是在实践中点积注意力的速度更快、更节省空间,因为它可以使用高度优化的矩阵乘法代码来实现
  2. 对于键K的维度d_{k}越大,加性注意力的性能比点击好,所以我们怀疑对于很大的维度,点积会大幅度增长,为了抵消这种影响,我们使用缩小点积。

缩放点积

是注意力机制中一种常见的类型,通过和自注意力机制一起使用,它的目的是确保在计算注意力分数的时候,使得范围适中,避免梯度消失或者梯度爆炸。下面是介绍缩放点积的步骤:

  • Query、Key、Value:这是缩放点积的三个输入,通常来自于一个序列。
  • 相似性分数计算:计算查询和键之间的相似性。将查询和键之间的点积作为相似性分数。具体而言就是,对于给定的查询Q和键K,计算相似性分数矩阵为:
    Score = Q*K^T
    其中K^T表示键K的转置矩阵。每个Scores[i][j]表示查询的第i个元素和键的第j个元素的相似性。
  • 缩放:为了稳定训练过程,缩放点积对相似性分数进行缩放操作,通过操作是除以一个缩放因子来实现。缩放因子通常是键K的维度d_{k}的平方根。即:\sqrt{d_{k}}.缩放后的相似性分数Scale_Scores有助于控制梯度大小,防止梯度爆炸或者消失。
    Scale_Scores = Scores / sqrt(d_k)
  • 计算注意力权重:对缩放后的相似性分数进行softmax操作,将其转化为概率分布,得到注意力权重。这些权重表示了对输入序列不同位置的关注程度。
    attention_weight = softmax(Scale_Scores)

结论

在这项工作中,提出了 Transformer,这是一个完全基于注意力的序列转换模型。注意,用多头自注意力取代了编码器-解码器架构中最常用的递归层。

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

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

相关文章

计算机组成原理之计算机系统概论、计算机的发展史、系统总线,三章开篇讲

第一章-计算机系统概论 1计算机系统简介 现代计算机的多态性 把感应器嵌入和装备到电网、铁道、桥梁、隧道、公路、建筑、供水系统、大坝、油气管道等各种物体中,并且被普遍连接,形成“物联网”,然后将“物联网”与现有的网络整合起来&…

无涯教程-JavaScript - ACOT函数

描述 ACOT函数以0至π之间的弧度(以弧度为单位)返回数的反正切或反余切的主值。 语法 ACOT (number)争论 Argument描述Required/OptionalNumberNumber is the cotangent of the angle you want. This must be a real number.Required Notes 要将输出从弧度转换为度, 使用D…

【计算机视觉 | 目标检测】YOLO-NAS的介绍以及如何使用?(含源代码)

文章目录 一、介绍1.1 亮点1.2 方案简介1.3 训练简介 二、使用案例 一、介绍 Github 仓库: https://github.com/Deci-AI/super-gradients/blob/master/YOLONAS.md1.1 亮点 参考QARepVGG,该方案引入了QSP与QCI模块以同时利用重参数与8-bit量化的优化&a…

C语言练习题解析(2)

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

d3dx9_43.dll文件缺失的修复方法有哪些?4个方法快速修复d3dx9_43.dll

最近有很多小伙伴反映说他的电脑经常出现一个问题,那就是d3dx9_43.dll文件缺失了,然后一些程序都打不开,他们都是一脸懵逼,不知道怎么去处理这个问题,今天小编就要来给大家详细的说说这方面,d3dx9_43.dll文…

小谈设计模式(3)—策略模式

小谈设计模式(3)—策略模式 专栏介绍专栏地址专栏介绍 策略模式主要角色环境(Context)抽象策略(Strategy)具体策略(Concrete Strategy)角色总结 核心思想封装算法定义抽象策略使用环…

Minio入门系列【3】MinIO Client使用详解

1 简介 简称mc,是minio服务器的客户端,对ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案,它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4&…

nginx知识点详解:反向代理+负载均衡+动静分离+高可用集群

一、nginx基本概念 1. nginx是什么,做什么事情? Nginx是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx转为性能优化而开发,能经受高负载考验。支持热部署,启动容易,运…

(三十二)大数据实战——Maxwell安装部署及其应用案例实战

前言 Maxwell是一个开源的MySQL数据库binlog解析工具,用于将MySQL数据库的binlog转换成易于消费的JSON格式,并通过Kafka、RabbitMQ、Kinesis 等消息队列或直接写入文件等方式将其输出。本节内容主要介绍如何安装部署Maxwell以及如何使用Maxwell完成数据…

通用商城项目(下)

记录一些踩坑的地方,以及理顺一些思路。 通过管理系统页面,完成商品属性分组和商品属性(基本属性)关联维护 属性表 与 属性组表 的功能完善:显示属性组与属性表的一对多关系 前端 1. 引入组件,是否显示使…

qgroundcontrol源码Andriod平台编译

1.下载QGC(qgroundcontrol)源码: 2.安装Qt5.15.2 3.配置Android平台工具集: 4.打开QGC项目文件: 5.安卓工程输出路径: 6.创建签名文件: 7.右击工程,然后选择Build 8.修改生成工程gradle.properties(Global Properties)增加下面内容: org.gradle.jvmargs-Xmx1536M --add-export…

UGNX配置许可服务器

UG客户端配置许可服务器,第一次安装完成或修改成其他许可服务器  打开菜单栏,找到Siemens NX目录->许可证工具->许可工具  切换到环境设置,设置许可服务器,点击编辑,弹出编辑框输入端口服务器IP。  输入…

[字符串和内存函数]strcat和strncat的区别

CPlus中对strcat的介绍 /* strcat example */ #include <stdio.h> #include <string.h>int main () {char str[80];strcpy (str,"these ");strcat (str,"strings ");strcat (str,"are ");strcat (str,"concatenated.");p…

进程间通信(IPC)的方法:共享内存

共享内存(shared memory)是可用IPC技术中最快的一种。一旦内存被映射到共享内存区域的进程的地址空间中&#xff0c;在进程之间传递数据时就不会发生内核(kernel)参与。然而&#xff0c;在共享内存区域存储和提取数据时&#xff0c;进程之间需要某些形式的同步(例如互斥锁、条件…

Spring Boot的魔法:构建高效Java应用的秘诀

文章目录 1. 自动配置&#xff08;Auto-Configuration&#xff09;2. 起步依赖&#xff08;Starter Dependencies&#xff09;3. 内嵌Web服务器&#xff08;Embedded Web Server&#xff09;4. 外部化配置&#xff08;Externalized Configuration&#xff09;5. Spring Boot Ac…

每日一题 213. 打家劫舍 II

难度&#xff1a;中等 思路&#xff1a; 首先不看成环&#xff0c;只是当作列表&#xff0c;那么对于第 i 间房&#xff0c;到 i 为止的最高偷窃金额为 f(i) max(f(i - 1), f(i - 2) nums[i])分析递推关系第一点&#xff0c;不管 i - 2 处的房子是否偷窃&#xff0c;i 处的…

【基础篇】ClickHouse 表结构设计

文章目录 1. ClickHouse 表结构设计1. 表的创建与标准SQL的差异1. 创建普通表2. 创建物化视图3. 创建分布式表 2. 表引擎1. MergeTree:2. Log:3. Memory:4. Distributed:5. Kafka:6. MaterializedView:7. File和URL: 3. MergeTree 家族3.1. MergeTree:3.2. ReplacingMergeTree:…

Nacos单机启动的两种方式

说明&#xff1a;直接双击nacos的启动脚本&#xff0c;默认是集群&#xff08;cluster&#xff09;的方式&#xff1b; 需要单机启动&#xff0c;有以下两种方式&#xff1b; 方式一&#xff1a;命令行 在当前目录打开命令窗口&#xff0c;输入以下命令启动nacos startup.…

jdk1.8堆内存学习

jdk1.8堆内存启动时控制参数图解 堆大小年轻代&#xff08;Young Generation&#xff09;年老代&#xff08;Old Generation&#xff09; GC相关 -Xnoclassgc&#xff1a;关闭JVM垃圾回收功能 -XX:UseSerialGC&#xff1a;使用Serial垃圾收集器&#xff0c;单线程串型收集器&…

Linux安装包 | Git使用 | NFC搭建

dpgt使用 当谈到基于 Debian 的操作系统中的软件包管理工具时&#xff0c;dpkg 是一个重要的工具。它是 Debian 系统中用于安装、升级、配置和卸载软件包的命令行工具。以下是对 dpkg 的详细介绍&#xff1a; 软件包管理&#xff1a;dpkg 可以管理系统中的软件包。它可以安装单…