线性变换器其实就是快权重编程器

https://www.bilibili.com/video/av459406435

Linear Transformers Are Secretly Fast Weight Programmers

Authors:Imanol Schlag,Kazuki Irie,Jürgen Schmidhuber

https://arxiv.org/pdf/2102.11174v3.pdf

我们展示了90年代早期线性化自注意力机制和快速权重控制器(fast weight controllers)的形式等价性,其中“慢”神经网络通过梯度下降学习,通过基本编程指令序列来编程另一个网络的“快权重”,这些指令序列是自发明激活模式(self-invented activation)的加法外积(今天称为键和值)。这种快速权重编程器(FWP)学习操作有限内存的内容并与之动态交互(learn to manipulate the contents of a finite memory and dynamically interact with it)。我们推断最近线性化的softmax注意变体的内存容量限制,并用类似增量规则的编程指令(delta rule-like programming instruction)替换纯粹的加法外积,这样FWP可以更容易地学习去纠正从键到值的当前映射。FWP还学习计算动态变化的学习率。我们还提出了一个新的核函数来线性化注意力机制,平衡简单性和有效性。我们对合成检索问题以及标准机器翻译和语言建模任务进行了实验,证明了我们的方法。

1.引言

Transformers(Vaswani et al.,2017)在无数序列处理任务中取得了令人印象深刻的成果,包括机器翻译、语言建模(al-Rfou et al.,2019;Dai et al.,2019;Baevski&Auli,2019;Radford et al.,2019)和问答(Devlin et al.,2019),以前由递归神经网络控制的领域(Graves,2013;Bahdanau等人,2015)。

Transformers的核心部件是自注意力机制(Cheng et al.,2016;Parikh et al.,2016;Lin et al.,2017),该机制最近连接到现代Hopfield网络(Ramsauer et al.,2021;Krotov&Hopfield,2016;Demircigil et al.,2017)。它扩展了一种注意形式(Bahdanau et al.,2015)最初用于补充递归神经网络,例如(Hochreiter&Schmidhuber,1997)。在放弃递归属性的同时,时间轴上的所有计算都可以并行化。然而,这也带来了缺点:自注意力计算与序列长度成二次比例,而模型的内存呈线性增长。因此,从业者被迫将上下文窗口限制在合理的大小,这这反过来又使得捕获长期依赖关系变得不可能。

最近的工作提出了“线性Transformers”,具有恒定的内存和相对于序列长度的线性时间复杂度(Katharopoulos et al.,2020;Choromanski et al.,2021;Peng et al.,2021;Shen et al.,2018)。这种复杂度的降低主要是由于softmax的线性化(见第3.2节)。

在这里,我们强调这一系列线性Transformers和90年代的快速权重控制器或快速权重编程器(FWP)的形式等价性(Schmidhuber,1991;1992;1993;AI博客,2021)(除了归一化)。此类FWP的内存包含键值关联,FWP可以通过可微基本指令序列(也称为更新规则)学习重编程它们(键值关联),这些指令是FWP发明的键值之间的加法外积。

该观点允许我们推导线性Transformers和类似模型的存储容量限制。当序列长度超过存储容量时,该模型可能最终处于容量过剩(overcapacity)状态(在第4.1节中深入讨论).为了在这种情况下正常运行,模型应学会与内存内容(memeory,编者注:内存还是记忆)动态交互,并有选择地决定保留哪些键值关联以及删除哪些键值关联。纯粹的加法指令可能不适合此目的。因此,受FWPs最新工作的启发(Schlag等人,2021年),我们引入了一种改进的编程指令,类似于著名的纠错增量规则(error-correcting delta-rule)(Widrow&Hoff,1960)。

此外,Transformers的softmax线性化技术仍处于探索阶段。现有技术要么非常简单(Katharopoulos et al.,2020),要么在数学上解释得很好,但很复杂(Choromanski et al.,2021;Peng et al.,2021)我们提供了一个全面的比较,并提出了一种简单有效的新方法。

我们在我们自己的合成检索数据集(第6.1节)、标准WMT14英语到德语机器翻译任务(第6.2节)和Wikitext-103(Merity et al.,2017)语言建模任务(第6.3节)2上展示了所提出方法的好处。

2.快速权重编程背景

这里回顾了快速权重编程器(FWP)的概念,然后将其与第3节线性Transformers变体联系起来。

标准神经网络中,权值在训练后保持不变,而激活不同,激活随测试时的输入而变化。快速权重的总体思想是使权重也可变且与输入相关。这一概念被称为突触调制(von der Malsburg,1981),是神经网络中变量绑定的一种方法(参见Greff等人(2020)最近的调查),或动态连接(Feldman,1982)。Von der Malsburg将有效权重定义为传统的、与上下文无关的慢权重和快速变化的、与上下文相关的快权重的(乘法)叠加。Hinton&Plaut(1987)在模型再训练的场景中研究了两组权重(加法)叠加的网络,两组权重学习率不同。然而1991年之前,没有一个网络通过梯度下降来快速计算另一个网络或自身的快速权值存储的变化。

