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

线性注意力(Linear Attention, LA)学习

定义:采用矩阵乘法结合律的特点,所设计的一种\(\mathcal{O}(n)\)时间复杂度的注意力机制

一、softmax注意力机制

设输入特征\(x\)大小为\(N×F\),其是由\(N\)个维度为\(F\)的特征向量构成的序列(往往\(N\gg F\)

Transformer的一般表示形式为:

\[T(x) = f(A(x) + x) \tag{1} \]

其中,\(A(\cdot)\)表示注意力机制,\(f(\cdot)\)表示前馈处理。

针对\(A(\cdot)\),首先,将\(W_Q \in \mathbb{R}^{F \times D}\)\(W_K \in \mathbb{R}^{F \times D}\)\(W_V \in \mathbb{R}^{F \times M}\)作用于\(x\)投影得到对应的\(QKV\),此处的\(QK\)相乘是计算二者之间的相似性,并通过softmax得到相似性权重矩阵作用于\(V\)来修正比例,公式如下:

\[A(x)=V_i'=softmax(\frac{xW_Q(xW_K)^T}{\sqrt{D}})xW_V=softmax(\frac{QK^T}{\sqrt{D}})V \tag{2} \]

二、线性注意力机制

1.基础解释

根据\(QK\)计算相似性的特点,在不考虑因果性的前提下,广义上可表示为:

\[V_i' = \frac{\sum_{j=1}^{N} \operatorname{sim}(Q_i, K_j) V_j}{\sum_{j=1}^{N} \operatorname{sim}(Q_i, K_j)} \tag{3} \]

\(\operatorname{sim}(q, k)=\exp \left( \frac{q^T k}{\sqrt{D}} \right)\)时,公式(3)等价于公式(2)

softmax的一个特点是满足“输出非负”,因为需要的是一个相似性权重矩阵(像是通过打分来调整\(V\)中数据的分配比例)

因此通过某种非负相似度映射函数即可将\(QK\)拆分开,论文中采用的公式如下

\[\phi (x) = \text{elu}(x) + 1 \tag{4} \]

更新后的注意力公式如下(采用矩阵乘法交换律):

\[V_{i}^{\prime} = \frac{\sum_{j=1}^{N} \phi(Q_{i})^{T} \phi(K_{j}) V_{j}}{\sum_{j=1}^{N} \phi(Q_{i})^{T} \phi(K_{j})}=\frac{\phi(Q_i)^T \sum_{j=1}^N \phi(K_j) V_j^T}{\phi(Q_i)^T \sum_{j=1}^N \phi(K_j)} \tag{5} \]

公式(2)的时间复杂度为\(\mathcal{O}(N^2max(D,M))\),而优化后的公式(5),首先计算维度为\(C\)的特征映射,最终时间复杂度为\(\mathcal{O}(NCM)\)

2.因果掩码

在考虑因果性的情况下,公式(5)可化简为:

\[V_{i}^{\prime} = \frac{\phi(Q_{i})^{T} \sum_{j=1}^{i} \phi(K_{j}) V_{j}^{T}}{\phi(Q_{i})^{T} \sum_{j=1}^{i} \phi(K_{j})} \tag{6} \]

\(S_{i} = \sum_{j=1}^{i} \phi(K_{j}) V_{j}^{T}\)\(Z_{i} = \sum_{j=1}^{i} \phi(K_{j})\),进一步化简为:

\[V_{i}^{\prime} = \frac{\phi (Q_{i})^{T} S_{i}}{\phi (Q_{i})^{T} Z_{i}} \tag{7} \]

其中,\(S_{i} = S_{i-1} + \phi(K_{i}) V_{i}^{T}\)\(Z_{i} = Z_{i-1} + \phi(K_{i})\),由此可见其与传统RNN之间的相似之处,通过这种方式,能在\(S_{i-1}\)\(Z_{i-1}\)的基础上通过常数时间计算出\(S_{i}\)\(Z_{i}\)

3.梯度计算

在进行梯度计算时,要存储所有的中间值\(S_{i}\),这使得内存消耗增加为原来的\(max(D,M)\)倍,为此本文通过累积和的方式计算公式(6)给定分子\(\bar{V}_i\)和标量损失函数关于该分子的梯度 \(\nabla_{\bar{V}_i} \mathcal{L}\),以通过线性时间和恒定内存计算因果性序列的前向传播(做题)与反向传播(纠错),公式如下:

\[\nabla_{\phi(Q_i)} \mathcal{L} = \frac{\partial \mathcal{L}}{\partial \bar{V}_i} \cdot \frac{\partial \bar{V}_i}{\partial \phi(Q_i)} = \nabla_{\bar{V_i}} \mathcal{L} \left( \sum_{j=1}^i \phi(K_j) V_j^T \right)^T \tag{8} \]

同理:

\[\nabla_{\phi(K_i)} \mathcal{L} = \left( \sum_{j=i}^{N} \phi(Q_j) \left( \nabla_{\bar{v}_j} \mathcal{L} \right)^T \right) V_i \tag{9} \]

\[\nabla_{V_i} \mathcal{L} = \left( \sum_{j=i}^{N} \phi(Q_j) \left( \nabla_{V_j} \mathcal{L} \right)^T \right)^T \phi(K_i) \tag{10} \]

综上,其具有线性时间\(\mathcal{O}(NCM)\)和恒定内存\(\mathcal{O}(Nmax(C,M)\)

三、不足

\(S_{i}\)\(Z_{i}\)是无衰减的直接累加,所有信息平等叠加,早期的信息容易被后期噪声淹没,因此,需要通过门控、非线性增强、位置编码等方式来弥补此问题。后续的Mamba一定程度上也可以说是线性注意力的一种改进。

原论文

http://www.jsqmd.com/news/278602/

相关文章:

  • Maven依赖冲突终极解决方案(资深专家实战经验总结)
  • BthAvrcpAppSvc.dll文件丢失找不到 免费下载方法分享
  • 分享广州靠谱的隔膜气压罐供应商,推荐哪家?
  • 网页编辑器如何优化WordPress的PPT公式远程协作功能?
  • 6.1 拒绝裸奔:DevSecOps 核心理念与全链路安全架构设计
  • 2026年分析太原外贸网站建设老牌定制公司,哪家排名靠前?
  • AF488标记的Streptavidin,AF488-链霉亲和素:一种基于生物素系统的荧光检测工具
  • WordPress插件市场有哪些支持Word公式智能识别的工具?
  • MyBatis-Plus遇上Spring Boot 3后究竟发生了什么?(深度解析底层集成原理)
  • Face Fusion清空按钮失效?常见操作异常处理解决方案
  • 线程池参数设置不当导致系统崩溃?这5个坑你必须避开
  • AF430标记的Streptavidin,链霉亲和素,AF430偶联物使用注意事项
  • Java单例到底怎么写才真正安全?——从饿汉到双重检查锁,6种实现的JVM字节码级对比实测
  • 6.2 镜像安全:从签名到漏洞扫描,打造可信软件供应链
  • 详细介绍:javaEE:多线程,单列模式和生产者消费者模型
  • CORS配置避坑指南,90%开发者忽略的跨域安全细节大公开
  • AF594标记的Streptavidin,一种基于生物素-链霉亲和素体系的AF405荧光探针
  • 字符串判空的5种方式大比拼(哪种效率最高?)
  • 实测总结:AI生成PPT的6个常见坑,新手必看
  • 线性注意力(Linear Attention,LA)学习
  • Parquet 入门详解:深入浅出全解析
  • AF430标记的Streptavidin,链霉亲和素AF430偶联物:光谱特性、实验应用与操作要点
  • ubuntu系统下,vim编辑时候,如何显示行数
  • uniapp vue h5小程序奶茶点餐纯前端hbuilderx
  • 空指针不再怕,Java字符串判空实战技巧全解析
  • 6.3 密钥隐身术:Sealed-Secrets 与 Vault 的 K8s 密钥管理之道
  • 单细胞质量控制常见指标的解读学习
  • 6.4 守门员机制:使用 Kyverno 实施 K8s 准入控制与安全策略
  • 【Java百万级Excel导出性能优化实战】:20年架构师亲授7大内存与IO瓶颈突破方案
  • Java单例模式选型决策树(附HotSpot 8–17实测数据):哪种实现吞吐量高37%、内存占用低2.1倍?