Linear Transformers Are Secretly Fast Weight Programmers

作者/机构: Imanol Schlag, Kazuki Irie, Jurgen Schmidhuber

A1 主要贡献

本文的核心在于揭示了线性化自注意力机制与20世纪90年代初的快速权重编程器(Fast Weight Programmers, FWP)在形式上的等价性。基于这一视角,论文展开了对线性Transformer的深入分析并提出了改进方法。

核心问题与研究目标:
标准Transformer的自注意力机制因其与序列长度成二次方的计算和内存复杂度,难以处理长序列。近期提出的“线性Transformer”通过线性化softmax将复杂度降至线性,但其内在机制和局限性尚待探索。本文旨在通过FWP的视角来理解、分析并改进这些线性Transformer模型。

创新点与主要贡献:
1. 理论联系: 明确了线性化Transformer的核心机制等同于一种通过键(key)和值(value)向量的外积来更新“快权重”内存的FWP。这种联系为分析模型提供了新的理论框架。
2. 揭示容量限制: 从FWP作为联想记忆模型的角度,推断出线性Transformer存在内存容量限制。当序列长度超过键向量的有效维度(ddot)时,模型会因键向量之间无法保持正交性而产生“串扰”,导致检索错误,即进入“过载状态”(overcapacity regime)。
3. 改进的内存更新机制: 针对标准线性Transformer纯加性的更新规则在过载状态下无法有效编辑或删除旧信息的缺陷,本文受经典delta学习规则的启发,提出了一种新的可微编程指令。该指令允许模型学习动态地纠正键值关联,通过一个自生成的“学习率”(插值权重β)来控制新旧信息的融合,从而实现对内存内容的有效编辑。
4. 新的线性化注意力函数: 为平衡现有线性化方法在简单性(如Katharopoulos等人的方法)和复杂性(如FAVOR+)之间的取舍,本文提出了一种新的确定性无参数投影(Deterministic Parameter-Free Projection, DPFP)方法。DPFP既能像FAVOR+一样将键投影到更高维度以增加内存容量,又避免了随机采样带来的方差和复杂性。
5. 实验验证: 通过在合成的联想检索任务、WMT14英-德机器翻译和Wikitext-103语言建模等标准任务上的大量实验,验证了所提方法的有效性。实验表明:
* 合成任务直观地展示了线性注意力的容量瓶颈和新delta更新规则在需要更新记忆时的优越性。
* 在机器翻译任务上,DPFP在性能和简洁性之间取得了良好的平衡。
* 在语言建模任务上,采用delta更新规则的模型(Delta Network)显著优于基线模型,并且在处理长序列时表现出更好的稳定性和内存效率。

A2 背景知识/关键Observation/设计原则

快权重编程器(FWPs)背景回顾

快权重(Fast Weights)的基本概念。在标准神经网络中,权重在训练后保持固定,而激活值则根据测试时输入而变化。快权重的核心思想是使权重也变得可变且依赖于输入。这一概念曾被称为突触调制(synaptic modulation)【索引[79],The correlation theory of brain function,1981】,或动态连接(dynamic connections)【索引[12],Dynamic connections in neural networks,1982】。Von der Malsburg将有效权重定义为传统的、上下文无关的慢权重与快速变化的、上下文相关的快权重之间的(乘性)叠加。Hinton & Plaut【索引[19],Using fast weights to deblur old memories,1987,Proc. Conf. of Cognitive Science Society】研究了一个包含两组权重和两种不同学习率的网络,在模型重训练场景下进行(加性)叠加。然而,在1991年之前,没有任何网络能够通过梯度下降学习来快速计算另一个网络或其自身的快权重存储的变化。

90年代的快权重编程器(FWP)。上下文相关的FWP是在90年代初的双网络系统中被引入的【索引[69],Learning to control fast-weight memories: An alternative to recurrent nets,1991】,【索引[70],Learning to control fast-weight memories: An alternative to dynamic recurrent networks,1992,Neural Computation】,【索引[71],Reducing the ratio between learning complexity and number of time varying variables in fully recurrent nets,1993,ICANN】,【索引[72],AI Blog,2021】。一个传统的慢网络(slow net)使用慢权重,持续地改变或重编程一个快网络(fast net)的快权重,使得快权重实际上依赖于给定输入流的时空上下文。简而言之,慢网络学习如何编程其快网络。在慢网络可以用来编程快权重的各种基本可微指令中,一种特别有吸引力的方法是利用外积【索引[69],Learning to control fast-weight memories: An alternative to recurrent nets,1991】,【索引[70],Learning to control fast-weight memories: An alternative to dynamic recurrent networks,1992,Neural Computation】。对于一个序列输入 $\{x^{(i)}\}_{i=1}^L$, $x^{(i)} \in R^{d_{in}}$,模型输出序列 $\{y^{(i)}\}_{i=1}^L$, $y^{(i)} \in R^{d_{out}}$,并将快权重 $W^{(i)}$ 作为短期记忆。这是一个键-值关联记忆模型,其中写入操作基于求和(公式2),而检索操作是矩阵-向量乘法(公式3)。Schmidhuber (1993)【索引[71],Reducing the ratio between learning complexity and number of time varying variables in fully recurrent nets,1993,ICANN】描述了一个循环版本,并讨论了“内部注意力焦点”(这种注意力术语现在在Transformer的上下文中被广泛使用)。使用外积产生了一个类似于张量积表示的关联模型【索引[76],Tensor product variable binding and the representation of symbolic structures in connectionist systems,1990,Artificial intelligence】。

