当前位置: 首页 > news >正文

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,这是一个完全基于注意力的序列转换模型。注意,用多头自注意力取代了编码器-解码器架构中最常用的递归层。

相关文章:

Attention is all you need 论文笔记

该论文引入Transformer,主要核心是自注意力机制,自注意力(Self-Attention)机制是一种可以考虑输入序列中所有位置信息的机制。 RNN介绍 引入RNN为了更好的处理序列信息,比如我 吃 苹果,前后的输入之间是有…...

Hdoop伪分布式集群搭建

文章目录 Hadoop安装部署前言1.环境2.步骤3.效果图 具体步骤(一)前期准备(1)ping外网(2)配置主机名(3)配置时钟同步(4)关闭防火墙 (二&#xff09…...

java临时文件

临时文件 有时候,我们程序运行时需要产生中间文件,但是这些文件只是临时用途,并不做长久保存。 我们可以使用临时文件,不需要长久保存。 public static File createTempFile(String prefix, String suffix)prefix 前缀 suffix …...

C++中的<string>头文件 和 <cstring>头文件简介

C中的<string>头文件 和 <cstring>头文件简介 在C中<string> 和 <cstring> 是两个不同的头文件。 <string> 是C标准库中的头文件&#xff0c;定义了一个名为std::string的类&#xff0c;提供了对字符串的操作如size()、length()、empty() 及字…...

安装MySQL

Centos7下安装MySQL详细步骤_centos7安装mysql教程_欢欢李的博客-CSDN博客...

输入学生成绩,函数返回最大元素的数组下标,求最高分学生成绩(输入负数表示输入结束)

scanfscore()函数用于输入学生的成绩 int scanfscore(int score[N])//输入学生的成绩 {int i -1;do {i;printf("输入学生成绩:");scanf("%d", &score[i]);} while (score[i] > 0);return i; } findmax()用于寻找最大值 int findmax(int score[N…...

常用音频接口:TDM,PDM,I2S,PCM

常用音频接口&#xff1a;TDM&#xff0c;PDM&#xff0c;I2S&#xff0c;PCM_tdm音频_沙漠的甲壳虫的博客-CSDN博客 I2S/PCM接口及音频codec_音频pcm接口模块设计-CSDN博客 2个TDM8功放调试ing_周龙(AI湖湘学派)的博客-CSDN博客 数字音频接口时序----IIS、TDM、PCM、PDM_td…...

git clone报错Failed to connect to github.com port 443 after 21055 ms:

git 设置代理端口号 git config --global http.proxy http://127.0.0.1:10085 和 git config --global https.proxy http://127.0.0.1:10085 然后就可以成功git clone hugging face的数据集了 如果是https://huggingface.co/datasets/shibing624/medical/tree/main 那么…...

【操作系统】深入浅出死锁问题

死锁的概念 在多线程编程中&#xff0c;我们为了防止多线程竞争共享资源而导致数据错乱&#xff0c;都会在操作共享资源而导致数据错乱&#xff0c;都会在操作共享资源之前加上互斥锁&#xff0c;只有成功获得到锁的线程&#xff0c;才能操作共享资源&#xff0c;获取不到锁的…...

springboot实现webSocket服务端和客户端demo

1&#xff1a;pom导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.2.7.RELEASE</version></dependency>2&#xff1a;myWebSocketClien…...

代码走读: FFMPEG-ffplayer02

AVFrame int attribute_align_arg avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame) 选取一个音频解码器 和 一个视频解码器分别介绍该解码器功能 音频G722 g722dec.c -> g722_decode_frame 通过 ff_get_buffer 给 传入的 frame 指针分配内存 g722_decode_…...

【数据结构】——排序算法的相关习题

目录 一、选择题题型一 &#xff08;插入排序&#xff09;1、直接插入排序2、折半插入排序3、希尔排序 题型二&#xff08;交换排序&#xff09;1、冒泡排序2、快速排序 题型三&#xff08;选择排序&#xff09;1、简单选择排序~2、堆排序 ~题型四&#xff08;归并排序&#xf…...

C高级day5(Makefile)

一、Xmind整理&#xff1a; 二、上课笔记整理&#xff1a; 1.#----->把带参宏的参数替换成字符串 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX(a,b) a>b?a:b #define STR(n) #n int main(int argc, const char *argv…...

Android 系统中适配OAID获取