上下文相关的FWP在90年代早期的两个网络系统中引入(Schmidhuber,1991;1992;1993;AI博客,2021)。具有慢权重的传统慢网络不断地改变或重新编程快网络的快权重,使得快权重有效地依赖于给定输入流的时空上下文。简单地说,慢网络学习编程它的快网络。在所提出的慢网络可以用来编程快权值的基本可微指令中,一个特别有吸引力的指令利用外积,对于顺序输入\left\{ x^{(i)}  \right\} _{i=1}^L, x^{(i)} \in R^\left\{ d_{in}  \right\} ,模型输出序列\left\{ x^{(i)}  \right\} _{i=1}^L, x^{(i)} \in R^\left\{ d_{out}  \right\}

其中⊗ 表示外积,σ是一个激活函数,W_aW_b是可训练的慢权重,而快权重W^{(i)}在每个时间步i生成,作为短期内存(还是短期记忆?)。这是一种键值联想记忆模型,其中写入操作基于求和(公式2),检索是矩阵向量乘法(公式3)。Schmidhuber(1993)描述了一个循环形式的版本,并讨论了“注意力的内部聚焦( “internal spotlight)”(这种注意力术语现在在Transformers的上下文中被广泛使用)。外积的使用产生了类似于张量积表示的关联模型(Smolensky,1990)。事实上,自Hebb的非正式规则(Hebb,1949)及其更具体的正式变体(Steinbuch,1961;Steinbuch&Piske,1963;Kohonen,1972;Palm,1980)以来,基于外积的联想记忆可以在许多作品中找到,包括Hopfield网络(Hopfield,1982;Little,1974)和双向联想网络(Kosko,1988)。然而,这些作者描述了将给定模式相互关联的预连线规则。自1991年以来,他们的系统没有学会使用这些规则来关联像FWPs这样的自发明模式。

最近,FWPs的概念也以不同的名称重新讨论(Ba等人,2016;Schlag&Schmidhuber,2017),例如超网络(Ha等人,2017;Perez等人,2018;Galanti&Wolf,2020)、动态塑性(Miconi等人,2018;2019)、动态卷积(Klein等人,2015;Noh等人,2016;Jia等人,2016)或lambda网络(Bello,2021)用于包括元学习在内的应用(Munkhdalai&Yu,2017;Munkhdalai&Trischler,2018;Munkhdalai等人,2019;Kirsch&Schmidhuber,2020)。FWPs最近还通过显式机制改进了记忆模型,以便于替换不推荐的信息和更新关联(Schlag&Schmidhuber,2018年;Schlag等人,2021年)。

3.与Transformers的关系

Ba等人(2016年)已经指出了基于外积的FWP变体(Schmidhuber,1993年)和注意(Bahdanau等人,2015年)之间的关系。Katharopoulos等人(2020年)分析了线性化Transformers。我们回顾了这些推导,强调了Transformers和前一节FWP之间的关系。

3.1.没有Softmax的自注意力是一个快速权重编程器

自回归Transformers中的自注意力层(Vaswani等人,2017)将输入序列\left\{ x^{(i)}  \right\} _{i=1}^L, x^{(i)} \in R^\left\{ d\times 1 \right\} 映射为输出序列\left\{ y^{(i)}  \right\} _{i=1}^L, y^{(i)} \in R^\left\{ d_{value} \times 1 \right\}

式中,[A,a]表示将向量a与矩阵A沿着时间维度拼接,softmax在时间维度计算,W_kW_vW_q是可训练权重矩阵。我们省略了softmax中1/\sqrt{d_{key} } 的缩放,而不失一般性。

现在,如果我们去掉等式7中的softmax,我们得到:

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

我们可以重写公式4-7,使其与公式1-3直接关联,其中激活函数σ为恒等函数,无查询投影:

3.2. 线性化自注意力

不像3.1节中那样删除softmax,已有的一些工作引入一些技术来线性化softmax(Tsai等人,2019年),该技术已被证明可以提高长序列自注意力的计算效率(Katharopoulos等人,2020年;Choromanski等人,2021年;Peng等人,2021年)。

通过显式写softmax,公式(7)可以写为:

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

一般的想法是用另一个核替换softmax核{\kappa}’  (k,q)=\phi (k)^T \phi (q),其实\phi R^{d_{key} }\rightarrow R^{d_{dot} }的函数。5.1节将讨论\phi 的必要性。将公式12中的\kappa 替换为{\kappa}’ ,我们得到:

使用外积表示法,分子类似于3.1节中不用softmax的形式:

通过引入快速权重矩阵W^{(i)}和分母的附加向量z^{(i)}

