做网站的结论和心得,软件外包平台 接单,网站建设客户评价,wordpress支持建多个站点吗笔记来源#xff1a;bilibili Transformer 的死穴
Transformer 结构的核心是自注意力机制层#xff0c;无论是 encoder 还是 decoder#xff0c;序列数据都先经过位置编码后喂给这个模块。
但是自注意力机制的计算范围仅限于窗口内#xff0c;而无法直接处理窗口外的元素…笔记来源bilibili Transformer 的死穴
Transformer 结构的核心是自注意力机制层无论是 encoder 还是 decoder序列数据都先经过位置编码后喂给这个模块。
但是自注意力机制的计算范围仅限于窗口内而无法直接处理窗口外的元素。因此这种机制无法建模超出有限窗口的任何内容看不到长序列的世界。
解决有办法增加窗口的长度。但是这样会导致计算复杂度随着窗口长度的增加而呈现平方增加 O ( n 2 ) O(n^2) O(n2)因为每个位置的计算都需要与窗口内的所有其他位置进行比较。
Transformer 的本质通过位置编码把序列数据空间化然后通过计算空间相关度反向建模时序相关度。可以看到这个过程忽视了内存结构的细腻关联关系而是采取了一种一视同仁的暴力关联模式。比如一个句子中存在一定的语法同时一个句子中也可能存在冗余的信息。所以Transformer 存在不易训练的问题。
时序数据却使用空间化的注意力机制在当时是为了充分利用 GPU 的并行能力但这不是万能的。让长序列数据建模回归传统某种程序上说这是整个 SSM 类模型思考问题的初衷和视角而 Mamba 是其中的佼佼者。
时序状态空间模型 SSM
连续空间的时序建模 有很多实际的问题都可以用左图所示的连续空间模型来建模比如控制理论或线性系统领域。一般将其称为 LTIlinear time-invariant线性时不变系统用公式表示就是 h ′ ( t ) A h ( t ) B x ( t ) h(t) Ah(t)Bx(t) h′(t)Ah(t)Bx(t) y ( t ) C h ( t ) y(t)Ch(t) y(t)Ch(t) 输入为 x x x隐藏层的变量为 h ( t ) h(t) h(t) y ( t ) y(t) y(t) 为输出。上面的叫状态方程下面的叫观测方程。ABCD 为参数矩阵。
之所以叫时不变是因为ABCD 是固定的这是一个强假设transformer 没有这样的假设。D 在上面的式子中没写主要是因为在许多实际系统中它可以是零。通过牺牲通用性换来特定场景下的更高的性能是所有 SSM 模型的最底层逻辑。
时序离散化与 RNN
连续系统不方便计算机的处理所以要对它进行离散化展开就是沿时间拉长模型和 RNN 长相上几乎一样上图中中图所示。
公式也类似只是导数改为不同时刻角标形成递归过程。 h t A ˉ h y − 1 B ˉ x t h_t \bar{A}h_{y-1}\bar{B}x_t htAˉhy−1Bˉxt y t C h t y_t Ch_t ytCht 原文给出了一种从连续系统转换为系统的 ABC 参数对应关系。它其实只是一种方法的举例叫零阶保持Zero-Order Hold, ZOH。只用知道使用了一个 delta 函数经过一组运算可以提到新的 A 和 B。 A ˉ e x p ( Δ A ) , B ˉ ( Δ A ) − 1 ( e x p ( Δ A ) − I ) ⋅ Δ B \bar{A} exp(\Delta A),\bar{B}(\Delta A)^{-1}(exp(\Delta A)-I) \cdot \Delta B Aˉexp(ΔA),Bˉ(ΔA)−1(exp(ΔA)−I)⋅ΔB 从效果上看就是从上面的连续的输入变成了下面离散的输入。输出也是。 以上是零阶保持的效果图变成阶跃式的了。
并行化处理与 CNN
SSM 的最大特点是可以通过卷积实现了计算上的并行化上图中右图所示。
其核心的思想是使用 CNN 对时序数据建模借助不同尺度的卷积核从不同时间尺度上捕获时序特征。其公式表示为 K ˉ ( C B ˉ , C A B ˉ , . . . , C A ˉ k B ˉ , . . . ) \bar{K}(C\bar{B}, C\bar{AB},...,C\bar{A}^k\bar{B},...) Kˉ(CBˉ,CABˉ,...,CAˉkBˉ,...) y x ∗ K ˉ yx*\bar{K} yx∗Kˉ 其图示为 第二个式子与前面的图完全对应就是一个 CNN 实现。时序递归状态方程改用卷积操作实现了ABC 参数矩阵变成了 K 就是图中的卷积核。体现在效果上借助不同卷积核捕捉局部时间序列特征可以同时对短期和长期依赖关系学习并行计算提高了训练和推理的效率使得 SSMs 在处理复杂的时序数据时表现出色。
在实际的问题中往往会对 ABC 矩阵进一步简化假设成更简单的对角阵来计算这就是结构化 SSM也叫 S4 模型。
在某种程序上可以将 SSM 看成是 CNN 化的 RNN。
由于 SSM 有两个强假设线性时不变。所以极大的限制了其使用范围因为大部分的系统是非线性时变系统。而 Mamba 本质上是一个 SSM 模型的改进版放开了这两个约束。
Mamba选择性 SSM
Mamba 主要体现在设计了一种机制让状态空间具备选择性达到了 Transformer 的建模能力同时在序列长度上实现了线性扩展克服了 Transformer 的缺陷可处理最长达百万长度的序列而且效率很高准确率很好。 在时间序列模型中设计了一个类似于 LSTM 的门结构实现了选择性。BC 都带了 t变成了时变参数A 虽然没有直接含 t但是通过 Δ t \Delta _t Δt 也变成了时变的 Δ t \Delta _t Δt 就是前面的离散函数。下面的蓝色部分就是所谓的选择机制。
最简单的理解就是一个总开关 Δ t \Delta _t Δt若干个旋钮 B t , C t B_t,C_t Bt,Ct 非线性时变系统。
要解决的问题
从某种角度看序列建模的核心就是研究如何将长序列的上下文信息压缩到一个较小的状态中。比如语言模型实际上就是在一个有限的词汇集合中不断进行转换。Transformer 的注意力机制虽然有效但是效率低因为它要存储整个上下文导致推理和训练的时间较长。而 SSM 递归模型的状态是有限的单纯是时不变导致的其效率高但是有效性受限于状态的压缩能力。
而 Mamba 就是平衡了有效性与效率的点。本文关注了两种能力
一是抓重点的能力选择性复制任务从大量的信息中选择和记住关键的信息忽略不相关的部分。类似于在一个文章中找到关键词 二是上下文联想推理能力诱导头任务。在处理连续的信息时能保持逻辑一致性和上下文的连贯性。 具体的改进的方法由于 B 是时不变的强假设的 LTI 系统所以这导致了难以有效的选择上下文信息无论输入的 x 是啥B 一直不变B 网络与 x 无关。所以改进的方法就是让它时变 全局卷积虽然可以用不同的卷积核进行时序特征捕捉但是缺乏内容感知不知道输入的重点与逻辑。但是 transformer 没有这些限制既不是时不变系统也不是线性系统。所以改进的方法就是将其改成时变系统并且改成非线性系统。
增加选择性的方法
增加选择性的本质是将 B 和 C 由固定的变成了可变的根据输入 x t x_t xt 和它的压缩投影学习可变参数。A 为了简化其自身还是不变的。蓝色部分包括投影和连线上图所示就是所谓的选择机制。目的是根据输入内容选择性地记忆和处理信息从而提高对复杂序列数据的适应能力。
由于 Δ t \Delta _t Δt 使用了 τ \tau τ 激活函数所以是非线性的而 Δ t \Delta _t Δt 对 B t B_t Bt A A A C t C_t Ct 都有作用所以整个系统都是非线性时变的。所以整个系统的两个条件都放开了。 右侧公式中投影出来的三条划线其实就是 S B , S C , S Δ S_B,S_C,S_\Delta SB,SC,SΔ 三个选择函数共享一个投影模块主要是为了实现参数共享和计算效率。
而左侧就是原来的算法可以看到ABC 和 Δ \Delta Δ 都是固定的。
所以Mamba 的本质上是拿 LSTM 的门控思想换票到了 SSM 模型上放开了时不变的约束放成非线性系统。
参数
B批次大小。表示一次输入的数据量的大小L序列长度。表示每个序列中包含的时间步数N特征维度。表示每个时间步的特征数量D输入特征维度 其中步长大小 delta 像是一个观察窗口会影响信息处理的焦点。步长较小时模型倾向于忽略具体的单词而更多地依赖之前的上下文信息。 当 focus 较小时只能看到几个词。所以这个就可以理解为delta 实现了注意力的选择。
上图代码中的几个选择函数 S B ( x ) L i n e a r N ( x ) , S C ( x ) L i n e a r N ( x ) S_B(x)Linear_N(x),S_C(x)Linear_N(x) SB(x)LinearN(x),SC(x)LinearN(x) 都是线性投影这是很常见的神经网络操作用于将输入数据转换到一个新的空间或维度。Linear 为线性层。 S Δ ( x ) B r o a d c a s t D ( L i n e a r 1 ( x ) ) S_\Delta(x)Broadcast_D(Linear_1(x)) SΔ(x)BroadcastD(Linear1(x))广播是一个数据操作它使得维度较小的数组可以与维度较大的数据进行算术操作。 τ Δ s o f t p l u s \tau_\Deltasoftplus τΔsoftplus这是一个平滑的非线性函数通常用于网络中以添加非线性特征并帮助网络学习复杂的模式。 经过这样的设计希望达到的效果 左侧为 LTI 系统输出只能对规则的输入特征进行原样的复制而右边的选择性系统则可以自己找重点了。同时右侧也有联想的能力了。对于非线性时变数据具备了很强的特征捕捉能力。
核心原理液体力学与李指数映射
Transformer 描述的是粒子运动通过自注意力机制映射动态调整每个输入的权重类似粒子间通过牛顿力学相互作用力来动态调整自己的轨迹。训练的过程就是在用牛顿力学拟合粒子轨迹。每个输入粒子独立计算与其他输入的关系。
而 Mamba 描述的是液体运动通过李指数映射来建模时空结构。流体运动描述的是连续介质中的分子集体行为运动是整体的内部各点之间有强烈的相互关系和依赖。液体的每个部分都受到整体液体运动的影响通过内部压力粘性等因素相互作用。这更符合记忆的本质因为记忆系统具有连续性动态变化性和整体关联性这些特性与液体的性质非常相似。液体模型可以更好地描述记忆中的信息如何相互关联如何随着时间和新信息的出现进行动态调整和整合。
李指数映射是一种数学工具用于描述和分析一个向量场如何沿着另一个向量场发生变化比如液体力学电磁场广义相对论的时空结构等解决了动态系统中相互作用的描述。它是和微分任何中重要的概念来源于李群和李代数的理论。
如果把记忆的流淌比作一个水流管道系统可以看做一个李群进行各种复杂变换旋转推移等。固定矩阵 A 就是主管道全局演变路径类似于液体运动的全局关系让系统状态更新有固定的全局路径和规则因此可以表现出更高的灵活性和适应性。而 B t B_t Bt 和 C t C_t Ct 就是阀门或旋钮delta 这个离散化因子就像是液体力学中的时间步长决定液体运动的离散时间点。选择机制就像是根据具体情况选择和调整旋钮控制流体在管道中的流动路径。
训练 Mamba 的过程就是李指数映射假使流体力学动态系统找到主管道 A调整阀门和旋钮 B t , C t , Δ t B_t,C_t,\Delta t Bt,Ct,Δt 获得最优流体流动路径让模型可以在高维特征空间中进行高效导航和决策。
Transformer 的自注意力机制粒子运动强调个体的独立性和动态调整灵活性高能动态调整权重捕捉复杂的上下文依赖关系但计算复杂度高资源消耗大。Mamba 流体运动强调整体的连续性和全局关系借用独特的矩阵 A 的固定性提供了稳定性和确定性通过李指数映射实现高效状态更新和决策。