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.实验

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

shell脚本(1)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:shell脚本(1)脚本创建执行与变量使用_哔哩哔哩_bilibili 本文主要讲解shell脚本的创建、执行和变量的使用。 一、脚本执行…

本地 / 网络多绑定用例总结

原文连接:AUTOSAR_EXP_ARAComAPI的7章笔记(4) 情景设定 在前一节的基础上,假设有类似情景,区别在于服务实例 2 位于与 AP 产品相同以太网的不同 ECU 上,服务消费者及其代理驻留在 AP 产品 ECU 上。因以太网…

通用定时器---输出比较功能

目录 一、概念 二、输出比较的8种模式 三、输出比较输出PWM波形的基本结构 配置步骤 四、示例代码 一、概念 OC(OutPut Compare)输出比较。输出比较可以通过比较CNT与CCR寄存器的关系,来对输出电平进行置1/置0/翻转的操作,可…

CSS盒子的定位> (下篇)#固定定位#笔记

一、固定定位 1.概念 固定定位其实是绝对定位的子类别,一个设置了position:fixed的元素是相对于视窗固定的,就算页面文档发生了滚动,它也会一直待在相同的地方。 2.代码属性 CSS代码添加 position:fixed 水平方…

leetcode100:相同的树

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出:true示例 2&…

我谈二值形态学基本运算——腐蚀、膨胀、开运算、闭运算

Gonzalez从集合角度定义膨胀和腐蚀,不易理解。 Through these definitions, you can interpret dilation and erosion as sliding neighborhood operations analogous to convolution (or spatial filtering). 禹晶、肖创柏、廖庆敏《数字图像处理(面向…

【数据结构 | C++】整型关键字的平方探测法散列

整型关键字的平方探测法散列 将给定的无重复正整数序列插入一个散列表,输出每个输入的数字在表中的位置。所用的散列函数是 H(key)key%TSize,其中 TSize 是散列表的表长。要求用平方探测法(只增不减,即H(Key)i^2)解决冲…

24.11.15 Vue3

let newJson new Proxy(myJson,{get(target,prop){console.log(在读取${prop}属性);return target[prop];},set(target,prop,val){console.log(在设置${prop}属性值为${val});if(prop"name"){document.getElementById("myTitle").innerHTML val;}if(prop…

413: Quick Sort

解法&#xff1a; #include <bits/stdc.h> using namespace std; const int N1e55; int a[N]; int n;int main(int argc, char** argv) {cin>>n;for (int i0;i<n;i) cin>>a[i];sort(a,an);for (int i0;i<n;i) cout<<a[i]<<" "…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面&#xff0c;等待几分钟&#xff0c;即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份&#xff08;密码&#xff1a;devuser…

在qml里如何使用C++ Qt数据模型QAbstractListModel

本篇博客用qml GridView来显示视频矩阵,然后加载本地的视频,需要用到C++ Qt的model, 代码环境Qt6.5.3 qml, 对应的视频讲解:https://edu.csdn.net/learn/40003/653975?spm=3001.4143 先看一下界面效果: 上图是用qml ScrollView和GridView做了一个可以滚动显示的视频矩阵列…

Java项目实战II基于微信小程序的实习记录(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在当今竞争激烈的就业市场中&#xff0…

【C++笔记】vector使用详解及模拟实现

前言 各位读者朋友们&#xff0c;大家好&#xff01;上期我们讲了string类的模拟实现&#xff0c;这期我们开启vector的讲解。 一.vector的介绍及使用 1.1 vector的介绍 vector的文档 使用STL的三个境界&#xff1a;能用、明理、能扩展&#xff0c;下面学习vector&#xff…

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

借助Excel实现Word表格快速排序

实例需求&#xff1a;Word中的表格如下图所示&#xff0c;为了强化记忆&#xff0c;希望能够将表格内容随机排序&#xff0c;表格第一列仍然按照顺序编号&#xff0c;即编号不跟随表格行内容调整。 乱序之后的效果如下图所示&#xff08;每次运行代码的结果都不一定相同&#x…

Essential Cell Biology--Fifth Edition--Chapter one (6)

1.1.4.4 Internal Membranes Create Intracellular Compartments with Different Functions [细胞膜形成具有不同功能的细胞内隔室] 细胞核、线粒体和叶绿体并不是真核细胞中唯一的膜包围细胞器。细胞质中含有大量的[ a profusion of]其他细胞器&#xff0c;这些细胞器被单层膜…

动态规划29:673. 最长递增子序列的个数

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;673.…

M-LAG 技术笔记

M-LAG 简介 M-LAG&#xff08;Multichassis link aggregation&#xff0c;跨设备链路聚合&#xff09;将两台物理设备在聚合层面虚拟成一台设备来实现跨设备链路聚合&#xff0c;从而提供设备级冗余保护和流量负载分担。 M-LAG 基础概念 如 图1-1 所示&#xff0c;Device A …

C语言-指针及变量的概念与使用

1、指针的概念 计算机中所有的数据都必须放在内存中&#xff0c;不同类型的数据占用的字节数不一样&#xff0c;例如 int 占用 4 个字节&#xff0c;char 占 用 1 个字节。为了正确地访问这些数据&#xff0c;必须为每个字节都编上号码&#xff0c;就像门牌号、身份证号一样&a…

tauri开发中,使用node将png图片转成苹果的icns图标格式,解决tauri icon生成的mac图标过大问题

在tauri开发中&#xff0c;我们使用tauri icon生成的图标在windows上是正常的&#xff0c;但是在mac上就显示过大&#xff0c;也可以看tauri的issue&#xff1a;[v2]When using the Tauri Icon to generate icons, it is always larger than other icons in Mac tauri-apps/ta…