线性Transformers(Katharopoulos等人)的正向计算可写成:

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

4. 分析和改进作为快权重编码器的线性变换器

将线性Transformers变量视为快速权重编程器为我们提供了两个见解,我们在这项工作中研究了这两个见解:它们作为关联记忆的容量限制(第4.1节),以及它们无法编辑先前存储的关联(第4.2节)。

4.1. 容量限制

直觉

无休止地向有限大小的内存(记忆)添加新关联,如等式17所示,不可避免地会达到极限。在线性注意中,信息存储在矩阵中,并使用矩阵乘法检索(见等式19)。因此,为了防止检索时关联相互干扰,各个键需要正交。否则,点积将处理多个键(will attend to more than one key)并返回值的线性组合。对于嵌入在d_{dot} 空间中的键,正交向量不能超过d_{dot} 个。也就是说,存储多于d_{dot} 个关联将导致检索错误。在线性Transformers中,当序列长度大于d_{dot} 时,模型可能处于这种容量过剩(overcapacity)状态。虽然我们在实验上证明了这种对玩具任务的影响(第6.1节),但之前关于张量积表示的工作允许进行更正式的讨论。

张量积表示理论。

连接主义研究的早期工作调查了使用分布式表示作为存储符号结构的手段。一项极具影响力的工作是基于张量积的变量绑定机制(Smolensky,1990)。一种结构化符号系统的张量积表示法(TPR),由一组变量和值组成,这些变量和值由所谓角色(role)和填充(filler)向量的外积构成。这些术语在我们的上下文中直接转化为键和值。公式17中的快速权重记忆是此类表示(二阶张量)的最基本形式。因此,Smolensky工作中讨论的许多结果转移到我们的模型中。特别是,Smolensky(1990)的定理3.3和3.1更正式地讨论了上一段直观描述的串扰(crosstalk)和检索错误。

然而,我们也注意到一个重要的区别:Smolensky(1990)的经典TPR是用符号结构的先验知识构建的。相比之下,我们自1991年以来的FWP,包括最近的FWP(Schlag&Schmidhuber,2018),学习构建这种表示所涉及的所有向量。

4.2. 改进FWP的编程指令

4.1节认为,如果序列长度L超过键的尺寸d_{dot} ,线性Transformers可能最终处于容量过剩(overcapacity)状态。一旦容量过剩(overcapacity),理想的内存模型应该动态地和记忆内容交互,并有选择地确定哪些关联应该记住或忘记。这与标准Transformer形成鲜明对比,后者通过串接存储不可变的键和值向量对,从而增加了存储大小(storage size)。虽然这些模型在实践中运行良好,但我们认为模型更新先前获得的知识的能力,对许多问题的是至关重要。因此x ^{(i)},从与记忆动态交互的角度来看,公式17的纯加性更新规则可能是次优的。这促使我们改进FWPs的底层可微编程指令(即更新规则)。

受Schlag等人(2021)最近工作的启发,我们提出了一个基本指令,基本上以端到端可微的方式实现著名的纠错增量规则(error-correcting delta rule,Widrow&Hoff,1960),这样FWP就可以通过自发明的、动态变化学习率来学会明智地使用它。给定一个新的输入键值对(k^{(i)},v^{(i)}),FWP首先访问记忆的当前状态W^{(i-1)}, 并检索当前与键k^{(i)}配对的值{\overline{v} }^{(i)}。然后,模型存储检索的值{\overline{v} }^{(i)}和输入v^{(i)} 的凸组合v_{new}^{(i)} 。凸组合使用插值权重0\leq \beta ^{(i)} \leq 1,其也是该模型生成。因此,该模型顺序变换输入序列\left\{ x^{(i)}  \right\} _{i=1}^L, x^{(i)} \in R^\left\{ d\times 1 \right\} 为输出序列\left\{ y^{(i)}  \right\} _{i=1}^L, y^{(i)} \in R^\left\{ d_{value} \times 1 \right\}

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

如等式24所示,我们的编程指令或更新规则实际上是具有动态学习率\beta ^{(i)}的增量规则。因此,模型将学习更正当前键到值的关联。在附录B中,我们正式展示了该方法相对于Peng等人(2021)同时提出的选通更新规则的优势。

归一化。

在上面的等式中,我们检索的值没有应用归一化。通过3.2节的推导,可以获得简单的归一化,即通过引入累加机制:

分别替换公式20和公式25,得到:

其中,我们定义{\overline{v} }^{(1)}=0。在这种方法中,输出y ^{(i)}\beta ^{(j)}({v}^{(j)}-{\overline{v} }^{(j)}),\ 1\leq j\leq i。我们将这种方法称为注意力归一化。

