首页 > 其他分享 >【AI学习】Mamba学习(二):线性注意力

【AI学习】Mamba学习(二):线性注意力

时间:2024-10-04 22:47:35浏览次数:9  
标签:AI 复杂度 学习 Softmax key query 线性 Mamba 注意力

上一篇《Mamba学习(一):总体架构》提到,Transformer 模型的主要缺点是:自注意力机制的计算量会随着上下文长度的增加呈平方级增长。所以,许多次二次时间架构(指一个函数或算法的增长速度小于二次函数,但大于线性函数),如线性注意力、门控卷积和循环模型,以及结构化状态空间模型(SSM)被开发出来,以解决Transformer在长序列上的计算效率低下问题。

那先来了解一下什么是线性注意力。
关于线性注意力,已经有大量的文章,这里直接引用。

一、Softmax注意力与线性注意力

参见这篇文章《Softmax注意力与线性注意力的优雅融合
(文章链接:https://mp.weixin.qq.com/s/ndQTSmf3RCCLU0xjd-nrkQ)

由于 Softmax 注意力是平方复杂度,直接进行全局自注意力的计算往往会带来过高的计算量。
针对这一问题,先前的工作通常通过减少参与自注意力计算的特征数量的方法来降低计算量。例如,设计稀疏注意力机制(如 PVT)或将注意力的计算限制在局部窗口中(如 Swin Transformer)。尽管有效,这样的自注意力方法很容易受到计算模式的影响,同时也不可避免地牺牲了自注意力的全局建模能力。
与 Softmax 注意力不同,线性注意力将 Softmax 解耦为两个独立的函数,从而能够将注意力的计算顺序从 (query・key)・value 调整为 query・(key・value),使得总体的计算复杂度降低为线性。
下面的图可以看的很清楚。
在这里插入图片描述

二、Softmax注意力与线性注意力的公式表达

参见这篇论文《Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05)》(论文地址:https://arxiv.org/pdf/2405.16605)

在这里插入图片描述
从上面的公式可以看出,Softmax 注意力的问题是,Softmax是非线性的函数,如果没有 Softmax,那么就是三个矩阵 (query・key)・value 连乘 ,而矩阵乘法满足结合率,可以调整为调整为 query・(key・value)。
(query・key)得到是n✖n的矩阵,(key・value)得到的是d✖d的矩阵。在d远小于n的情况下,复杂度就大致从O(n^2)降低到O(n)量级。
线性注意力将 Softmax 解耦为两个独立的函数,从而能够将注意力的计算顺序从 (query・key)・value 调整为 query・(key・value),使得总体的计算复杂度降低为线性。

三、苏神的几篇文章

线性Attention的探索:Attention必须有个Softmax吗?
文章链接:https://mp.weixin.qq.com/s/ziY7y9Lcc4jXf08UtJvKsQ
文章探讨了线性注意力的几种形式。

线性Transformer应该不是你要等的那个模型
文章链接:https://mp.weixin.qq.com/s/MhLXO_VE_VYb7iIJCgN_lQ
这篇文章分析指出:当输入序列长度较小时,是线性复杂度的 FFN 占主导,而不是注意力机制部分的计算。按照BERT的base版计算,当序列长度接近 5000 时,Transformer 的复杂度才真正体现出二次性!

Performer:用随机投影将Attention的复杂度线性化
文章链接:https://mp.weixin.qq.com/s/NKhp5TWPHEhLl76X3aECpg

Transformer升级之路:从Performer到线性Attention
文章链接:https://mp.weixin.qq.com/s/vut2KniBS3EFv5eSTH5Qqg

注意力机制真的可以“集中注意力”吗?
文章链接:https://mp.weixin.qq.com/s/HdqdjZeF8gxIRwUmU5ycIw

标签:AI,复杂度,学习,Softmax,key,query,线性,Mamba,注意力
From: https://blog.csdn.net/bylander/article/details/142697657

相关文章

  • 2017中国大学生程序设计竞赛 - 女生专场(SDKD 2024 Summer Training Contest K2)
    A-AutomaticJudge题意\(n\)个问题,\(m\)条记录,每条记录有题号、时间、状态,第一次\(AC\)的时候计入罚时,其他没发罚\(20\)分钟。求队伍过题数和罚时。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve()......
  • 《深度学习》OpenCV 背景建模 原理及案例解析
    目录一、背景建模1、什么是背景建模2、背景建模的方法    1)帧差法(backgroundSubtractor)    2)基于K近邻的背景/前景分割算法BackgroundSubtractorKNN    3)基于高斯混合的背景/前景分割算法BackgroundSubtractorMOG23、步骤    1)初始......
  • 《深度学习》OpenCV 指纹验证、识别
    目录一、指纹验证1、什么是指纹验证2、步骤1)图像采集2)图像预处理3)特征提取4)特征匹配5)相似度比较6)结果输出二、案例实现1、完整代码2、实现结果调试模式:三、指纹识别案例1、展示指纹库图片2、待验证指纹图3、看完整代码运行结果:一、指纹验证1、什么是指纹......
  • Indexing, Selecting & Assigning(pandas学习二)
    Nativeaccessors(原生访问器)原生Python对象为索引数据提供了很好的方法。Pandas继承了所有这些方法,这有助于轻松上手。考虑这个DataFramereviews输出如下(未截全):在Python中,我们可以通过将对象作为属性访问来访问它的属性。例如,book对象可能有一个title属性,我们可......
  • JVM学习【一】
    前言以下内容是经过我记忆并添加自己理解所写,可能会出现概念上的错误或者用词不当,请各位大佬批评指正。什么是JVMJVM是Java VirtualMachine,译为java虚拟机,是一台虚构出来的计算机,是一种规范。所以这也意味着JVM不止一种,只要满足JVM规范,任何企业,组织和个人都可以开发自己专......
  • 学习笔记 - log
    目录1.定义2.性质3.计算公式本人实力不济,如有错误或建议及补充,请指出(评论或私信都行)1.定义如果\(x^n=a\),那么\(n\)叫作以\(x\)为底\(a\)的对数。记作\(n=\log_xa(x>0\text{且}x\neq1)\)。2.性质\(\log_aa^x=x\)(定义)\(\log_a1=0(a^0=1)\)\(\log_aa=1(a^1=a)\)负数......
  • 扩散引导语言建模(DGLM):一种可控且高效的AI对齐方法
    随着大型语言模型(LLMs)的迅速普及,如何有效地引导它们生成安全、适合特定应用和目标受众的内容成为一个关键挑战。例如,我们可能希望语言模型在与幼儿园孩子互动时使用不同的语言,或在撰写喜剧小品、提供法律支持或总结新闻文章时采用不同的风格。目前,最成功的LLM范式是训练一......
  • Markdown学习
    一、学习Markdown格式掌握内容:使用#来表示不同级别的标题;使用数字加点标记有序列表;使用|和-创建表格;使用三个或以上的-或*标记水平线未掌握内容:使用-,*,或+标记无序列表;使用*或_进行斜体或粗体;使用语法添加图片;使用`(单个反引号)表示行内代码,使用三个反引号表示代......
  • 斜率优化学习笔记
    斜率优化模板题,有三倍经验,难度逐渐递增,建议从前做到后。P2365任务安排,P10979任务安排2,P5785[SDOI2012]任务安排。(但是我这种做法P10979和P5785没有区别。思路:设\(f_i\)表示第\(i\)个任务加工后所需的最小总费用,那么就有转移式。\[f_i=\displaystyle\min_{j=0}^{......
  • helm学习
    引用案例:学习连接:https://www.bilibili.com/video/BV12D4y1Y7Z7/?p=7&vd_source=e03131cedc959fdee0d1ea092e73fb24(时间:06:16)helm新建一个chart,然后删除templates里面的文件,重新编写一个,最后完成发布,更新,回滚动作  1,创建一个模版的chart包,删除原来的内容,自定义成我们的......