简单图解一下线性注意力机制

知乎:刀刀宁
链接:https://zhuanlan.zhihu.com/p/718156896

线性注意力机制的文章有很多了,在本篇笔记中,我们简单地对各种方法进行一下图解比较,串一下当前的线性注意力机制,涉及的公式极少,主要梳理逻辑脉络。本文会从 state space model 中间状态模型这条主线,来梳理 RNN、LSTM,再到 Retentive、GLA 等 Linear Attention 的改进版,最后再到 Mamba、Mamba-2、RWKV 等方法。

线性注意力机制的好处很多,可以用“多快好省”来形容:理论复杂度低、速度快、结构简单、上下文长度线性依赖、KVCache 不需要额外存储,且优化容易。但相比 full attention,线性注意力机制的表达能力确实差一截,且无法完全丢弃历史信息,类似于 RNN 的遗忘和依赖关系,因此产生了各种改进方法。

同时,线性注意力也具备很多并行和 IO 感知的优化,否则复杂度线性化后,并行和运算速度若不如 full attention,就显得鸡肋。因此,如何结合硬件(主要是 CUDA GPU 的特点)来进行注意力机制的系统级优化是不可忽略的问题。dfd70619818b6235606a4c56fab8ddff.png

Part 1: Linear Attention 与非必要 softmax

Linear Attention Transformers (Transformers are RNNs: Fast Autoregressive Transformers with Linear Attention) 的论文发表于 2020 年。

https://proceedings.mlr.press/v119/katharopoulos20a/katharopoulos20a.pdf

为了帮助理解,先引用苏神 2020 的文章:《Attention 必须有个 Softmax 吗?》以及《超无聊的:Gated Linear Attention Transformers with Hardware-Efficient Training》,来看一下去掉 softmax 函数后的 attention 机制。这里省略公式和证明,感兴趣的读者可移步前文。

https://spaces.ac.cn/archives/7546 https://zhuanlan.zhihu.com/p/672824235

下图左图是原来的 attention 机制,矩阵乘法的顺序和计算复杂度:设序列长度为 ,当前复杂度为 级,这是我们熟悉的情形。而右图则去掉了 softmax,用近似函数 sim 替代,并改变了 QKV 的计算顺序(本文中的典型线性注意力机制)。这时,神奇的事情发生了:中间结果从 的矩阵变成了 ,复杂度变成了 线性(当然,若 是 4096 级别, 也很大,此时还需考虑减小 等方法)。但整个运算过程与 的长度呈线性相关性。

这只是 softmax 的原因吗?最初认为是,但深入研究后发现&#x

<think>好的,用户的问题是关于时间注意力机制图解和讲解,需要结合已有的参考引用。首先,我需要理解时间注意力机制的基本概念,可能和自注意力机制相关,但可能侧重于时间序列数据。用户提供的引用中提到了自注意力机制、Transformer、多头注意力以及位置编码,这些都是相关的。 首先,我需要确定时间注意力机制是否等同于自注意力机制在时间序列中的应用,或者是否有特定的变体。根据引用[1]和[2],自注意力机制主要用于处理序列数据,计算不同位置之间的关系,这可能包括时间维度。引用[3]提到注意力机制在Seq2Seq模型中帮助解决长距离依赖问题,这可能与时间注意力有关。引用[4]提到位置编码用于引入位置信息,这在处理时间序列时也很重要。 接下来,用户需要图解和讲解,所以需要用中文清晰解释时间注意力机制的工作原理,可能包括步骤分解、数学公式、结构图以及应用场景。需要确保数学公式符合给定的格式要求,如行内公式用$...$,独立公式用$$...$$,并正确引用相关文献。 需要确认时间注意力机制是否有特定的计算方式,比如是否在计算注意力分数时考虑时间间隔或位置差异。根据引用[2],自注意力计算分数时可能使用查询、键、向量的点积,而时间注意力可能加入时间权重或位置编码,如引用[4]中的位置编码。 然后,生成相关问题,可能涉及时间注意力与自注意力的区别、数学表达、优化方法等。同时,需要检查引用中的内容是否足够支持回答,比如引用[3]提到注意力机制在机器翻译中的应用,引用[4]的位置编码,这些可以结合起来解释时间注意力中的位置处理。 需要确保回答结构清晰,分步骤讲解,可能包括定义、计算步骤、图解说明、位置编码的作用、应用场景等部分。同时,在回答末尾添加相关问题,引导用户深入思考。 最后,检查是否符合所有系统级指令:正确使用LaTeX格式、中文回答、引用标识自然添加、生成相关问题,以及回答结构清晰可靠。</think>### 时间注意力机制图解与讲解 时间注意力机制(Temporal Attention)是注意力机制的一种变体,主要用于处理**时间序列数据**(如视频、语音、传感器数据等),通过动态关注不同时间步的特征来提升模型对时序依赖关系的建模能力。以下是分步详解: --- #### 1. **核心思想** 时间注意力机制通过计算**不同时间步之间的相关性权重**,决定模型在处理当前时间步时应重点关注哪些历史或未来的时间步信息。其数学表达式可表示为: $$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$ 其中: - $Q$(Query)代表当前时间步的查询向量 - $K$(Key)和 $V$(Value)分别代表其他时间步的键向量和值向量[^2] --- #### 2. **计算步骤分解(以时间序列为例)** 假设输入序列为 $X = [x_1, x_2, ..., x_T]$,每个时间步 $x_t$ 的特征维度为 $d$: 1. **生成Query、Key、Value**:通过线性变换得到三个矩阵: $$ Q = XW^Q, \quad K = XW^K, \quad V = XW^V $$ $W^Q, W^K, W^V$ 是可学习参数矩阵。 2. **计算注意力分数**:通过 $Q$ 和 $K$ 的点积衡量时间步之间的相关性: $$ \text{Score}(t, i) = \frac{Q_t \cdot K_i}{\sqrt{d_k}} $$ 其中 $d_k$ 是缩放因子,防止梯度消失。 3. **生成权重矩阵**:对分数进行归一化: $$ \alpha_{t,i} = \text{softmax}(\text{Score}(t, i)) $$ $\alpha_{t,i}$ 表示在时间步 $t$ 对时间步 $i$ 的关注程度[^3]。 4. **加权聚合**:最终输出为权重与 $V$ 的加权和: $$ h_t = \sum_{i=1}^T \alpha_{t,i} V_i $$ --- #### 3. **时间注意力机制图解** 下图展示了一个时间步 $t$ 对序列的注意力分配过程: ``` 时间步: t-2 t-1 t t+1 t+2 注意力权重: 0.1 0.3 0.4 0.2 0.0 ``` - **深色箭头**表示高权重,模型更关注时间步 $t-1$ 和当前步 $t$ 的信息。 - **位置编码**(Positional Encoding)会被添加到输入中,以保留时间顺序信息[^4]。 --- #### 4. **时间注意力 vs 自注意力** - **相似点**:均使用 $Q/K/V$ 结构和缩放点积计算权重。 - **区别**:时间注意力通常**显式建模时间间隔**,例如在分数计算中引入时间衰减因子: $$ \text{Score}(t, i) = \frac{Q_t \cdot K_i}{\sqrt{d_k}} + w_{|t-i|} $$ $w_{|t-i|}$ 是随时间间隔增加而衰减的权重。 --- #### 5. **应用场景** 1. **视频动作识别**:关注关键帧的时间区域。 2. **股票预测**:捕捉历史价格中的关键时间点。 3. **语音识别**:对齐音频与文本的时间位置。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值