然而,这种方法也有缺点。首先,等式26中正值的累积总是随着步数的增加而增加,并且可能导致不稳定。其次,特别是对于我们的更新规则,这种归一化不足以平衡等式23中写入和删除操作之间的权重(参见附录A.2中的推导)。在这里,我们提出了一种基于简单归一化的更好方法。在使用公式20到25之前,我们将有效键\phi (k^{(i)} )和查询向量\phi (q^{(i)} )除以其分量之和,例如,对于查询:

通过关注到,任何矩阵向量运算(如等式25)的输出是矩阵列的加权和,其中权重是向量的分量,直观地理解了这种归一化的一般结果;因此,如果向量分量之和为1,则可以将该操作视为对矩阵列的注意力。我们在附录A.2中对我们的FWP提供了进一步的解释和精确的含义。我们将此方法称为总和归一化(sum normalisation)

因为这是等式20到25中\phi (k^{(i)} )\phi (q^{(i)} )的简单替换,人们可能仍然会问,是否需要额外的注意力归一化。在语言建模实验(第6.3节)中,我们表明情况并非如此。

5.    线性注意函数

softmax线性化(第3.2节)的中心组件是\phi 函数,它将键和查询向量映射到点积空间:R^{d_{key} }\rightarrow 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年)建议使用简单的元素级ELU+1函数(Clevert等人,2016年):

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

5.3. FAVOR+

与Katharopoulos等人(2020年)的\phi 函数仅满足正性(和良好的梯度)性质不同,Choromanski等人(2021年)提出了一种数学上严格的方法,用随机特征近似softmax。他们提出以下\phi 函数:

其中,两个向量的拼接[{a \\ b}]沿特征维度,R∈ R^{ m×d_{key}}是具有m个随机特征的矩阵,其中每个行向量r∈ R^{ 1×d_{key}}N(0,I_{d_{key}} )得出。Peng等人(2021年)也提出了类似的方法。

使用FAVOR+,d_{dot} 的维数为2m,如果2m>d_key,则会增加记忆的理论容量。同时,该模型的容量仍然是有限的,并且仅当m变为无穷大时才等于softmax记忆的无限容量,这在实践中无法实现。在训练期间,我们为每个小批量重新提取这些m个随机向量。在评估过程中,我们一次提取一组m个随机向量,并保持它们不变。m是FAVOR+的唯一超参数,影响softmax近似的质量。Choromanski等人(2021年)建议按照d_key的对数log(d_{key} )的order选择m。这种抽样过程是FAVOR+的主要缺点,因为它将方差引入模型的输出中。

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

前面两小节强调了现有\phi 函数的次优性。采样为FAVOR+(第5.3节)引入了额外的复杂性,而线性变换器(第5.2节)缺乏向上投影点积维度的能力。在这里,我们提出了一种称为确定性无参数投影(DPFP)的替代方法。它是确定性的,并且易于计算,就像线性变换器一样,同时增加点积维度,而不需要FAVOR+的随机特征。

我们先从一个低维的例子开始,以培养对广义公式的直观理解。考虑4个键k^{(i)},i\in \left\{ 1,2,3,4\right\} ,维度为R^2(编者注:即通道数为2),\phi 函数为\phi :R^2 \rightarrow R_{\geq 0}^4 ,其中\phi (x)的第l个元素由偏函数 partial function\phi _{l} :R^2 \rightarrow R_{\geq 0}生成。

我们要设计\phi ,使其有利于投影空间中的正交性,也即,如果i\neq j,那么\phi (k^{(i)} )\cdot \phi (k^{(j)} )=0。为此,我们构造\phi ,如果\phi _{l} (x)>0,对于所有的n\neq l,则\phi _{n} (x)>0。可以通过将偏函数的域限制为不重叠来实施这种约束。

对于元素整流函数r(a)=max(0,a),偏函数定义为:

图1说明了此函数。四维空间的元素显示为四个彩色表面的z分量。该图显示了2d平面中的每个向量如何在4d空间中具有单个非零分量,并将输入空间平均分割为四个区域,这四个区域将在投影空间中正交。

我们通过构造额外的双因素特征( two-factor features),将该方法推广到高维输入。给定一个输入向量k\in R^{d_{key} }i\in [1,2 d_{key} ],偏函数为:

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

最后,我们注意到Choromanski等人(2021年)的经验表明,用ReLU替换公式32中的exp通常可以提高模型性能。虽然这一结果在理论上并不合理,但它支持我们的DPFP的设计,该设计旨在实现稀疏性和正交性。

6    实验结果

现在,我们展示了我们在综合检索问题(第6.1.1节和第6.1.2节)、机器翻译(第6.2节)和语言建模(第6.3节)上的实验结果。

6.1. 合成环境

我们说明了线性注意的能力问题(第4.1节)以及我们的新更新规则(第4.2节)对两个综合问题的有效性。