一、OAID概念 OAID&#xff08;Open Anonymous Identification&#xff09;是一种匿名身份识别标识符&#xff0c; 用于在移动设备上进行广告追踪和个性化广告投放。它是由中国移动通信集 团、中国电信集团和中国联通集团共同推出的一项行业标准 OAID值为一个64位的数字 二、…...

差分数组leetcode 2770 数组的最大美丽值

什么是差分数组 差分数组是一种数据结构&#xff0c;它存储的是一个数组每个相邻元素的差值。换句话说&#xff0c;给定一个数组arr[]&#xff0c;其对应的差分数组diff[]将满足&#xff1a; diff[i] arr[i1] - arr[i] 对于所有 0 < i < n-1 差分数组的作用 用于高效…...

请求响应状态码

请求与响应&状态码 Requests部分 请求行、消息报头、请求正文。 Header解释示例Accept指定客户端能够接收的内容类型Accept: text/plain, text/htmlAccept-Chars et浏览器可以接受的字符编码集。Accept-Charset: iso-8859-5Accept-Encodi ng指定浏览器可以支持的web服务…...

安卓机型系统美化 Color.xml文件必备常识 自定义颜色资源

color.xml文件是Android工程中用来进行颜色资源管理的文件.可以在color.xml文件中通过<color>标签来定义颜色资源.我们在布局文件中、代码中、style定义中或者其他资源文件中&#xff0c;都可以引用之前在color.xml文件中定义的颜色资源。 将color.xml文件拷到res/value…...

YOLO物体检测-系列教程1:YOLOV1整体解读(预选框/置信度/分类任/回归任务/损失函数/公式解析/置信度/非极大值抑制)

&#x1f388;&#x1f388;&#x1f388;YOLO 系列教程 总目录 YOLOV1整体解读 YOLOV2整体解读 YOLOV1提出论文&#xff1a;You Only Look Once: Unified, Real-Time Object Detection 1、物体检测经典方法 two-stage&#xff08;两阶段&#xff09;&#xff1a;Faster-rc…...

2023/9/12 -- C++/QT

作业 实现一个图形类&#xff08;Shape&#xff09;&#xff0c;包含受保护成员属性&#xff1a;周长、面积&#xff0c; 公共成员函数&#xff1a;特殊成员函数书写 定义一个圆形类&#xff08;Circle&#xff09;&#xff0c;继承自图形类&#xff0c;包含私有属性&#xf…...

【Purple Pi OH RK3566鸿蒙开发板】OpenHarmony音频播放应用,真实体验感爆棚!

本文转载于Purple Pi OH开发爱好者&#xff0c;作者ITMING 。 原文链接&#xff1a;https://bbs.elecfans.com/jishu_2376383_1_1.html 01注意事项 DevEco Studio 4.0 Beta2&#xff08;Build Version: 4.0.0.400&#xff09; OpenHarmony SDK API 9 创建工程类型选择Appli…...

Android rom开发:9.0系统上实现4G wifi 以太网共存

framework层修改网络优先级&#xff0c;4G > wifi > eth 修改patch如下&#xff1a; diff --git a/frameworks/base/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/frameworks/base/services/core/java/com/android/server/connectivit…...

高速自动驾驶HMI人机交互

概述 目的 本文档的目的是描述高速自动驾驶功能涉及的HMI显示需求技术规范和设计说明。 范围 术语及缩写 设计与实验标准 设计标准 设计标准-非法规类设计标准-法规类 HMI交互需求 CL4功能界面 HMI显示器[伊1] 中应包含CL4功能设置界面&#xff0c;提供给用户进行设置操作或显…...

【自然语言处理】关系抽取 —— SOLS 讲解

SOLS 论文信息 标题:Speaker-Oriented Latent Structures for Dialogue-Based Relation Extraction 作者:Guoshun Nan, Guoqing Luo, Sicong Leng, Yao Xiao, Wei Lu 发布时间与更新时间:2021.09.11 主题:自然语言处理、关系抽取、对话场景、跨语句、DialogRE、GCN arXiv:…...

周易算卦流程c++实现

代码 #include<iostream> using namespace std; #include<vector> #include<cstdlib> #include<ctime> #include<Windows.h>int huaYiXiangLiang(int all, int& left) {Sleep(3000);srand(time(0));left rand() % all 1;while (true) {if…...

软件架构设计(十三) 构件与中间件技术

中间件的定义 其实中间件是属于构件的一种。是一种独立的系统软件或服务程序,可以帮助分布式应用软件在不同技术之间共享资源。 我们把它定性为一类系统软件,比如我们常说的消息中间件,数据库中间件等等都是中间件的一种体现。一般情况都是给应用系统提供服务,而不是直接…...