基于外积的联想记忆的历史。事实上,基于外积的联想记忆可以在自Hebb的非正式规则【索引[18],The organization of behavior: a neuropsycholocigal theory,1949】及其更具体的正式变体(如【索引[77],Die lernmatrix,1961,Kybernetik】;【索引[78],Learning matrices and their applications,1963,IEEE Transactions on Electronic Computers】;【索引[30],Correlation matrix memories,1972,IEEE Transactions on Computers】;【索引[46],On associative memory,1980,Biological cybernetics】)以来的众多著作中找到,包括Hopfield网络【索引[21],Neural networks and physical systems with emergent collective computational abilities,1982,Proc. of the national academy of sciences】;【索引[34],The existence of persistent states in the brain,1974,Mathematical biosciences】和双向联想网络【索引[31],Bidirectional associative memories,1988,IEEE Transactions on Systems, Man, and Cybernetics】。然而,这些作者描述的是将给定的模式相互关联的预设规则。他们的系统没有学习如何使用这些规则来关联自创的模式,而自1991年以来的FWP可以做到这一点。

FWP的近期发展。FWP的概念最近被重新审视【索引[2],Using fast weights to attend to the recent past,2016,NIPS】,【索引[65],Gated fast weights for onthe-fly neural program generation,2017,NIPS Metalearning Workshop】,也以不同的名称出现,例如超网络(hypernetworks)【索引[16],Hypernetworks,2017,ICLR】;【索引[51],FiLM: Visual reasoning with a general conditioning layer,2018,AAAI】;【索引[13],On the modularity of hypernetworks,2020,NeurIPS】、动态可塑性(dynamic plasticity)【索引[36],Differentiable plasticity: training plastic neural networks with backpropagation,2018,ICML】;【索引[37],Backpropamine: training self-modifying neural networks with differentiable neuromodulated plasticity,2019,ICLR】、动态卷积(dynamic convolution)【索引[29],A dynamic convolutional layer for short rangeweather prediction,2015,CVPR】;【索引[43],Image question answering using convolutional neural network with dynamic parameter prediction,2016,CVPR】;【索引[25],Dynamic filter networks,2016,NIPS】或lambda网络(lambda networks)【索引[5],Lambdanetworks: Modeling long-range interactions without attention,2021,ICLR】。这些技术被用于包括元学习在内的多种应用【索引[40],Meta networks,2017,ICML】;【索引[38],Metalearning with hebbian fast weights,2018】;【索引[41],Metalearned neural memory,2019,NeurIPS】;【索引[28],Meta learning backpropagation and improving it,2020,NeurIPS Workshop on MetaLearning】。FWP最近还通过促进替换过时信息和更新关联的显式机制,改进了记忆模型【索引[66],Learning to reason with third order tensor products,2018,NIPS】;【索引[67],Learning associative inference using fast weight memory,2021,ICLR】。

A3 方法细节

3. 与Transformer的关系

Ba等人(2016)【索引[2],Using fast weights to attend to the recent past,2016,NIPS】已经指出了基于外积的FWP变体【索引[71],Reducing the ratio between learning complexity and number of time varying variables in fully recurrent nets,1993,ICANN】与注意力机制【索引[4],Neural machine translation by jointly learning to align and translate,2015,ICLR】之间的关系。Katharopoulos等人(2020)【索引[26],Transformers are rnns: Fast autoregressive transformers with linear attention,2020,ICML】分析了线性化的Transformer。本节回顾这些推导,重点强调Transformer与前述FWP之间的联系。

3.1 无Softmax的自注意力是一个快权重编程器

自注意力层的定义。在自回归Transformer中【索引[76],Attention is all you need,2017,NIPS】,一个自注意力层将输入序列 $\{x^{(i)}\}_{i=1}^L, x^{(i)} \in R^{d \times 1}$ 映射到输出序列 $\{y^{(i)}\}_{i=1}^L, y^{(i)} \in R^{d_{value} \times 1}$。其计算过程如下:





其中 [A, a] 表示沿时间维度将向量 a 拼接到矩阵 A 上,softmax沿时间维度应用,而 $W_k, W_v, W_q$ 是可训练的权重矩阵。为不失一般性,我们省略了softmax内部的 $1/\sqrt{d_{key}}$ 缩放因子。

移除Softmax后的形式。如果我们移除公式7中的softmax,则得到:


将由键向量和值向量生成的相应权重矩阵表示为 $W^{(i)}$:

我们可以重写公式4-7,使其直接与公式1-3关联,其中激活函数 $\sigma$ 是恒等函数,并且没有查询投影 $W_q$:


3.2 线性化自注意力

线性化方法。先前的工作引入了线性化softmax的技术【索引[75],Transformer dissection: An unified understanding for transformer’s attention via the lens of kernel,2019,EMNLP】,这被证明可以提高长序列自注意力的计算效率【索引[26],Transformers are rnns: Fast autoregressive transformers with linear attention,2020,ICML】;【索引[7],Rethinking attention with performers,2021,ICLR】;【索引[50],Random feature attention,2021,ICLR】。

用核函数重写Softmax。通过显式写出softmax,公式7可以表示为:


其中 $\kappa(k, q) = \exp(k \cdot q) \in R_{>0}$ 是softmax核函数,而 $k \cdot q = k^T q$ 是向量点积。

替换核函数。核心思想是用另一个核函数 $\kappa'(k, q) = \phi(k)^T\phi(q)$ 替换softmax核 $\kappa$,其中 $\phi$ 是一个从 $R^{d_{key}} \to R^{d_{dot}}$ 的函数。我们在5.1节讨论 $\phi$ 的必要属性。用 $\kappa'$ 替换 $\kappa$ 后,我们得到:


与FWP的联系。使用外积表示法,分子部分与无softmax的情况(3.1节)类似:


通过引入快权重矩阵 $W^{(i)}$ 和一个用于分母的附加向量 $z^{(i)}$:


线性Transformer的前向计算可以写成如下形式【索引[26],Transformers are rnns: Fast autoregressive transformers with linear attention,2020,ICML】:




这正是一个带有归一化的快权重编程器(第2节)。因此,线性Transformer变体的核心是基于外积的快权重编程器。

4. 作为FWP分析和改进线性Transformer

将线性Transformer变体视为快权重编程器,为我们提供了两个洞见:它们作为联想记忆的容量限制(4.1节),以及它们不善于编辑先前存储的关联(4.2节)。

4.1 容量限制

直觉分析。如公式17所示,无休止地向一个有限大小的内存中添加新的关联,必然会达到一个极限。在线性注意力中,信息存储在一个矩阵中,并使用矩阵乘法进行检索(见公式19)。因此,为了防止关联在检索时相互干扰,各个键需要是正交的。否则,点积将关注多个键,并返回值的线性组合。在嵌入到 $d_{dot}$ 空间中的键,最多只能有 $d_{dot}$ 个正交向量。也就是说,存储超过 $d_{dot}$ 个关联将导致检索错误。在线性Transformer中,当序列长度长于 $d_{dot}$ 时,模型可能处于这种过载状态。

张量积表示理论。早期连接主义研究探讨了使用分布式表示来存储符号结构。其中一项极具影响力的工作是基于张量积的变量绑定机制【索引[76],Tensor product variable binding and the representation of symbolic structures in connectionist systems,1990,Artificial intelligence】。一个结构化符号系统的张量积表示(TPR)由一组变量和值构成,通过所谓“角色”(role)向量和“填充”(filler)向量的外积构建。这些术语在我们的语境中直接对应于键和值。公式17中的快权重记忆是这类表示的最基本形式(二阶张量)。因此,Smolensky著作中讨论的许多结果都适用于我们的模型。特别是,Smolensky (1990)的定理3.3和3.1更正式地讨论了上一段直观描述的串扰(crosstalk)和检索错误。

与经典理论的差异。然而,我们也注意到一个重要区别:Smolensky (1990)的经典TPR是用关于符号结构的先验知识构建的。相比之下,我们自1991年以来的FWP,包括最近的FWP【索引[66],Learning to reason with third order tensor products,2018,NIPS】,会学习所有参与构建这种表示的向量。

4.2 改进FWP的编程指令

动机。4.1节指出,如果序列长度L超过键的维度 $d_{dot}$,线性Transformer可能会进入过载状态。一旦进入过载状态,理想的记忆模型应能动态地与内存内容交互,并选择性地决定记住哪些关联或忘记哪些关联。这与标准Transformer形成鲜明对比,后者通过拼接存储不可变的键值对,从而增加存储大小。尽管这类模型在实践中效果很好,我们认为模型更新先前获得知识的能力对许多问题至关重要。因此,从与内存动态交互的角度来看,公式17的纯加法更新规则可能是次优的。这促使我们改进FWP的基本可微编程指令(即更新规则)。