在这两种设置中,我们的玩具问题包括在使用其中一个键进行查询时,从随机采样的键值关联序列中检索正确的值。关键的是,查询是在序列的末尾给出的,这样模型在处理输入时不会意识到它。为了成功,模型必须学会在不受干扰的情况下将观察到的关联存储在其记忆中。

设K和V是键和值的有限固定集,S=| K |=| V |。然后,模型的输入是序列[(k,v)_{1} ,...(k,v)_{L}],后跟q,其中每对(k,v)∈ K×V是随机采样的,q随机选择为L个键之一。

每个值v^{(i)},i\in [1,...S]被分配一个固定的one hot向量v^{(i)}\in R^S (原文中两个v字体不同,含义不同)。因此,值向量集是正交基。相反,键符号的向量嵌入是习得函数e:K\rightarrow R^{d_{emb} } k=W_{K} [e(k);v],其中W_{K} \in R^{d_{key} \times (d_{emb}+S)}

在L个写入操作之后,读取函数和查询向量q=W_Qe(q),W_{Q} \in R^{d_{key} \times {d_{emb}}},用于检索记忆中的\hat{v}  \in R^S。最后,损失定义为l( \hat{v} , v^* )=\sum\nolimits_{j}^S \frac{1}{2} {( \hat{v} , v^* )}^2 ,其中v^* 是输入序列中分配给q的值向量。除非另有说明,否则每个模型都使用此损失和默认超参数进行小批量训练( mini-batches)。对于评估,我们对20个序列进行采样,并测试所有可能的查询,例如,使用S=100个唯一键,评估批次的大小为100∗ 20 = 2000.

6.1.1.设置1:测试容量

在此设置中,我们通过实验证明了线性注意(第4.1节)的容量限制。我们对第5节中描述的各种\phi 函数进行了实验。我们将d_key固定为64,而不同的\phi 函数产生不同的ddot。我们将序列长度设置为等于唯一键的数量(L=S),并在不替换的情况下对键和值进行采样以生成序列。通过改变序列长度S,我们的目标是显示所有线性注意模型(使用第3.2节的简单求和更新规则)在S超过d_dot时检索失败。

所有模型均以32的小批量进行训练,直到评估损失降至0.001以下,或直到1000个步骤没有进展。图2中显示了每个模型和每个S的最佳验证集性能(学习曲线见附录D.1)。唯一键的数量最初为S=20,然后增加20直到S=600。比较以下模型:Softmax、线性注意、随机特征数为64、128和512的FAVOR+,DPFP-ν,ν∈ {1, 2, 3}。

这些结果支持了我们的理论分析。由于选择了d_key=d_dot=64,线性注意的容量为64。实验上,线性注意力在60或60以上的关联时开始累积错误。同样,DPFP投影1、2和3在接近各自的限值128、256和384时开始累积错误。FAVOR+,另一方面,在任何实验中都无法实现0的损失。最后,正如预期的那样,softmax attention的性能优于所有\phi 函数,尽管它很难完全收敛到500多个键。

6.1.2.设置2:比较更新规则

在第二个设置中,我们比较更新规则的变化。与设置1不同,将使用替换和序列长度L=2S对键和值进行采样。因此,在同一序列中,可以多次将多个键重新分配给新值。要检索的预期值是与查询关联的最新值。使用e非常新的键,与此键关联的先前值已弃用,需要模型更新其有限大小的内存。更新与键关联的值的能力对于将上下文特定的值绑定到键至关重要。

我们使用DPFP-1作为φ函数。序列长度固定为40,具有20个唯一键和值。虽然该设置不超过DPFP-1的容量,但我们的结果与容量状态无关(参见附录D.2中不同S和φ的结果)。我们将提出的快速加权内存编程指令与Sec的标准化进行了比较。4.2(此处由我们表示)到三条基线:Sec的总和更新规则。3(总和规则)和先前更新规则的两个变体(Schlag等人,2021):Schlag(2021)和Schlag(2021)与DPFP。

Schlag(2021)只是Schlag等人(2021)移植到该设置的模型(即没有LSTM层)。Schlag(2021)既没有φ函数,也没有Sec的和归一化项。4.2. 相反,它使用tanh非线性作为其关键表示。作为一种消融,我们用我们的DPFP-1替换它,但我们不使用Sec的归一化项。4.2,我们称之为带有DPFP的Schlag(2021)。

图3显示了学习曲线。它们表明,我们的新更新规则优于所有其他变体。正如预期的那样,基线总和更新规则失败。

6.2. 机器翻译实验

这里我们比较标准机器翻译任务中的φ函数。我们将线性Transformers(Katharopoulos等人,2020年)、Performer(Choromanski等人,2021年)和φ函数DPFP(第5.4节)与常规Transformers进行比较,以补充之前的比较,例如Tay等人(2021年)。我们使用标准WMT14英语到德语翻译数据集和标准数据设置(Ott等,2018;Vaswani等,2017)。我们采用了Ott等人(2019)(见附录E)的配方,并在三个V100 GPU上对Vaswani等人(2017)的“大”型号进行了约4天的训练。我们对所有模型使用完全相同的训练配置,无需特定于模型的超参数调整。我们只改变Performer中的模型超参数m和DPFP模型中的ν。

