自注意力机制 SANS(论文复现)

自注意力机制 SANS(论文复现)

本文所涉及所有资源均在传知代码平台可获取

前言

在NLP模型领域中,seq2seq是一种常见的模型结构(序列到序列),其于 2013年、2014 年被多位学者共同提出,在机器翻译任务中取得了非常显著的效果,随后提出的 attention 模型更是将 Seq2Seq 推上了神坛,Seq2Seq+attention 的组合横扫了非常多的任务,只需要给定足够数量的 input-output pairs,通过设计两端的 sequence 模型和 attention 模型,就可以训练出一个不错的模型。除了应用在机器翻译任务中,其他很多的文本生成任务都可以基于 Seq2Seq 模型来做。

常见典型的任务有:机器翻译任务,文本摘要任务、代码补全、诗词生成等等,其思想不仅可以用在文本领域还可以用在语音图像领域中。

那么在transfromers前传统的seq2seq任务实现方案是如何是实现的,有哪些缺点呢?

传统的序列模型通常使用的是循环神经网络,如RNN(或者LSTM,GRU等),但是循环神经网络的计算限制为是顺序的,也就是说循环神经网络算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了三个问题:

  1. 时间片 t 的计算依赖 t−1 时刻的计算结果,需要计算完前一个时间刻才能下一步计算这样限制了模型的并行能力;比如RNN中的t0时刻跟t10时刻的信息如果要交互,必须经过t1~t9,才能传递过去,信息且会随着传递距离增加而衰减,对信息的捕获能力较差,所求特征的表征能力也就更差了
  2. 传统的序列模型存在着长期依赖问题,难以捕捉长距离的依赖关系。顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。而如果用CNN来代替RNN的解决方法(平行化),但也只能感受到部分的感受野,需要多层叠加才能感受整个图像,其中可以参考下图辅助理解。

在这里插入图片描述

为了解决这个问题,作者提出一种新的注意力机制 self attention 结构,我们下面就看提出的这种结构如何解决上面的两个问题

Self Attention

Self Attention是Transformer模型的灵魂核心组件之一。该机制目的是让模型根据输入序列中不同位置的相关性权重来计算每个位置的表示,通过计算查询和键之间的相似性得分,并将这些得分应用于值来获取加权和,从而生成每个位置的输出表示。(其目的就是解决以上所说的两个问题)

这样我们在每个位置的序列输出都和全部位置的序列有关,这解决了第一个问题:全局的视野(对信息的捕获能力更强),同时该计算是各个向量矩阵点积运算,可以满足并行化运行,这就解决了第二个问题:时间片 t 的计算不依赖 t−1 时刻的计算结果,比如RNN中的t0时刻跟t10时刻的信息距离只是一个常量。

Self Attention接受的输入是三个相同的向量,分别命名为 Query 向量,一个 Key 向量和一个 Value 向量。

那我们面对输入序列X,如何满足Self Attention接受的输入呢?

Q、K和V是通过对输入序列进行线性变换得到的,通过对输入序列的每个位置应用不同的权重矩阵,将输入序列映射到具有不同维度的查询(Q)、键(K)和值(V)空间。这样,我们就可以使用这些查询、键和值来输入到Self Attention结构计算注意力权重并生成加权表示。

在这里插入图片描述

给定一个输入序列X,我们可以通过线性变换得到Q、K和V:

Q = X * W_Q
K = X * W_K
V = X * W_V

其中W_Q、W_K和W_V是可学习的权重矩阵

使用Q、K和V的好处是,它们允许模型根据输入的不同部分对相关信息进行加权。Q用于查询输入序列的每个位置,K用于提供关于其他位置的信息,V则提供用于计算加权表示的值。

值(V)代表的是确切的值(线性变换得到),一般是不变的用于求最后的输出,其次要实现求各个向量的相似性,如果只有一个k,而没有q,那k 与其他输入的 k作相似性,自己单元没有可以做相似性的地方,而再加一个q就可以实现了, 从而最后得到权重。

在第一次看到Q,K,V的时候我们会想,为什么需要这三个值呢?

Self Attention 为了解决以上所说的两个问题,所采取的思路是通过全局位置的序列向量之间的相似性关系进行建模,来达到全局视野的目的,那么我们要计算每个位置向量之间的相似性权重,并指导当前位置的输出。