Delta规则式更新。受Schlag等人(2021)【索引[67],Learning associative inference using fast weight memory,2021,ICLR】近期工作的启发,我们提出了一种基本指令,该指令实质上以端到端可微的方式实现了著名的纠错delta规则【索引[80],Adaptive switching circuits,1960,IRE WESCON Convention Record】。这样,FWP可以通过自创的、动态变化的学习率来学习明智地使用它。给定一个新的输入键值对 $(k^{(i)}, v^{(i)})$,FWP首先访问内存的当前状态 $W^{(i-1)}$,并检索当前与键 $k^{(i)}$ 配对的值 $\bar{v}^{(i)}$。然后,模型使用一个同样由模型生成的插值权重 $0 \le \beta^{(i)} \le 1$ 来存储检索到的值 $\bar{v}^{(i)}$ 和输入值 $v^{(i)}$ 的凸组合 $v_{new}^{(i)}$。模型因此将输入序列 $\{x^{(i)}\}_{i=1}^L, x^{(i)} \in R^{d \times 1}$ 顺序转换为输出序列 $\{y^{(i)}\}_{i=1}^L, y^{(i)} \in R^{d_{value} \times 1}$:





其中 $W_{\beta} \in R^{1 \times d}$,$\sigma$ 是sigmoid函数。插值权重 $\beta^{(i)}$ 是“写入强度”,因为它定义了新值替换旧值的程度。我们注意到,虽然 $\beta^{(i)}$ 仅依赖于 $x^{(i)}$,但在多层模型中,除第一层外,$x^{(i)}$ 拥有完整的上下文信息。我们设置 $W^{(0)}=0$ 和 $z^{(0)}=0$。然后,快权重更新规则和最终输出 $y^{(i)}$ 定义如下(详细推导见附录A.1):



如公式24所示,我们的编程指令或更新规则实际上是一个带有动态学习率 $\beta^{(i)}$ 的delta规则。模型因此学会了纠正当前的键值关联。在附录B中,我们正式展示了该方法相对于Peng等人(2021)【索引[50],Random feature attention,2021,ICLR】同期提出的门控更新规则的优势。

归一化方法
* 注意力归一化:在上述方程中,我们检索的值没有进行归一化。一种直接的归一化方法可以遵循3.2节的推导,即引入一个累加器:


并相应地替换公式20和25:


其中我们定义 $\bar{v}^{(1)}=0$。这种方法被称为注意力归一化。然而,这种方法有缺点。首先,公式26中正值的累积总是随步数增长,可能导致不稳定。其次,对于我们的更新规则,这种归一化不足以平衡公式23中写入和移除操作的权重(推导见附录A.2)。
* 和归一化(Sum Normalization):这里我们提出一种基于简单归一化的更好方法。我们将有效的键向量 $\phi(k^{(i)})$ 和查询向量 $\phi(q^{(i)})$ 除以其各分量之和,例如,对于查询:

然后在应用公式20-25。这种归一化的一个普遍结果可以直观地理解:任何矩阵-向量操作(如公式25)的输出都是矩阵列的加权和,权重是向量的分量;因此,如果向量分量之和为1,该操作可以看作是对矩阵列的注意力。我们在附录A.2中为我们的FWP提供了进一步的解释和精确的含义。我们将此方法称为和归一化

5. 线性注意力函数

Softmax线性化(3.2节)的核心组件是 $\phi$ 函数,它将键和查询向量从 $R^{d_{key}}$ 映射到执行点积的空间 $R^{d_{dot}}$。我们首先列出这种函数的期望属性,并从快权重记忆的角度回顾现有的 $\phi$ 函数。最后,我们提出我们自己的 $\phi$ 函数。

5.1 属性

期望属性。为了使公式13定义介于0和1之间的合规注意力权重,$\phi$ 的值域应为正。$\phi$ 的另一个属性源于4.1节对内存容量的讨论。其值域的维度 $d_{dot}$ 定义了模型的容量。因此,通过包含一个将输入维度 $d_{key}$ 投影到更大维度 $d_{dot}$ 的变换,$\phi$ 函数有可能增加容量的上限。

5.2 Katharopoulos的线性注意力

方法。Katharopoulos等人(2020)【索引[26],Transformers are rnns: Fast autoregressive transformers with linear attention,2020,ICML】提出使用简单的逐元素ELU + 1函数【索引[8],Fast and accurate deep network learning by exponential linear units (ELUs),2016,ICLR】:


选择ELU而不是ReLU的动机是在负数部分有非零梯度。重要的是,作为一个简单的逐元素函数,这个 $\phi$ 函数保留了输入键向量的维度($d_{key} = d_{dot}$),没有如4.1节所讨论的修改内存容量。

5.3 FAVOR+

方法。与Katharopoulos等人(2020)的 $\phi$ 函数仅满足正定性(和良好梯度)属性不同,Choromanski等人(2021)【索引[7],Rethinking attention with performers,2021,ICLR】提出了一种数学上严谨的方法,用随机特征来近似softmax。他们提出了以下 $\phi$ 函数:



其中两个向量a和b的拼接是沿特征维度进行的,而 $R \in R^{m \times d_{key}}$ 是一个具有m个随机特征的矩阵,其中每个行向量 $r \in R^{1 \times d_{key}}$ 从 $N(0, I_d)$ 中抽取。Peng等人(2021)【索引[50],Random feature attention,2021,ICLR】也提出了类似的方法。