表1显示了BLEU评分结果(Papineni等人,2002年;Post,2018年)。当采样数m足够大时(对于ddot=512,我们有m=256),Performer与基本Transformer一样好。事实上,当dkey=64时,m的建议值为ddot log(ddot)=266。当ddot相对较小时,我们的DPFP模型优于线性Transformers和Performer;在简单性和性能之间提供了良好的折衷。

6.3. 语言模拟实验

玩具实验设置2(第6.1.2节)说明了更新规则的效果。现在我们的目标是确认它在大词汇量单词级语言建模任务中的有效性,并进一步研究它的潜力。

实验装置。我们的更新规则应该在具有足够长上下文依赖关系的数据集上进行评估。我们使用标准WikiText-103(Merity et al.,2017)数据集。WikiText-103由维基百科的长篇文章组成;该训练集包含约28K篇文章,共103M个连续单词。这将产生约3600个单词的上下文文本块。验证集和测试集也包含类似的长依赖项,分别有218 K和246 K个单词用于60篇文章。词汇量约为268k个单词。

我们将训练数据分成L字长的段(即反向传播跨度)。除非另有说明,我们在训练期间独立处理这些部分。对于评估,我们使用1的批量大小,并使用大小为L的滑动窗口浏览文本,只考虑计算复杂度的最后一个位置(第一段中所有位置都被评估的情况除外)。这通常适用于有限环境下的Transformers(Al Rfou等人,2019年)。附录F提供了进一步的实验细节。

我们的新更新规则的有效性。

我们首先在两种配置中评估更新规则。在小配置中,我们将模型维度(与键、值和查询相同)D设置为128,将训练和评估上下文长度L设置为256。我们注意到D=H∗ ddot,其中H是头数。H设置为8。前馈层尺寸为2048。在所有配置中,层数为16。在介质配置中,我们设置D=256和L=384。这两种配置都代表了容量过剩(overcapacity)。我们评估了线性Transformers(Katharopoulos等人,2020年)和Performer(Choromanski等人,2021年)。然而,为了保持比较简单,我们通过正确选择投影尺寸(中小型配置中分别为m=8和m=16),将Performer的容量(第5.3节)设置为线性Transformers的容量,即使这限制了性能。这里不包括DPFP,因为在这两种配置中,即使是最小的ν值也能提供足够的容量。在这里,我们研究了容量过剩(overcapacity)情况下更新规则的影响(关于包括DPFP在内的非产能情况下的实验结果,请参见附录D.3)。所有型号都可以在不到四天的时间内使用两个V100 GPU进行训练。我们使用delta更新规则将线性Transformer称为delta网络。表2显示了困惑的结果。在这两种配置中,我们的更新规则比使用总和更新规则的模型提供了令人信服的改进。

我们还进行了一项消融研究,以测试绝对位置编码和额外注意力归一化的效果(第4.2节)。表3显示了结果。在所有情况下均使用总和归一化(第4.2节):否则,模型会发散。相比之下,当不应用额外的注意力归一化时,可以获得更好的困惑。我们还观察到不需要绝对位置编码,从而证实了先前工作的结果(Irie等人,2019a)。

复杂性,挂钟时间,内存。

我们提出的所有方法都在“线性Transformers”的框架内。因此,就复杂度而言,不需要讨论任何变化,复杂度在空间上是恒定的,在时间上是线性的w.r.t.序列长度。然而,我们修改的更新规则引入了一些额外的计算。在我们的实现中,使用和不使用增量更新规则的线性Transformer的挂钟时间和内存需求(对于较小的LM设置)分别为:63K和66K字/秒,以及14和13GB。因此,额外的资源需求微不足道。由于我们为这些线性Transformer使用定制CUDA内核,因此它们比PyTorch中实现的常规Transformer更快,PyTorch每秒处理33K个字,需要17GB内存。DPFP和Performer模型(对于附录中具有较大ddot的表5)的速度分别为63K和57K字/秒。由于采样逻辑,Performer的速度较慢,这也激发了我们的DPFP。

不截断上下文。

