Page 219 - 《软件学报》2026年第1期
P. 219

216                                                        软件学报  2026  年第  37  卷第  1  期


                  3.3.1.2    近似与稀疏化
                    除了从   Softmax 层面降低注意力机制二次方的空间复杂度, 通过稀疏化的思想进行长上下文处理优化也是近
                                                                    (  2 )
                 年内核工作的关注点, 由于注意力机制的计算和空间复杂度都是                     O N   级别,  N  代表是输入标记的数量, 对越来越
                 长的输入标记处理代价很大. 对长上下文的优化集中在对产生瓶颈计算和内存的                           Q,K  阶段, 通过稀疏性的思想进
                 行优化.
                    Longformer [68] 通过固定本地模式, 仅计算与相邻标记有关的注意力分数, 以减少计算量并降低中间结果的缓
                 存需求. 为了应对这一挑战, 它引入了一个注意力模式, 通过该模式使自注意力矩阵变得稀疏, 指定了相互关注的
                 输入位置对. 与完全自注意力不同, 所提出的注意力模式与输入序列呈线性关系, 使其在处理较长序列时更为高
                 效. 这一方法使得     Longformer 能够在更大规模的序列上进行有效的注意力计算. Longformer 支持以下几种注意
                 力模式. 1) 滑动窗口模式: 考虑到本地上下文的重要性, 滑动窗口模式仅关注固定尺寸窗口的注意力, 类似于卷积
                                                                          1
                 神经网络. 在给定固定窗口大小           w  的情况下, 每个标记只关注其两侧的            w  个标记. 这种模式的计算复杂度是
                                                                          2
                            n 为输入序列长度, 呈线性关系. 2) 扩张        (dilated) 滑动窗口: 为了在不增加计算的情况下进一步提升
                 O(n×w), 其中
                 感受野, 类似于扩张卷积神经网络的思想, 可以对滑动窗口进行扩张. 其中窗口的元素之间具有大小为                                d  的间隔.
                 假设对于所有层,      d  和  w 是固定的, 感受野为   l×d ×w, 即使对于较小的     d  值, 也可以涵盖数万个标记. 3) 全局注意
                 力: 针对当前语言模型需要支持各种任务的特点, 对于遮罩语言模型, 只需要本地上下文来预测遮罩的标记, 而对
                 于分类任务则需要整体序列进行预测. 由于当前滑动窗口和扩张滑动窗口对于学习面向具体任务的表达不够灵
                 活, 因此引入了全局注意力. 如果一个标记使用全局注意力, 需要能够对序列中的所有标记进行运算. 例如, 在分类
                 任务中, 全局注意力被应用于         [CLS] 标记. 由于这类标记相比整体序列长度非常小, 所以复杂度仍为                   O(n). 同时,
                 在哪个部分应用全局标记取决于具体的任务.
                  3.3.1.3    分 桶
                                                                                                       )
                    另一种方案通过局部敏感性哈希             (LSH) 替换注意力机制的矩阵乘, 将复杂度由             O(n×n)  降低到  O nlogn .
                                                                                                  (
                 Reformer [69]  采用了  LSH  注意力机制进行优化. 从形状为   [batch_size,length,d model ] 的张量  Q,K 和  V  开始分析. 在假
                                                                                 T
                 设多头机制不变的前提下, 聚焦于注意力计算部分. 如前所述, 主要问题在于矩阵项                      QK , 其形状为  [batch_size,length,
                                                                                                 (    )
                                                                                                  QK  T
                                      Softmax(QKT). 在标准的                                               V,
                 length]. 实际上, 我们只关心                     Attention 计算中, 公式为   Attention(Q,K,V) = Softmax √
                                                                                                    d k
                                    d k ,V  的维度为  , 由于                                       q i , 我们只需关
                 其中输入   Q,K  的维度为              d v    Softmax 主要受到最大元素的影响, 对于每个查询
                 注与   q i  最接近的少数几个键. 例如, 如果    K  的长度为   64k, 对于每个  q i , 我们只需考虑其中最接近的      32  或  64  个键,
                 从而显著提高计算效率. 然而, 如何在键中快速找到最近邻, 在高维空间中, 这一问题可以通过                           LSH  来解决. LSH
                 的核心思想是, 通过哈希函数将每个向量             x 映射到一个哈希值      h(x), 使得相近的向量以高概率获得相同哈希值, 而
                 远离的向量则以低概率获得相同哈希值. 在本方法中, 作者要求相邻向量以高概率映射到相同的哈希桶, 并保持哈
                                                                                          [   ]
                                                                                             b
                                                                                           d k ,   的随机矩阵
                 希桶大小大致均衡. 该方法通过采用随机投影实现: 为了获得                  b 个哈希值, 首先固定一个大小为
                                                                                             2
                 R, 然后定义   h(x) = argmax([ xR;−xR]) 其中,  [u;v]  表示两个向量的连接. 这种方法是一种已有的局部敏感哈希方
                 案, 既易于实现, 又适用于向量批处理任务.
                  3.3.1.4    低秩分解与降维
                    矩阵分解和降维是传统用于减少矩阵乘法计算和内存复杂性的经典方法. 由于注意力机制的核心计算也涉及
                 矩阵乘法, 因此可以通过矩阵分解来降低内存和计算成本. Linformer                [70] 通过对权重矩阵进行变换, 降低了        K  和  V
                 矩阵的维度, 从而显著减少了中间结果            QK = P 矩阵的维度和内存占用. 它能够在与序列长度相关的线性时间和内
                                             V
                 存复杂性下, 计算上下文映射         P·VW . 该线性自注意机制的主要思想是在计算              K  和  V  矩阵时, 引入两个线性投影
                                             i
                               E i 、F i ∈ R n×k     (n×d) 维度的键和值层      KW  和  VW V            (k ×d) 维度的
                                                                          K
                 矩阵   E i 、F i , 其中      . 首先, 将原始                                进行投影, 得到
                                                                         i      i
                 投影键和值层. 然后, 使用缩放的点积注意力计算一个                (n×k) 维度的上下文映射矩阵        ¯ P. 其计算公式如下所示     [70] ,
                                 V
                 其中,   ¯ P ∈ R n×k , F i VW ∈ R k×d .
                                 i
   214   215   216   217   218   219   220   221   222   223   224