Selective attention improves transformer详细解读

Selective attention improves transformer Google 2024.10.3
一句话:简单且无需额外参数的选择性注意力机制,通过选择性忽略不相关信息并进行上下文剪枝,在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。
论文链接:https://arxiv.org/pdf/2410.02703v1
1.为什么引入selective attention
Transformer的记忆负担
Transformer,核心self-attention关注输入序列中的所有部分,不仅仅是局部信息(也是RNN、LSTM改进可以关注更长字符串,但是也引入了更高计算量),所有信息都保存在上下文缓冲区,计算所有上下文信息的相关性
Selective attention高效信息筛选器
自动删除不再有用的信息,从上下文缓冲区中移除不必要的元素,提高模型性能,减少计算和内存需求
在这里插入图片描述
标记token b无法影响标记c从标记a中读取信息的程度,标记b确定标记a对于后续标记c是不相关甚至是误导性的
Selective attention允许一个标记决定另一个标记不再被需要,从而减少后续标记对该标记的关注度
2.selective attention可视化剔除token过程
(1)变量赋值
y=7; x=1; x=3; z=5; x=? 则:x=3,即不管前面x=1赋值是多少,都与之无关
在这里插入图片描述
红色线代表对前面token的掩蔽程度,在变量赋值中,掩蔽程度非0即1(一般为[0,1])
变量赋值中,绿色箭头处,当出现第二次 ‘Z=’ token时,前面Z=、177直接掩蔽掉
(2)自然语言模型
序列:Bar,##ack, Obama
在这里插入图片描述
##ack直接掩蔽了bar,这里红色线有深浅,代表掩蔽程度不同,比如day对a的掩蔽程度比较浅,说明保留了部分a的信息
3.选择函数
selection matrix SNxN,Sij表示标记xi对标记xj的掩蔽程度
在这里插入图片描述
S矩阵限制条件:1.通过ReLU限制负值为0,只降低注意力,不增强注意力 2. Begin of Sentence标记,初始句首不屏蔽,本身不关注不屏蔽
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第一行:QK/sqrt(dk)
第二行:mask引入设置
第三行:选定head 0
第四行-第六行:S的三个约束条件
第七行:右移,且右移后对角线为0?
第八行:S累加得到F,为什么累加?
第九行:从标准attention中减去F
第十行:归一化权重

文心一言代码解读
在这里插入图片描述
4.context pruning 上下文剪枝
上下文缓冲区修剪元素来减少注意力模块的内存和计算需求。每层的稀疏性在样本之间是稳定的(本文实验有验证),为每一层设定各自固定的内存预算。
上下文剪枝步骤:
1.初始化K = K1, . … , KL= N,为每层内存预算,其中N的上下文缓冲区大小
2.前Kl个token保持,后续每个token和前面对比,丢弃最高F值对应token
3.贪婪迭代方法分配总的内存预算,迭代直到模型性能达到预定义阈值,即标准attention模型性能
5.loss
在这里插入图片描述

每层内存之和/层数token数,我们希望M(内存)越小越好,M越小,L越小,相关性一致,同时Ln≠pad即同aqrt(dk)限定范围一样,将分子大小限定一定范围内
在这里插入图片描述
内存计算, τ= 1限定F矩阵范围不超过1
Lppl: standard log-perplexity loss 标准对角困惑度损失函数
ϵ is a small weight factor: ϵ = 0.1, τ= 1,固定数值
L表示层数,n≠pad表示非填充标记的数量(字符串输入固定,缺失填充padding,对应token来说即非填充token,实际有效信息token)
6.selective attention改进及其效果
(1)简单且无需额外参数
(2)减小注意力机制的上下文缓冲区大小,推理过程中显著减少内存和计算需求
(3)标准Attention模型拥有约两倍多的头数和参数与selective attention效果相当
(4)上下文大小为512、1024和2048时,内存分别比未采用选择性注意力的相同验证困惑度的模型减少16倍、25倍和47倍
7.待改进
(1)Decoder-only
(2)上下文减少提高推理效率,但并不能提高训练效率,探索在训练过程中迭代减少上下文缓冲区的大小
(3)移除元素后,没有对模型进行进一步的训练,在上下文减少后进行一些额外的训练可能会实现进一步的改进
(4)仅对具有选择性注意力的预训练模型进行了实验,微调步骤中将其应用于现有模型
8.实验

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

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

相关文章

卡尔曼滤波:从理论到应用的简介

卡尔曼滤波(Kalman Filter)是一种递归算法,用于对一系列噪声观测数据进行动态系统状态估计。它广泛应用于导航、控制系统、信号处理、金融预测等多个领域。本文将介绍卡尔曼滤波的基本原理、核心公式和应用案例。 1. 什么是卡尔曼滤波&#x…

tdengine学习笔记

官方文档:用 Docker 快速体验 TDengine | TDengine 文档 | 涛思数据 整体架构 TDENGINE是分布式,高可靠,支持水平扩展的架构设计 TDengine分布式架构的逻辑结构图如下 一个完整的 TDengine 系统是运行在一到多个物理节点上的,包含…

ROS进阶:使用URDF和Xacro构建差速轮式机器人模型

前言 本篇文章介绍的是ROS高效进阶内容,使用URDF 语言(xml格式)做一个差速轮式机器人模型,并使用URDF的增强版xacro,对机器人模型文件进行二次优化。 差速轮式机器人:两轮差速底盘由两个动力轮位于底盘左…

VPI photonics的一些使用经验(测相位 快速搜索)持续更新