给定恒定的空间要求,我们可以为线性Transformers提供任意步数的输入。为了正确评估模型处理任意长序列的能力,使训练与评估模式一致至关重要(Irie等人,2019b)。在训练期间,我们将快速重量内存从一个训练段转移到下一个训练段,同时仍将反向传播范围限制在该段内。我们训练一个Delta网络,既不使用位置编码也不使用注意力归一化(表3中的最佳设置)。由于累加器如第2.2.2节所示爆炸,因此消除Delta网的注意力归一化至关重要。4.2,而对于线性Transformers,移除它会导致更严重的困惑,超过1600。表4显示了相应的结果。Delta网络与具有有限上下文窗口的最佳模型(表3)相比产生了轻微的改进,这不同于基线线性变换器模型,该模型具有原始和更新规则,该规则会中断。我们还在我们的中型配置中训练TransformersXL,作为专门为此用例设计的基线模型(Dai等人,2019年;Rae等人,2020年)。我们通过更改Transformer XL的内存和目标段长度,使用不同的状态大小对其进行评估(更多详细信息,请参见附录F)。当使用较大的状态大小(较大的注意窗口)评估TransformersXL时,Delta网络的性能与TransformersXL的性能不匹配。然而,当我们考虑到状态大小时(表4),我们观察到Delta网络在状态大小较小的情况下表现非常好,这在一些实际应用中是一个关键属性(Irie et al.,2020)。这些结果有望为今后在可运行无限步数的替代Transformers模型上开展工作。

7.结论

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

A.更新规则推导

A.1。更新规则

这里我们提供了从公式23到公式24的中间步骤

A.2。键和归一化

通过考虑一个热向量{e(1),…,e(i),…,e(dkey)},它构成了R dkey的笛卡尔基,任何矩阵W∈ R d值×dkey可以写成

其中{w(1),…,w(i),…,w(dkey)}是w的列向量。在联想内存的上下文中,我们可以将此表达式解释为一组与固定键e(i)和相关值w(i)的关联

.   在此视图中,W的任何更新都可以写入每个W(i)的更新。这一观点允许我们推导Sec的总和归一化。4.2. 为此,我们首先推导w(i)的更新。

给定任意权重W,我们考虑通过使用SEC的更新规则添加新的关联(k,v)来将其更新为W0。4.2(省略β):

通过将等式43中的k替换为笛卡尔基中的表达式k=X dkey i=1 kie(i)和ki∈ R、 我们获得:

现在,将W替换为其等式41的表达式:

因此,按列更新为:

我们可以在公式48中替换,以获得

在等式51中,正项v上的权重ki通常不等于负项Pdkey j=1 kikj上的总权重。我们可以通过引入归一化来强制平衡这些权重

如果ki不是零,我们得到

这与我们在第节中引入的总和归一化相对应。4.2 .

B.与彭等人(2021年)的正式比较

与我们的工作同时,Peng等人(2021年)提出了以下选通更新规则

这是由递归神经网络中的门控机制驱动的(Hochreiter&Schmidhuber,1997)。相比之下,我们的公式24的更新规则

由联想内存视角驱动,与著名的纠错增量规则相关,并提供了一个关键属性。

为了说明这两个更新规则之间的相似性和关键性差异,我们考虑了由两个关联(k1,v1)和(k2,v2)构造的快速权矩阵W,即我们假设k1和k2是正交的,并且我们省略了ω。现在我们考虑通过添加一个新的关联(K3,V3)来更新W到W0,其中K3=K2。根据Peng等人(2021年)的更新规则,我们得出:

因此,该规则将与键k2=k3相关联的值更新为新旧值(1)的凸组合− β) v2+βv3:

但是,它也会修改或在最坏的情况下删除与键k1关联的值:

相反,使用我们的更新规则,我们有:因为v'=wk3=wk2=v2。因此,我们的规则还将与键k2=k3相关联的值更新为新旧值(1)的凸组合− β) v2+βv3:

至关重要的是,它保持与k1关联的值不变:

因此,我们的更新规则不同于Peng等人(2021年)的更新规则,即更新关联,同时在关联内存中保持其他“不相关”关联的完整性

C.DPFP-ν的实施

清单1是DPFP-ν(等式37)的一个简单PyTorch实现,它由两个串联和一个元素乘法组成。

D.其他实验结果

在本节中,我们提供了额外的实验结果,由于篇幅限制,我们无法将这些结果包含在主要论文中。

D.1。综合任务设置1

图4显示了具有600个唯一键和值的合成设置1(不替换)的学习曲线。可以在我们的GitHub存储库中找到用于生成此类数字的脚本

D.2。综合任务设置2

图5是设置2的容量图,其中唯一键和查询的数量不断增加(类似于图2,将1与y轴的对数刻度分开)。我们没有在这个图中包括FAVOR+,因为它与我们的更新规则相结合,导致在这个设置中没有数字。

D.3。语言建模

