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

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

相关文章:

Selective attention improves transformer详细解读

Selective attention improves transformer Google 2024.10.3 一句话:简单且无需额外参数的选择性注意力机制,通过选择性忽略不相关信息并进行上下文剪枝,在不增加计算复杂度的情况下显著提升了Transformer模型的语言建模性能和推理效率。 论…...

git配置用户信息

在 Git 中配置用户信息,主要是设置你的用户名和电子邮件地址,这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤: 打开命令行工具。 设置你的用户名: git config --global user.name "你的名字"例如…...

【eNSP】路由基础与路由来源——静态路由实验

路由是数据包从源地址到目的地址的传输路径,静态路由是指网络管理员手动配置的路由条目,用于指定数据包从源地址到目的地址的固定路径。以下是关于静态路由的详细介绍。 一、路由的基础知识点 路由的定义: 路由是指在计算机网络中&#xff…...

Python Web 应用开发基础知识

Python Web 应用开发基础知识 引言 随着互联网的快速发展,Web 应用程序的需求日益增加。Python 作为一种简单易学且功能强大的编程语言,已经成为 Web 开发中广受欢迎的选择之一。本文将深入探讨 Python Web 开发的基础知识,包括常用框架、基…...

STM32 标准库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别

GPIO_SetBits: 使用例: GPIO_SetBits(GPIOA, GPIO_Pin_1 | GPIO_Pin_2);意思是将GPIOA1和GPIOA2设为高电平 GPIO_SetBits(GPIOA, 0x0003);意思也是将GPIOA1和GPIOA2设为高电平 实际上当选中GPIOA时,它会按位遍历,在哪一位有1说…...

【Redis_Day4】内部编码和单线程模型

【Redis_Day4】内部编码和单线程模型 五大数据类型内部编码object encoding key1:查询key1对应值的内部编码 redis中的单线程模型 redis中的数据都是以键值对的方式存的,redis内部用哈希表组织这些键值对。 五大数据类型 站在用户角度, 在一…...

Vue模块化开发的理解

Vue模块化是指在Vue.js开发中,将代码按功能拆分成多个独立的模块,以提高代码的可维护性、可读性和复用性。以下是对Vue模块化的详细理解: 一、Vue模块化的实现方式 组件化开发: Vue组件是模块化的基本单元,每个组件封…...

在Ubuntu22.04上源码构建ROS noetic环境

Ubuntu22.04上源码构建ROS noetic 起因准备环境创建工作目录并下载源码安装编译依赖包安装ros_comm和rosconsole包的两个补丁并修改pluginlib包的CMakeLists的编译器版本编译安装ROS noetic和ros_test验证 起因 最近在研究VINS-Mono从ROS移植到ROS2,发现在编写feat…...

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数,初始化节点对象,包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点,默认为None self.rig…...

[刷题]入门1.矩阵转置

博客主页:算法歌者本篇专栏:[刷题]您的支持,是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接:洛谷-B2106-矩阵转置 2、基础 此题目主要考察二维数组的掌控能力。 3、思路 观察,可知&#…...

Flutter开发之flutter_local_notifications

flutter_local_notifications 消息通知 flutter_local_notifications地址 flutter_local_notifications: ^18.0.1class NotificationHelper {//工厂模式调用该类时,默认调用此方法,将实例对象返回出去static NotificationHelper? _instance null;sta…...

Gradle和maven

大家好,我是风筝 作为Java 开发者,你平时用 Maven 还是 Gradle? 我一直用的都是 Maven,但是前几天做了一个小项目,用的是 Gradle,因为项目创建出来默认就是用的 Gradle,而且功能足够简单&#x…...

RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)

文章目录 RabbitMQ教程:发布/订阅模式(Publish/Subscribe)(三)一、引言二、简介三、准备工作3.1 说明3.2 生成项目 四、实战4.1 交换机(Exchanges)4.2 临时队列(Temporary Queues&am…...

服务器被挂马怎么办?——解决服务器被挂马的方法和步骤

服务器被挂马(即被植入恶意软件)是一个常见的网络安全问题,可能导致数据泄露、服务中断和经济损失。本文将详细介绍如何检测和清除服务器上的恶意软件,并提供实用的代码示例,帮助读者解决服务器被挂马的问题。 一、什…...

Qt 项目架构设计

在开发一个 Qt 项目时,合理的文件夹结构和清晰的构建流程是非常重要的。Qt 项目通常需要管理源代码、UI 文件、资源文件、构建脚本等。下面我会给出一个详细的文件夹结构示例,并解释每个部分的作用及如何设计 Makefile 或使用 Qt 的 qmake 来自动化构建过…...

Elasticsearch:管理和排除 Elasticsearch 内存故障

作者:来自 Elastic Stef Nestor 随着 Elastic Cloud 提供可观察性、安全性和搜索等解决方案,我们将使用 Elastic Cloud 的用户范围从完整的运营团队扩大到包括数据工程师、安全团队和顾问。作为 Elastic 支持代表,我很乐意与各种各样的用户和…...

高级java每日一道面试题-2024年11月07日-Redis篇-Redis有哪些功能?

如果有遗漏,评论区告诉我进行补充 面试官: Redis有哪些功能? 我回答: Redis 是一个开源的、基于键值对的 NoSQL 数据库,以其高性能、丰富的数据结构和多种功能而闻名。在高级 Java 面试中,了解 Redis 的核心功能和高级特性是非常重要的。以下是 Redi…...

实用且免费的 IP 地域查询 API 接口推荐

实用且免费的 IP 地域查询 API 接口推荐 在日常开发中,IP 地域查询是一个常见需求。最近无意间发现一个实用的 IP 地域查询 API,目前是免费的,未来是否收费尚不可知,但在当前情况下非常值得推荐。 API 地址示例: ht…...

STM32学习笔记----SPI协议

STM32的SPI(串行外设接口,Serial Peripheral Interface)是一种常见的同步串行通信协议,广泛应用于与传感器、显示屏、存储设备等外设的通信。SPI通过主从模式(Master/Slave)来实现数据交换,其中…...

Ceph的pool有两种类型

Replicated Pool(拷贝型Pool,默认) 概述: 这是Ceph的默认存储池类型。它通过生成对象的多份拷贝来确保数据的冗余和高可用性。 工作原理: 每个存入的对象(Object)都会被存储为多个副本&#xf…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

centos 7 部署awstats 网站访问检测

一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

c++第七天 继承与派生2

这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...