PyTorch深度学习实战——基于ResNet模型实现猫狗分类

PyTorch深度学习实战——基于ResNet模型实现猫狗分类 0. 前言1. ResNet 架构2. 基于预训练 ResNet 模型实现猫狗分类相关链接 0. 前言 从 VGG11 到 VGG19&#xff0c;不同之处仅在于网络层数&#xff0c;一般来说&#xff0c;神经网络越深&#xff0c;它的准确率就越高。但并非…...

机器学习第六课--朴素贝叶斯

朴素贝叶斯广泛地应用在文本分类任务中&#xff0c;其中最为经典的场景为垃圾文本分类(如垃圾邮件分类:给定一个邮件&#xff0c;把它自动分类为垃圾或者正常邮件)。这个任务本身是属于文本分析任务&#xff0c;因为对应的数据均为文本类型&#xff0c;所以对于此类任务我们首先…...

基于Java+SpringBoot+Vue的图书借还小程序的设计与实现(亮点:多角色、点赞评论、借书还书、在线支付)

图书借还管理小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序&#xff08;小蔡coding&#xff09;2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 主要功能描述 五、系统实现5.1 小…...

【校招VIP】前端计算机网络之UDP相关

考点介绍 UDP是一个简单的面向消息的传输层协议&#xff0c;尽管UDP提供标头和有效负载的完整性验证&#xff08;通过校验和&#xff09;&#xff0c;但它不保证向上层协议提供消息传递&#xff0c;并且UDP层在发送后不会保留UDP 消息的状态。因此&#xff0c;UDP有时被称为不可…...

前缀和实例4(和可被k整除的子数组)

题目&#xff1a; 给定一个整数数组 nums 和一个整数 k &#xff0c;返回其中元素之和可被 k 整除的&#xff08;连续、非空&#xff09; 子数组 的数目。 子数组 是数组的 连续 部分。 示例 1&#xff1a; 输入&#xff1a;nums [4,5,0,-2,-3,1], k 5 输出&#xff1a;7 …...

上海外包公司网站建设/看书网站排名

一、什么是命令式 命令(Command)模式又叫作动作(Action)模式或事务(Transaction)模式&#xff0c;是一种对象的行为模式。将一个请求封装为一个对象&#xff0c;从而使你可用不同的请求对客户进行参数化&#xff1b;对请求排队或记录请求日志&#xff0c;以及支持可撤消的操作…...

给个做的网站吗/html网页制作app

2019独角兽企业重金招聘Python工程师标准>>> 上篇主要是介绍了HTTP存在的两大安全问题 明文无法验证服务器的真实性从而引出了TLS。本篇就来着重介绍下TLS。 说起TLS可能有些人还比较陌生&#xff0c;但如果说到SSL&#xff0c;那知道的人就更多了。TLS其实就是SSL发…...

庆阳市人大常委会网站建设/百度推广助手官方下载

闲庭信步聊前端 - 漫谈XSS什么是XSS&#xff1f;众所周知XSS是Cross-Site Scripting(跨站脚本攻击)的简称&#xff0c;但是英文的缩写明明是CSS为什么叫XSS呢&#xff1f;———历史遗留问题&#xff0c;因为CSS层叠样式表(Cascading Style Sheets)已经被大家所熟知&#xff0c…...

开发网站 语言/做外贸用什么软件找客户

我们都知道SSD拥有比HDD更快的读写速度&#xff0c;但SATA总线标准却拖累了SSD性能的发挥。好消息是&#xff0c;如今越来越多的笔记本都配备了支持PCI-E总线标准的M.2插槽&#xff0c;这就让更高速的NVMeSSD有了用武之地。 看到这里可能很多童鞋已经泛起了迷糊&#xff1a;啥…...

wordpress 更换模板/鹤壁搜索引擎优化

1.java.lang.Object类的说明: 1.Object类是所Java类的根父类 2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类 3.Object类中的功能(属性、方法)就具通用性。 属性:无 方法:equals() / toString() / getClass() /hashCode() / clone() …...

linux wordpress 下载/湖南长沙最新疫情

1.JS基本语法&#xff1a; 1.js引入方式 js是脚本语言&#xff0c;可以在浏览器中执行。js文件是以.js为结尾的&#xff0c;引入html文件中时使用script标签&#xff0c;这时script需要添加一个属性src&#xff0c;src中写js文件的路径&#xff1b;但是js还可以直接写在html当中…...