以秒计。6.3,当模型处于容量过剩(overcapacity)状态时,我们评估了更新规则。在这里,我们提供了一个额外的语言建模实验,该实验评估了我们的更新规则在非容量过剩(overcapacity)场景中的好处。这也允许我们将DPFP包括在评估中。我们在较小的设置(D=128,L=256)下对Performer和DPFP进行训练,m=16,ν=1,结果两种情况下的ddot=256。表5显示了困惑的结果。首先,我们观察到,具有总和更新规则的Performer和DPFP基线模型的性能并不优于表2中的线性Transformer基线。事实上,与合成检索任务相比,语言建模受容量问题的影响可能更小,因为它可能不需要精确的检索。其次,我们观察到,即使在这种情况下,我们的更新规则也比总和更新规则基线改善了线性注意的两种变体。这表明了我们的更新规则对快速权重编程器的一般好处。我们注意到,DPFP模型的改进比Performer的改进更大。这与表2类似,在表2中,我们的更新规则比Performer更能改善确定性线性变换器。最后,我们注意到,我们还通过分别设置ν=2和m=32,尝试了ddot增加的DPFP和Performer模型。虽然这将ddot增加了两倍,但这对这种语言建模设置没有好处。

E.机器翻译实验的细节

我们在FAIRSEQ tookit中实现了不同的功能(Ott等人,2019年)。实验中使用的Transformers架构在原始Transformers论文中被称为big(Vaswani et al.,2017):该模型在编码器和解码器中各有6层,隐藏层大小为1024,16个注意头,4096维前馈层,使用32 K字节对编码子字单元(Sennrich等人,2016年)。FAIRSEQ提供了相应型号的训练配置(Ott等人,2018年),我们针对我们的基础设施进行了调整。我们在三个GPU上对我们的模型进行了训练,使用每个GPU多达3584个token的批量大小,并在45个历史时期的16个批次上累积梯度,并根据验证BLEU分数选择了最佳模型。在表1中,我们直接报告了不同ddot值的BLEU;表6提供了转换fromPerformer的超参数m或DPFP到ddot中的ν。

F.语言模拟实验的细节

实现说明。我们的所有实现都基于PyTorch(Paszke等人,2019年)。我们的基础语言建模代码是使用Dai等人(2019年)的公共代码开发的对于Transformer XL作为起点。对于φ函数,我们移植了我们在翻译实验中使用的相同实现。对于更新规则的实现,我们修改了Katharopoulos等人公开提供的线性Transformer的CUDA内核。(2020年)。我们注意到,快速权重向后传递的自定义实现对于语言建模至关重要。自动微分生成的简单向后计算将存储每个时间步的快速权重,这可能会快速达到GPU内存限制。自定义实现确保我们只需存储一组weights通过重新计算计算反向过程中每个时间步的梯度所需的快速权重(由于计算快速权重所涉及的操作相当便宜,因此仍然保持时间效率)。

实验细节。

在这里,我们提供额外的实验细节来补充Sec的描述。6.3. 对于小型和中型配置,我们分别使用96和56个序列的批量大小,并对大约120和70个时期进行训练。在这两种情况下,我们都采用10%的Dropout率(Hanson,1990;Srivastava et al.,2014),并使用Adam Optimizer(Kingma&Ba,2014)进行训练,初始学习率为0.00025,学习率为2000。有关更多详细信息,请读者参考我们的代码。对于Transformer XL(表4)的实验,我们使用与我们的模型相同的反向传播范围(即媒体配置中的384个字)对其进行训练。该模型使用384的内存和目标段长度进行训练。表4中具有不同状态大小的模型是通过在评估时使用不同的Transformer XL内存段长度获得的。状态大小为1.05 M、2.10 M和6.29 M的模型分别通过使用64、128和384的内存和目标长度获得。状态大小为0.13 M的模型使用的内存长度为15,目标长度为1。与其他型号一样,批量大小为1用于评估TransformersXL。表4中的状态大小计算如下。线性Transformers和三角网的每层状态大小为:头数(此处为8)×每头键尺寸的快速权重矩阵大小(此处为32)×每头值尺寸(此处为32)。这将产生8192的总大小。Transformer XL的每层状态大小为:内存段长度×目标段长度×(总键维度,此处256+总值维度,此处256)。通过将每层状态大小乘以所有模型的16层数量,我们获得了表4中报告的总状态大小。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 变换器在一些任务中效果很好,但是它的时间复杂度是二次的,因而有个局限性,就是输入的序列很长的时候,它的计算会非常慢...
    Valar_Morghulis阅读 1,120评论 0 0
  • 去年Alaph GO击败李世石九段,社会掀起了机器学习技术讨论的热潮,不过很多人对机器学习并不了解,本文借由手写数...
    Sunhaorong阅读 2,735评论 0 4
  • 1 着色器和程序(Shaders and Programs) 1.1 着色器语言(Language Overvie...
    RichardJieChen阅读 9,994评论 3 12
  • 上一讲的神经网络是线性分类器的堆叠,只不过在中间加入非线性函数,对中间层产生的模板加权后得到最终的得分。卷积神经网...
    HRain阅读 2,657评论 0 4
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 8,266评论 0 4

友情链接更多精彩内容