特性与缺点。使用FAVOR+,值域的维度 $d_{dot}$ 是 $2m$,如果 $2m > d_{key}$,则增加了内存的理论容量。同时,模型的容量仍然是有限的,只有当m趋于无穷大时才等于softmax内存的无限容量,这在实践中永远无法实现。训练期间,我们为每个小批量重新抽取这m个随机向量。评估期间,我们抽取一组m个随机向量一次,并保持固定。m是FAVOR+唯一的超参数,影响softmax近似的质量。Choromanski等人(2021)建议选择m在 $d_{key} \log(d_{key})$ 的数量级。这个采样过程是FAVOR+的主要缺点,因为它给模型的输出引入了方差。

5.4 确定性无参数投影 (DPFP)

动机。前两小节突出了现有 $\phi$ 函数的次优性。采样给FAVOR+(5.3节)带来了额外的复杂性,而线性Transformer(5.2节)缺乏提升点积维度的能力。这里我们提出一种替代方法,称为确定性无参数投影(DPFP)。它像线性Transformer一样是确定性且易于计算的,同时增加了点积维度,而无需FAVOR+的随机特征。

方法。我们从一个低维示例开始,以培养直观理解,然后再转向一般公式。考虑 $R^2$ 中的4个键 $k^{(i)}, i \in \{1, 2, 3, 4\}$ 和一个函数 $\phi: R^2 \to R_{\ge 0}^4$,其中 $\phi(x)$ 的第 $l$ 个元素由偏函数 $\phi_l: R^2 \to R_{\ge 0}$ 生成。我们设计 $\phi$ 以促进在投影空间中的正交性,即对于 $i \ne j$, $\phi(k^{(i)}) \cdot \phi(k^{(j)}) = 0$。为此,我们构建 $\phi$ 使得如果 $\phi_l(x) > 0$,那么对于所有 $n \ne l$,$\phi_n(x) = 0$。这样的约束可以通过限制偏函数的定义域为非重叠来强制执行。使用逐元素修正函数 $r(a) = \max(0, a)$,偏函数定义为:





图1. 从2D空间(xy平面)到4D空间(四个彩色曲面)的DPFP可视化。每个曲面是一个偏函数,代表4D向量的一个元素。
图1. 从2D空间(xy平面)到4D空间(四个彩色曲面)的DPFP可视化。每个曲面是一个偏函数,代表4D向量的一个元素。

推广。我们通过构建额外的双因子特征将此方法推广到更高维的输入。给定一个输入向量 $k \in R^{d_{key}}$ 和 $i \in [1, 2d_{key}]$,偏函数为:


其中 $\nu \in \{1, 2, ..., d_{key}^2-1\}$ 是一个控制容量的超参数。因此,$\phi(k)$ 的值域维度为 $d_{dot} = 2d_{key}\nu$。公式37是高度可并行的,因为每个偏函数可以独立计算。如我们在附录C中所示,这可以用几行代码实现。

与FAVOR+的联系。最后我们注意到,Choromanski等人(2021)凭经验表明,将公式32中的exp替换为ReLU通常可以提高模型性能。虽然这一结果尚未得到理论上的证明,但它支持了我们DPFP的设计,该设计旨在实现稀疏性和正交性。

A4 实验环境

  • 数据集:

    • 合成检索任务: 由随机抽样的键值对序列组成。任务是在序列末尾给定一个查询键,模型需检索出与之关联的正确值。用于测试模型的内存容量和更新规则的有效性。
    • WMT14 英-德翻译: 标准的机器翻译数据集,用于评估不同线性化函数在真实大规模任务上的性能。
    • Wikitext-103: 一个大规模的词级语言建模数据集,包含来自维基百科的长篇文章,适合评估模型处理长程依赖的能力。词汇量约26.8万,训练集包含约1.03亿个单词。
  • 模型架构:

    • 基线模型为标准Transformer (Vaswani et al., 2017)。
    • 线性化模型包括:Linear Transformer (Katharopoulos et al., 2020),Performer (FAVOR+; Choromanski et al., 2021),以及本文提出的DPFP和Delta Network(使用delta更新规则的线性Transformer)。
    • 关键参数:
      • 合成任务: $d_{key}$ 固定为64,不同的$\phi$函数产生不同的$d_{dot}$。
      • 翻译任务: 采用"big" Transformer配置(6层编码器/解码器,1024隐层,16个注意力头,4096维前馈层)。
      • 语言模型:
        • 小配置: 模型维度$D=128$,上下文长度$L=256$,16层,8个头,$d_{dot}=16$。
        • 中配置: $D=256$, $L=384$,16层,8个头,$d_{dot}=32$。
  • 硬件配置:

    • GPU: 3块NVIDIA V100 GPU用于翻译实验,2块V100 GPU用于语言建模实验。
  • 软件配置:

    • 代码实现基于PyTorch。
    • 翻译实验使用了FAIRSEQ工具包。
    • 语言模型代码基于Transformer-XL的公开代码修改。
    • 为实现高效的线性注意力和delta更新规则,修改并使用了Katharopoulos等人发布的自定义CUDA核。

