Attention is all you need 论文笔记

该论文引入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.mzph.cn/news/81321.shtml

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

相关文章

【PowerQuery】PowerBI的增量刷新设置

在进行数据库查询的过程中,如果查询的数据量非常大就会存在查询效率问题。在PowerBI中在进行SQL Server数据库查询的过程中,支持两种不同的方式:数据导入方式和DirectQuery方式。Direct Query 是实现即时数据查询,数据将不会保存在PowerBI的数据缓存中。但是如果我们采用的…

【问题记录】解决Git上传文件到GitHub时收到 “GH001: Large files detected” 错误信息!

环境 Windows 11 家庭中文版git version 2.41.0.windows.1GitHub 问题情况 在命令行中使用git上传pdf文件到GitHub服务器时,提示了如下警告信息: 原因是 GitHub 有一个文件大小限制,通常为 100 MB。 如果尝试上传大于此限制的文件&#xff0c…

Long类型雪花算法ID返回前端后三位精度缺失问题解决

目录 一、问题描述二、问题复现1.Maven依赖2.application.yml 配置3.DemoController.java4.snowflakePage.html 页面5.DemoControllerAdvice.java 监听6.问题复现 三、原因分析四、问题解决方案一方案二 一、问题描述 Java 后端使用雪花算法生成 Long 类型的主键 ID&#xff0…

快速学会搭建微信小程序的基础架构

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 基础架构 构建界面 引入 uni-ui 组件库 组件自动引入 配置TS类型 状态管理 持久化 数据交互 请…

最小二乘法

Least Square Method 1、相关的矩阵公式2、线性回归3、最小二乘法3.1、损失函数(Loss Function)3.2、多维空间的损失函数3.3、解析法求解3.4、梯度下降法求解 1、相关的矩阵公式 P r e c o n d i t i o n : ξ ∈ R n , A ∈ R n ∗ n i : σ A ξ σ ξ…

leetcode 332. Reconstruct Itinerary(重构行程)

有一些票tickets, tickets[ i ] [from, to], 每个出发到达城市名字都是3个大写英文字母, 同一个出发城市时,优先去字母顺序较小的到达城市。 必须先从“JFK”出发。 每个ticket必须用且只用一次,所有ticket一定会形成至少一个有效的行程&…

Pandas 数据变形和模型分析

数据概念 数据比对 在本练习中,我们使用灵活的比较技术对不同的DataFrame进行比较 import pandas as pd import randomrandom.seed(123) list1 [[A]*3,[B]*5,[C]*7] charlist [x for sublist in list1 for x in sublist] random.shuffle(charlist) ser1 pd.Se…

【JAVA-Day21】序列化和反序列化,学会Java的编解码方法

标题序列化和反序列化,学会Java的编解码方法 序列化和反序列化,学会Java的编解码方法摘要引言一、什么是序列化1.1 序列化的过程 二、什么是反序列化2.1 反序列化的过程 三、为什么要进行序列化和反序列化3.1 主要目的3.2 应用场景 四、总结参考资料 博主…

Springboot 实践(18)Nacos配置中心参数自动刷新测试

前文讲解了Nacos 2.2.3配置中心的服务端的下载安装,和springboot整合nacos的客户端。Springboot整合nacos关键在于使用的jar版本要匹配,文中使用版本如下: ☆ springboot版本: 2.1.5.RELEASE ☆ spring cloud版本 Greenwich.RELEASE ☆ sp…

辅助驾驶功能开发-功能规范篇(21)-4-XP行泊一体方案功能规范

XPilot Parking 自动泊车系统 • 超级自动泊车辅助(Super AutoParking Assist)、语音控制泊车辅助(Autoparking with Speech) - 产品定义 超级自动泊车辅助是⼀个增强的自动泊车辅助系统。在超级自动泊车辅助系统中,识别车位将会变得实时可见, 并且不可泊入的⻋位也将…

如何在 Excel 中计算日期之间的天数

计算两个日期之间的天数是 Excel中的常见操作。无论您是规划项目时间表、跟踪时间还是分析一段时间内的趋势,了解如何在 Excel 中查找日期之间的天数都可以提供强大的日期计算功能。 幸运的是,Excel 提供了多种简单的方法来获取两个日期之间的天数。继续…

数据可视化

一、Flask #通过访问路径&#xff0c;获取用户的字符串参数 app.route(/user/<name>) def welcome(name):return "你好&#xff0c;%s"%nameapp.route(/user/<int:id>) def welcome2(id):return "你好&#xff0c;%d号的会员"%id能够自动根据…

【初阶数据结构】树(tree)的基本概念——C语言

目录 一、树&#xff08;tree&#xff09; 1.1树的概念及结构 1.2树的相关概念 1.3树的表示 1.4树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 二、二叉树的概念及结构 2.1二叉树的概念 2.2现实中真正的二叉树 2.3特殊的二叉树 2.4二叉树的性质…

字符集详解

一、为什么乱码&#xff1f; 所有的乱码实质上都是因为字符集选择错误造成的。 流在读取时&#xff0c;编码使用不当也会乱码。 二、什么是字符集&#xff1f; 字符是各种文字和符号的统称&#xff0c;包括各个国家的文字&#xff0c;标点符号&#xff0c;表情等等。字符集…

spring seccurity OAuth 2.0授权服务器工作流程

一、客户端配置&#xff1a;在configure(ClientDetailsServiceConfigurer clients)方法中&#xff0c;配置了一个客户端&#xff0c;包括客户端标识符、客户端秘密、授权类型、授权范围和令牌有效期等信息。这个客户端表示某个应用程序或服务&#xff0c;它将向授权服务器请求访…

MFC主框架和视类PreCreateWindow()函数学习

在VC生成的单文档应用程序中&#xff0c;主框架类和视类均具有PreCreateWindow函数&#xff1b; 从名字可知&#xff0c;可在此函数中添加一些代码&#xff0c;来控制窗口显示后的效果&#xff1b; 并且它有注释说明&#xff0c; Modify the Window class or styles here by…

Bash脚本学习:AWK, SED

1. AWK AWK 是一种编程语言&#xff0c;设计用于处理文件或数据流中基于文本的数据&#xff0c;或者使用 shell 管道。 可以将 awk 与 shell 脚本结合使用或直接在 shell 提示符下使用。 以上展示使用AWK分别打印第一个位置变量和第二个位置变量。 建立一个文档 csvtest.cs…

设计模式:单例模式

目录 什么是单例模式为什么使用单例模式常见的单例写法1. 懒汉式&#xff08;Lazy Initialization&#xff09;2. 双重检查锁定&#xff08;Double-Checked Locking&#xff09;3. 饿汉式&#xff08;Eager Initialization&#xff09;4. 枚举实现单例 总结 什么是单例模式 单…

AI深度学习-卷积神经网络000

文章目录 前言1.什么是深度学习2.语义分割与实例分割概述3.什么是卷积&#xff1f;4.Unet网络 前言 本栏目&#xff0c;主要为深度学习保姆教程。 主要通过B站视频整理而来&#xff1a; 深度学习保姆级教学 Unet语义分割视觉三维重建算法 1.什么是深度学习 深度学习保姆级教…

Scapy 解析 pcap 文件从HTTP流量中提取图片

Scapy 解析 pcap 文件从HTTP流量中提取图片 前言一、网络环境示例二、嗅探流量示例三、pcap 文件处理最后参考 ​ 作者&#xff1a;高玉涵 ​ 时间&#xff1a;2023.9.17 10:25 ​ 环境&#xff1a;Linux kali 5.15.0-kali3-amd64&#xff0c;Python 3.11.4&#xff0c;scapy…