一种常用的计算相似度的方法是点积运算,而 Q,K 向量点击运算的结果每个位置向量之间(包括自己与自己)的相似性权重,而V则是与注意力权重用于当前位置的输出。

QK是专门用于求相似性的,如果只有一个向量比如k,而没有q,k 可以与其他位置向量的 k作相似性,但在自己单元却没有可以做相似性的地方,此时就无法进行各个相似性关系的比较从而得到关于全局位置的输出了,要解决该问题而再加一个向量q就可以实现了。

在这里插入图片描述

我们先看图片所示a1a1的例子,首先将a1a1 的 q1q1 与所有时间刻的 k1k1 进行inner product并除与 dkd**k( 其中dkd**k是Q和K的维度)计算二者的相似性,得到 对应的相似性序列值

这是因为当数据维度值越大时,inner product的结果越大,通过将Q和K进行点积操作并除以(dk)(d**k)来缩放注意力权重,这有助于减小梯度在计算注意力时的变化范围(维度越大值越大),使得训练更加稳定。

在这里插入图片描述

对相似性序列值 a1,ia1,i 进行 Softmax 操作得到每个时刻的相似性权重

在这里插入图片描述

而后通过对每个时间刻的相似性权重和Value向量点积累加,最终得到 a1a1所对应的 b1b1

在这里插入图片描述

以此类推计算不同位置对应的bib**i,输出 序列 bb,我们可以得到矩阵相乘的式子,从而一次计算出所有时刻的输出,这样便实现了平行化计算(矩阵运算),计算过程如下图所示

在这里插入图片描述

这样我们就最终得到Self Attention 公式如下:

在这里插入图片描述

结论

(Transformer, 即多头自注意力) 在这个经典的小文本分类数据集上的表现,只是中等。

在这里插入图片描述

在这里插入图片描述

文章代码资源点击附件获取

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

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

相关文章

《Learning to Prompt for Vision-Language Models》CoOp论文中文校对版

系列论文研读目录 文章目录 系列论文研读目录摘要1 简介2 相关工作2.1视觉语言模型2.2 NLP中的提示学习 3 方法论3.1视觉语言预训练3.2上下文优化3.3讨论 4 实验4.1少数学习4.2领域泛化4.3进一步分析 5 结论、局限性和未来的工作 摘要 像CLIP这样的大型预训练视觉语言模型在学…

天通报警呼叫柱:为边防哨所筑起坚固的通信堡垒

一、背景 边防哨所是国家安全的重要防线,肩负着守护边境安全、维护国家主权和领土完整的神圣使命。由于边防哨所通常位于地理位置偏远、环境恶劣的地区,通信问题成为影响边防工作的重要因素,给边防官兵的日常工作和应急响应带来了不小的挑战…

Vue 3 watchEffect:如何用 onInvalidate 优化副作用处理

在 Vue3 中,watchEffect 是一个用于在响应式数据变化时自动重新执行的函数。它在创建响应式副作用时特别有用,比如在某些数据变化时更新 DOM、发起网络请求或处理复杂的逻辑。 watchEffect 的 onInvalidate 是一个非常重要的功能,用于处理副…

blender我的对称模型好像中点被我不小心移动了 我现在如果雕刻 两边修改的地方不是对称的 我该怎么办

blender我的对称模型好像中点被我不小心移动了 我现在如果雕刻 两边修改的地方不是对称的 我该怎么办 首先请调整好模型确保左右前后对其相应的xyz轴 之后CtrlA应用变换 确保这些都归0且模型和xyz轴对应 如果在Blender中模型的中点(对称轴)不小心被移动了…

使用豆包MarsCode 编写 Node.js 全栈应用开发实践

以下是「豆包MarsCode 体验官」优秀文章,作者狼叔。 欢迎更多用户使用豆包MarsCode 并分享您的产品使用心得及反馈、创意项目开发等,【有奖征集|人人都是豆包MarsCode 测评官!】活动正在火热进行中,欢迎大家投稿参加&a…

6-Python基础编程之数据类型操作——数值、布尔和字符串

Python基础编程之数据类型操作——数值、布尔和字符串 数值整数浮点数复数常用操作 布尔类型字符串字符串拼接字符串切片常用函数查找计算转换操作填充压缩分割拼接判定操作 数值 表现形式:整数(int)、浮点数(float)、…

校园管理|基于springboot+vue的校园管理系统(源码+数据库+文档)

校园管理|校园管理系统 目录 基于springbootvue的校园管理系统 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师&#xff0c…