A4 实验结果

6.1 合成实验

  • 实验1: 容量测试

    • 内容: 通过改变序列中唯一键值对的数量(S),测试不同$\phi$函数下线性注意力模型的容量极限。
    • 结果: 实验结果支持了理论分析。所有线性注意力模型的性能在关联数S接近其有效维度$d_{dot}$时开始下降。例如,Linear Attention ($d_{dot}=64$)在S达到60时开始出错。DPFP通过超参数$\nu$可以提升容量上限。FAVOR+在所有实验中都未能达到零损失。Softmax注意力表现最好,但在键超过500个时也难以完全收敛。
    • 结论: 线性注意力的容量确实受限于其点积空间维度$d_{dot}$。
      图2. softmax记忆和各种线性注意力机制在关联检索问题上的最终评估损失,唯一关联总数从20到600不等。每个单独的符号都是一个训练至收敛的模型。
      图2. softmax记忆和各种线性注意力机制在关联检索问题上的最终评估损失,唯一关联总数从20到600不等。每个单独的符号都是一个训练至收敛的模型。
  • 实验2: 更新规则比较

    • 内容: 在一个允许键被多次重新赋值的场景下,比较了本文提出的delta更新规则与基线求和规则及其他变体的性能。
    • 结果: 基线的求和规则无法处理值的更新,性能很差。本文提出的带有归一化的delta更新规则在学习曲线上显著优于所有其他变体,能够成功学习更新内存中的键值关联。
    • 结论: Delta更新规则对于需要动态修改内存中信息的任务至关重要。
      图3. 不同更新规则的学习曲线。序列长度为40,20个唯一的键/值通过有放回抽样产生。
      图3. 不同更新规则的学习曲线。序列长度为40,20个唯一的键/值通过有放回抽样产生。

6.2 机器翻译实验

  • 内容: 在WMT14英-德翻译任务上,比较了Linear Transformer, Performer (FAVOR+), DPFP与标准Transformer的性能。
  • 结果: Performer在随机特征数m足够大时(如m=256, $d_{dot}$=512),其BLEU得分可以媲美标准Transformer。本文提出的DPFP模型在点积维度$d_{dot}$相对较小的情况下,性能优于Linear Transformer和Performer,提供了一个在简洁性和性能之间的良好权衡。
  • 结论: DPFP是一种有效且高效的线性化注意力方法。
    表1. WMT14 En-De翻译任务中各种Transformer模型的BLEU得分。未进行模型平均或模型特定调优。Standard表示基础Transformer。
    表1. WMT14 En-De翻译任务中各种Transformer模型的BLEU得分。未进行模型平均或模型特定调优。Standard表示基础Transformer。

6.3 语言建模实验

  • 内容: 在Wikitext-103数据集上评估了delta更新规则在过载状态下的效果,并进行了消融研究和长序列建模实验。
  • 结果:
    • 更新规则效果: 在小规模和中等规模配置下,使用delta更新规则的Delta Network模型相比于使用求和规则的Linear Transformer和Performer,在验证集和测试集上都取得了显著的困惑度(Perplexity)降低。
    • 消融研究: 实验表明,对于Delta Network,绝对位置编码并非必需。同时,仅使用本文提出的“和归一化”比额外增加“注意力归一化”效果更好,后者甚至可能导致模型发散。
    • 长序列建模: 在训练和评估时不截断上下文,Delta Network的性能略有提升,而基线Linear Transformer模型则完全崩溃。与专为长序列设计的Transformer-XL相比,Delta Network在占用内存状态(state size)小得多的情况下,取得了非常有竞争力的性能。
  • 结论: Delta更新规则能有效提升模型性能,尤其在需要处理长程依赖和动态更新知识的语言建模任务中。Delta Network展现了作为一种高效处理无限长序列模型的潜力。
    表2. WikiText-103语言模型困惑度结果,展示了我们更新规则的效果。所有模型的可训练参数数量几乎相同,除了我们的更新规则中门控引入的微小差异(小和中配置分别为16K和33K参数)。在小配置中,D=128,L=256(40M参数);在中配置中,D=256,L=384(90M参数)。对于Performers,m分别为8和16。
    表2. WikiText-103语言模型困惑度结果,展示了我们更新规则的效果。所有模型的可训练参数数量几乎相同,除了我们的更新规则中门控引入的微小差异(小和中配置分别为16K和33K参数)。在小配置中,D=128,L=256(40M参数);在中配置中,D=256,L=384(90M参数)。对于Performers,m分别为8和16。

    表3. 使用我们更新规则的线性Transformer(中等配置)在WikiText-103上的语言模型困惑度。
    表3. 使用我们更新规则的线性Transformer(中等配置)在WikiText-103上的语言模型困惑度。

    表4. 在训练和评估时不截断上下文的WikiText-103语言模型困惑度,与表2中上下文窗口受限的情况相对。使用了中等配置。Delta Net未使用位置编码或注意力归一化。可训练参数数量(Prms.)以百万为单位。我们与不同记忆段长度的Transformer-XL进行了比较。这导致了不同的状态大小,与评估期间的内存需求成正比,并突出了Delta Network的内存效率。状态大小以百万为单位。
    表4. 在训练和评估时不截断上下文的WikiText-103语言模型困惑度,与表2中上下文窗口受限的情况相对。使用了中等配置。Delta Net未使用位置编码或注意力归一化。可训练参数数量(Prms.)以百万为单位。我们与不同记忆段长度的Transformer-XL进行了比较。这导致了不同的状态大小,与评估期间的内存需求成正比,并突出了Delta Network的内存效率。状态大小以百万为单位。