1.使用FuncSinEl模块的注意事项: 2.在VPI player(示波器)测电信号相位时候,可以使用正则表达式,快速搜索。 比如我要搜索以30开头的数据,输入: ^30 其他的正则表达式不适用,比如以…

前端知识点---this的用法 , this动态绑定(Javascript)

文章目录 this动态绑定 , this的用法01. 全局作用域下的 this02. 函数中的 this2.1 普通函数调用2.2 构造函数调用2.3 箭头函数中的 this 03对象方法调用04. 事件处理中的 this05. 动态绑定的方式5.1 call 方法5.2 apply 方法5.3 bind 方法 06类中的 this07. 总结 this动态绑定…

【MySQL 保姆级教学】详细讲解视图--(15)

视图 1. 为什么要有视图?2.视图的定义和特点3. 创建视图4. 视图的使用举例4.1 创建表并插入数据4.2 举例 5. 视图和基表之间有什么联系呢? 1. 为什么要有视图? 当我们频繁地使用用多表查询和复合查询出的结果时,就需要频繁的使用…

聊聊Flink:Flink的分区机制

一、前言 flink任务在执行过程中,一个流(stream)包含一个或多个分区(Stream partition)。TaskManager中的一个slot的subtask就是一个stream partition(流分区),一个Job的流&#xf…

探索SAP财务管理软件:重塑企业财务管理新境界

在当今瞬息万变的商业环境中,企业对于财务管理的精准性、高效性和透明度要求日益增高。作为全球领先的企业管理软件解决方案提供商,SAP凭借其强大的财务管理软件,正引领着全球企业迈向财务管理的新纪元。 SAP 财务管理系统通过智能化技术&am…

数字孪生乡村:数字乡村智慧化营建思路

数字化技术已然成为全球理论和产业界关注的热点命题 ,并广泛应用于城市规划、交通管理、工业、医疗、教育等领域,已经成为文化遗产保护领域最主要方式 ,如数字非遗、数字文物、数字文旅等。 传统村落的数字化保护呈现由单一技术向多技术集成…

《FreeRTOS任务基础知识以及任务创建相关函数》

目录 1.FreeRTOS多任务系统与传统单片机单任务系统的区别 2.FreeRTOS中的任务(Task)介绍 2.1 任务特性 2.2 FreeRTOS中的任务状态 2.3 FreeRTOS中的任务优先级 2.4 在任务函数中退出 2.5 任务控制块和任务堆栈 2.5.1 任务控制块 2.5.2 任务堆栈…

SpringCloud基础 入门级 学习SpringCloud 超详细(简单通俗易懂)

Spring Cloud 基础入门级学习 超详细(简单通俗易懂) 一、SpringCloud核心组件第一代:SpringCloud Netflix组件第二代:SpringCloud Alibaba组件SpringCloud原生组件 二、SpringCloud体系架构图三、理解分布式与集群分布式集群 四、…

Photoshop(PS)——人像磨皮

1.新建一个文件,背景为白色,将图片素材放入文件中 2.利用CtrlJ 复制两个图层出来,选择第一个拷贝图层,选择滤镜---杂色---蒙尘与划痕 3.调整一下数值,大概能够模糊痘印痘坑,点击确定。 4.然后选择拷贝2图层…

core 文件

sysctl -a | grep core_pattern 查看core 的路径 linux下寻找段错误的方法 - 空水 - 博客园 /var/log/messages dmesg -T 一、dmesg命令 dmesg命令,用于获取程序出错时的堆栈地址,用grep过滤出发生崩溃的程序,以及对应的堆栈信息 [Thu Nov …

centos rich 美观打印日志

文章目录 步骤 1: 安装 Python 和 pip步骤 2: 安装 rich-cli步骤 3: 验证安装步骤 4: 使用 rich-cli参考 在 CentOS 上安装 rich-cli 工具,你可以按照以下步骤进行操作。rich-cli 是一个命令行工具,用于将 rich 库的功能(例如美化输出&#x…

《动手学深度学习》中d2l库的安装以及问题解决

当我们在按照《动手学深度学习》这本书或者网课学习时会有需要导入d2l库的使用。​d2I是一个与《动手学深度学习》(Dive into Deep Learning)一书配套的开源教学库,它包含了作者李沐设计的深度学习相关代码和示例。这个库旨在帮助读者通过实践经验来理解…

【大模型实战篇】vLLM的由来以及大模型部署、推理加速实践

1. 问题背景分析及vLLM的由来 大模型毫无疑问,在工作、生活中已经逐渐扮演越来越重要的角色。但大模型的尺寸一般都比较大,处理一个大模型请求的成本可能比传统关键字查询高出 10 倍。推理的成本代价较高,因此提高大模型服务系统的吞吐量&…

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC(精简指令集)MCU的SOC芯片,用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统? 无钥匙进入系统具有无钥匙进入并且启动的功能,英文名称是PKE&…

路由器基本原理与配置

一 , 路由是什么? 从源主机到目标主机的转发过程; 二 , 路由器 (1)路由器的工作原理 路由器是一种三层设备,是使用IP地址寻址,实现从源IP到达目标IP地址的端到端的服务&#xff0c…

NPOI 实现Excel模板导出

记录一下使用NPOI实现定制的Excel导出模板&#xff0c;已下实现需求及主要逻辑 所需Json数据 对应参数 List<PurQuoteExportDataCrInput> listData [{"ItemName": "电缆VV3*162*10","Spec": "电缆VV3*162*10","Uom":…

element plus的表格内容自动滚动

<el-table:data"tableData"ref"tableRef"borderstyle"width: 100%"height"150"><el-table-column prop"date" label"名称" width"250" /><el-table-column prop"name" label&…