自动化表格处理的革命:智能文档系统技术解析

在当今数据驱动的商业环境中,表格数据的自动化处理成为了企业提高效率、降低成本的关键。企业智能文档系统在智能表格识别方面展现出卓越的性能,通过精准识别和处理各种通用表格,显著提升了企业文档管理的智能化水平。本文将深入探讨该系统在…

[产品管理-6]:NPDP新产品开发 - 4 - 战略 - 创新支持战略,支持组织的总体创新战略(平台战略、技术战略、营销战略、知识产权战略、能力建设战略)

目录 一、创新支持战略概述 二、平台战略:大平台小产品战略 2.1 概述 1、平台战略的定义 2、平台战略的特点 3、平台战略的应用领域 4、平台战略的成功案例 5、平台战略的发展趋势 2.2 大平台小产品战略 1)大平台的建设 2)、小产品…

王牌功能 | 法大大“用户角色权限管理”,合同数据分流、管理权限分层都搞定!

合同签了还得管, 按业务、按项目、按岗位级别… 关于法大大“用户角色权限管理”功能的使用:企业操作人员在电子合同平台创建企业后,需添加企业组织架构,主要添加合同操作相关的人员,即可实现合同操作与数据权限的管理…

QT 对话框 仿文本编辑器

对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互 一、消息对话框(QMessageBox) 1、QMessageBox类成员函数实现 1)实例化 QMessageBox类 对象 2)设置对象属性 3&#x…

用API接口可以实现哪些功能(天猫API接口|京东API接口)

在电商领域,API接口可以实现多种功能,起到连接内外部系统及优化电商业务流程等多种作用,从而来提高电商企业的运营效率。 具体来看,API接口可以用来: 商品管理: API接口能够用来获取商品详情等&#xff0…

顶级PCVR头显具备什么配置?清晰度如何?

头戴式显示器是VR体验中用户与虚拟现实环境交互不可或缺的一部分。高端的头显通常可为使用者提供具有超高分辨率的高清画面,因此当你拥有一部高端的VR头显,虚拟世界将如真实世界一样呈现在你眼前。 说到顶级头显我们就不得不提到Varjo,Varjo是…

DBeaver连接数据库报连接错误:Public Key Retrieval is not allowed

问题描述 使用DBeaver软件连接mysql数据库的时候,有如下提示信息: 解决办法 点击驱动属性->找到allowPublicKeyRetrieval这项,把值设置为TRUE,再点击连接测试 可以成功连接到mysql数据库,问题解决~

杰发科技Bootloader(3)—— 基于7801的APP切到Boot

为了方便在APP中跳转到Boot重新进行升级,有两种办法,7840同样可以使用。 1. 调用reset接口进行复位,复位后会先进Boot,再自动跳转到App。 NVIC_SystemReset(); 2. 直接使用跳转指令,参考Boot跳转到App代码&#xff0…

一种简易CAN数据分析器的实现(一)【工程创建+CAN波特率计算工具】

程序实现详见《一种简易CAN数据分析器的实现(二)【程序实现】》 微信公众号关注:掌芯元器,免费为大家提供嵌入式相关的技术咨询!!! 目录 一、功能需求及实现 1、功能设计及实现 2、软硬件需求…

GitLab CI Runner安装

参考文章:[花了两天,搞了Gitlab-Runner CI/CD实现自动化部署,可比Jenkins香太多啦!!!!_gitlab的cicd取代jenkens-CSDN博客] Gitlab的CI需要安装CI专用的GitLab Runner,否则跑不起来…

优秀的安防视频监控平台应该具备怎样的视频编解码能力?

随着安防技术的飞速发展,监控平台作为保障公共安全、维护社会秩序的重要工具,其性能与效率日益成为行业关注的焦点。其中,监控平台的视频编码能力在视频监控系统中扮演着至关重要的角色,视频编码技术作为监控系统的核心组成部分&a…

基于JAVA+SpringBoot+Vue的中药实验管理系统

基于JAVASpringBootVue的中药实验管理系统 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接🍅 哈…

探究文本完全对齐技术:从理论到代码

文本完全对齐算法解析与实现 引言 在编辑文档、设计书籍版面或网页时,通常需要将文本进行格式化对齐,以提升视觉吸引力和易读性。 一种广泛采用的对齐技术是所谓的“完全对齐”,这意味着文本的每一行的起始和结束位置都要对齐整齐。 虽然许多…