A5 结论

本文强调了线性化自注意力与快速权重编程器(FWPs, 1991)之间的深刻联系,后者通过自创的键和值模式的外积序列来编程其快权重记忆。FWP的视角使我们能够讨论线性注意力的联想记忆容量限制,并引入了一种替代的可微基本编程指令。这种指令类似于著名的delta规则,但FWP可以通过梯度下降学习如何明智地使用该规则来动态编辑内存。此外,我们还提出并讨论了一种新的线性化注意力的方法(DPFP)。在合成和真实语言任务上的实验证明了我们提议的有效性。FWP的视角为研究具有有限内存的Transformer的更优编程指令和设计开辟了新的途径。

A6 附录

A. 更新规则推导

A.1. 更新规则

中间步骤推导。本节提供从公式23到公式24的中间步骤。
公式23为:


将后两项分组,公式23变为:

根据公式22中 $v_{new}^{(i)}$ 的定义:

我们得到:

将此表达式代入公式38,即可得到公式24。

A.2. 键和归一化(Key Sum Normalisation)

从列向量视角推导。任何矩阵 $W \in R^{d_{value} \times d_{key}}$ 都可以写成其列向量 $\{w^{(1)}, ..., w^{(d_{key})}\}$ 与笛卡尔基向量 $\{e^{(1)}, ..., e^{(d_{key})}\}$ 的组合:


从联想记忆的角度,这可以解释为一组具有固定键 $e^{(i)}$ 和关联值 $w^{(i)}$ 的关联。因此,对W的任何更新都可以看作是对每个 $w^{(i)}$ 的更新。

推导过程。我们考虑用我们的更新规则(此处省略 $\beta$)将新关联 $(k, v)$ 添加到权重 $W$ 中以得到 $W'$。


将 $k$ 在笛卡尔基下展开为 $k = \sum_{i=1}^{d_{key}} k_i e^{(i)}$,并代入,经过一系列代数运算,我们得到列向量的更新规则:

将 $\bar{v} = Wk = \sum_{j=1}^{d_{key}} k_j w^{(j)}$ 代入后,得到:

在公式51中,正项 $v$ 的权重 $k_i$ 通常不等于负项的总权重 $\sum_{j=1}^{d_{key}} k_i k_j$。我们可以通过引入归一化来强制这些权重平衡:$\sum_{j=1}^{d_{key}} k_i k_j = k_i$。如果 $k_i$ 非零,我们得到:

这对应于我们在4.2节中引入的和归一化。

B. 与Peng等人(2021)的形式化比较

Peng等人的门控更新规则。与我们的工作同时,Peng等人(2021)【索引[50],Random feature attention,2021,ICLR】提出了以下受循环神经网络门控机制启发的门控更新规则:


相比之下,我们的更新规则(公式24)源于联想记忆的视角,与著名的纠错delta规则相关,并提供了一个关键特性。

关键区别。为了说明两者的相似性和关键差异,我们考虑一个由两个正交关联 $(k_1, v_1)$ 和 $(k_2, v_2)$ 构成的快权重矩阵 $W$。现在我们用一个新的关联 $(k_3, v_3)$ 来更新 $W$,其中 $k_3 = k_2$。
* 使用Peng等人的规则:更新后的矩阵 $W'$ 会将与 $k_2$ 关联的值更新为新旧值的凸组合 $(1-\beta)v_2 + \beta v_3$。然而,它也会不必要地修改甚至擦除与 $k_1$ 关联的值,使其变为 $(1-\beta)v_1$。


* 使用我们的规则:我们的规则也会将与 $k_2$ 关联的值更新为 $(1-\beta)v_2 + \beta v_3$。但至关重要的是,由于我们的更新项是加在差值 $(v_3 - \bar{v})$ 上,其中 $\bar{v} = Wk_3 = v_2$,因此对正交键 $k_1$ 的检索结果 $W'k_1$ 保持不变,仍然是 $v_1$。

因此,我们的更新规则在更新关联的同时保持其他“不相关”关联完好无损,这正是它与Peng等人规则的关键区别。

C. DPFP-ν 实现

PyTorch实现。列表1是一个简单的DPFP-ν(公式37)的PyTorch实现,它包括两次拼接和一次逐元素乘法。

import torch
from torch import cat
from torch.nn.functional import relu as r

def dpfp(x, nu=1):
    x = cat([r(x), r(-x)], dim=-1)
    x_rolled = cat([x.roll(shifts=j, dims=-1)
                    for j in range(1,nu+1)], dim=-1)
    x_repeat = cat([x] * nu, dim=-1)
    return x_repeat * x_rolled

列表1. DPFP-ν (Eq. 37) 的简单PyTorch实现。
列表1. DPFP-ν (Eq. 37) 的简单PyTorch实现。

D. 额外的实验结果

D.1. 合成任务设置1

学习曲线。图4显示了合成设置1(无放回抽样)中,有600个唯一键和值时的学习曲线。

图4. 设置1中600个唯一键/值(无放回抽样)的训练曲线,如6.1.1节所述。
图4. 设置1中600个唯一键/值(无放回抽样)的训练曲线,如6.1.1节所述。

D.2. 合成任务设置2

容量图。图5是设置2(有放回抽样)的容量图,显示了随着唯一键和查询数量的增加,最终评估损失的变化情况。在所有问题设置中,我们的更新规则都优于其他所有方法。

图5. 合成设置2(有放回抽样)问题上的最终评估损失,唯一关联总数从20到200不等。每个单独的符号都是一个按6.1.2节所述训练至收敛的模型。在所有问题中,无论序列长度和唯一键数量如何,我们的更新规则都优于所有其他方法。
图5. 合成设置2(有放回抽样)问题上的最终评估损失,唯一关联总数从20到200不等。每个单独的符号都是一个按6.1.2节所述训练至收敛的模型。在所有问题中,无论序列长度和唯一键数量如何,我们的更新规则都优于所有其他方法。

D.3. 语言建模

非过载状态下的评估。我们在非过载场景下进行了额外的语言建模实验,以评估我们更新规则的普适性,并在此设置下包含了DPFP。我们训练了Performer和DPFP,均在小配置下(D=128, L=256),但设置了m=16和ν=1,使得两种情况下$d_{dot}=256$,从而模型不处于过载状态。
结果。如表5所示,即使在这种非过载条件下,我们的更新规则也能改善两种线性注意力的性能,表明了其普遍益处。

表5. 在非过载状态下,WikiText-103语言模型困惑度结果,展示了我们更新规则的效果。所有模型的可训练参数数量几乎相同,除了我们的更新规则中门控引入的微小差异(16K参数)。使用了小配置,即D=128, L=256(40M参数)。我们为Performers设置m=16,为DPFP模型设置ν=1,这使得两种情况下ddot=256。因此,模型不一定处于过载状态。
表5. 在非过载状态下,WikiText-103语言模型困惑度结果,展示了我们更新规则的效果。所有模型的可训练参数数量几乎相同,除了我们的更新规则中门控引入的微小差异(16K参数)。使用了小配置,即D=128, L=256(40M参数)。我们为Performers设置m=16,为DPFP模型设置ν=1,这使得两种情况下ddot=256。因此,模型不一定处于过载状态。

E. 机器翻译实验细节

实现细节。我们在FAIRSEQ工具包中实现了不同的$\phi$函数。Transformer架构采用了原始论文中的"big"配置。我们改编了FAIRSEQ提供的训练配置,在3个GPU上训练模型,批大小最高为每个GPU 3584个token,梯度累积16批,共训练45个epoch。表6提供了Performer的m和DPFP的ν与$d_{dot}$之间的转换关系。

表6. Performer和我们的DPFP模型中,点积空间维度与超参数之间的关系。我们所有的翻译模型中,dkey=64。
表6. Performer和我们的DPFP模型中,点积空间维度与超参数之间的关系。我们所有的翻译模型中,dkey=64。

F. 语言建模实验细节

实现细节。我们的实现基于PyTorch,并以Transformer-XL的公开代码为起点。为了高效实现,我们修改了Katharopoulos等人发布的线性Transformer的CUDA核。一个关键点是为快权重实现了自定义的反向传播过程,通过在反向传播中重新计算快权重来避免存储每一步的快权重,从而节省GPU内存。
实验细节。小配置和中配置的批大小分别为96和56,训练约120和70个epoch。使用Adam优化器,初始学习率为0.00025,有2000步的warm-up。对于表4中的Transformer-XL,其状态大小根据评估时不同的记忆段长度计算得出。线性Transformer和Delta Net的每层状态大小为:头数×(每头key维数×每头value维数)。Transformer-XL的每层状态大小为:记忆段长度×(总key维数+总value维数)。总状态大小是每层状态大小乘以层数(16)。