Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

David Chiang、Peter Cholak作者

识别形式语言能力不足,不完美的Transformer要克服自注意力的理论缺陷

最近一两年,transformer 已经在 NLP、CV 等多样化任务上实现了卓越的性能,并有一统 AI 领域的趋势。那么,推出已近五年的注意力机制真的是所有人需要的吗?近日,有论文检验了 transformer 在两种形式语言上的理论缺陷,并且设计了方法克服这种缺陷。文章还研究了可能出现的长度泛化的问题,并提出了相应的解决方案。

尽管 transformer 模型在许多任务中都非常有效,但它们对一些看起来异常简单的形式语言却难以应付。Hahn (2020) 提出一个引理 5),来试图解释这一现象。这个引理是:改变一个输入符号只会将 transformer 的输出改变 𝑂(1/𝑛),其中 𝑛 是输入字符串的长度。

因此,对于接收(即判定某个字符串是否属于某个特定语言)只取决于单个输入符号的语言,transformer 可能会以很高的准确度接受或拒绝字符串。但是对于大的 𝑛,它必须以较低的置信度做出决策,即给接受字符串的概率略高于 ½,而拒绝字符串的概率略低于 ½。更准确地说,随着 𝑛 的增加,交叉熵接近每个字符串 1 比特,这是最坏情况的可能值。

近期,在论文《Overcoming a Theoretical Limitation of Self-Attention》中,美国圣母大学的两位研究者用以下两个正则语言(PARITY 和 FIRST)来检验这种局限性。


Hahn 引理适用于 PARITY,因为网络必须关注到字符串的所有符号,并且其中任何一个符号的变化都会改变正确答案。研究者同时选择了 FIRST 作为引理适用的最简单语言示例之一。它只需要注意第一个符号,但因为更改这个符号会改变正确答案,所以该引理仍然适用。

尽管该引理可能被解释为是什么限制了 transformer 识别这些语言的能力,但研究者展示了三种可以克服这种限制的方法。

首先,文章通过显式构造表明,以高准确度识别任意长度的语言的 transformer 确实是存在的。研究者已经实现了这些结构并通过实验验证了它们。正如 Hahn 引理所预测的那样,随着输入长度的增加,这个构建的 transformer 的交叉熵接近 1 比特(也就是,仅比随机猜测好一点)。但文章也表明,通过添加层归一化交叉熵可以任意接近零,而与字符串长度无关。

研究者在实践中还发现,正如 Bhattamishra 等人所指出的,transformer 无法学习 PARITY。也许更令人惊讶的是,在学习 FIRST 时,transformer 可能难以从较短的字符串泛化到较长的字符串。尽管这不是 Hahn 引理的逻辑上可以推出的结果,但它是 Hahn 引理预测行为的结果。幸运的是,这个问题可以通过简单的修改来解决,即将注意力的 logit 乘以 log 𝑛。此修改还改进了机器翻译中在长度方面的泛化能力。


论文地址:https://arxiv.org/pdf/2202.12172.pdf

精确解决方案

克服 Hahn 引理所暗示的缺点的第一种方法是通过显式构造表明 transformer 可以以高精度识别出上述提到的两种语言。

针对 PARITY 的前馈神经网络(FFNN)

Rumelhart 等人表明,对于任何长度𝑛都有一个前馈神经网络 (FFNN) 可以计算长度正好为 𝑛 的字符串的 PARITY。他们还表明,随机初始化的 FFNN 可以自动学习这么做。

由于文章所提出构建方式部分基于他们的,因此详细回顾他们的构建可能会有所帮助。设𝑤为输入字符串,|𝑤| = 𝑛,𝑘是𝑤中 1 的个数。输入是一个向量 x,使得 x_𝑖 = I[𝑤_𝑖 = 1]。第一层计算 𝑘 并将其与 1,2,...,n 进行比较:


因此,


第二层将奇数元素相加并减去偶数元素:


针对 PARITY 的 transformer

命题 1. 存在一个带有 sigmoid 输出层的 transformer,它可以识别(在上述意义上)任意长度字符串的 PARITY 语言。

最初,研究者将构造一个没有层归一化的 transformer 编码器(即 LN(x) = x);然后展示如何添加层标准化。设 𝑘 是 1 在 𝑤 中出现的次数。网络计算的所有向量都有 𝑑 = 9 维;如果显示出较少的维度,则假设剩余的维度为零。
 
词和位置嵌入是:


研究者认为,位置编码的第五维使用余弦波是一个相当标准的选择,尽管它的周期 (2) 比标准正弦编码中的最短周期 (2𝜋) 短。第四维度诚然不是标准的;但是,研究者认为这依然是一种合理的编码,并且非常容易计算。因此,单词𝑤_𝑖的编码是:


第二个 head 不做任何事情(W^V,1,2 = 0;query 和 key 可以是任何东西)。在残差连接之后,可以得到:


在 Rumelhart 等人的构造中,下一步是使用阶跃激活函数为每个 𝑖 计算 I[𝑖 ≤ 𝑘]。文章提出的构造有两个不同之处。首先,激活函数采用 ReLU,而不是阶跃激活函数。其次,因为注意力总和必须为 1,如果 𝑛是奇数,那么偶数和奇数位置将获得不同的注意力权重,因此奇数位置减去偶数位置的技巧将不起作用。相反,我们想要计算 I[𝑖 = 𝑘](如下图 1)。


第一个 FFNN 有两层,第一层是:


由此可以得出:


第二层采用线性的方式把这三个值结合在一起得到想要的 I[𝑖 = 𝑘]。


第二个自注意力层测试位置𝑘是偶数还是奇数。它使用两个 head 来做到这一点,一个更强烈地关注奇数位置,一个更强烈地关注偶数位置;两者的平均维度大小为 8:


针对 FIRST 的 transformer

接下来,研究者为 FIRST 构建一个 transformer。根据学习每个位置词嵌入的常见做法(Gehring 等人,2017 年),他们使用位置编码来测试一个词是否在第 1 个位置 :


第一层 FFNN 计算一个新的组件(5)来测试是否 i = 1 以及 w_1 = 1。


第二个自注意力层只有一个单一的 head,这使得 CLS 关注于位置 1.


第二层 FFNN 什么都不做(W^F,2,1 = b^F,2,1 = W^F,2,2 = b^F,2,2 = 0)。所以在 CLS 处(位置 0 处):


最后输出层仅仅选择组件 6。



实验

文章使用 PyTorch 的 transformer 内置实现的修改版本(Paszke 等人,2019)实现了上述两种建构。这些构造对长度从 [1, 1000] 采样的字符串实现了完美的准确性。
 
然而,在下图 2 中,红色曲线(「没有做层归一化」)表明,随着字符串变长,交叉熵接近每个字符串 1 比特的最坏可能值。


层归一化

减轻或消除 Hahn 引理限制的第二种方法是层归一化 (Ba et al., 2016),对于任何向量 x,其定义为


实验中,𝛽 = 0 和𝛾 = 1,因此结果的均值近似为零和方差近似为 1。常数 𝜖 没有出现在原始定义中(Ba et al., 2016),但为了数值稳定性,我们知道的所有实现中都添加了常数𝜖。

原始的 transformer 在每个残差连接后立即执行层归一化。在本节中,研究者修改了上面的两个结构的层归一化。,这一修改有两个步骤。

去除中心

第一个是通过使网络计算每个值𝑥以及 -𝑥来消除层归一化的中心效应。新单词的编码是根据原始结构中的编码定义的:


对于自注意力层的参数也是类似。


对于每个位置的 FFNN 参数也类似。


之后,每层的激活值为:


LN 的参数始终具有零均值,因此层标准化不会增加或减少任何内容。它确实缩放了激活,但在上面构建的两个 transformer 的情形中,任何激活层都可以按任何正数进行缩放,而不会改变最终决策。

减少交叉熵

此外,在任何转换器中,我们可以在任意 transformer 中使用层归一化来将交叉熵缩小到想要的任意小,这与 Hahn 的引理 5 相反。在 Hahn 的公式中,像层归一化这样的位置相关的函数可以包含在他的 𝑓^act 中,但是 引理假设 𝑓^act 是 Lipschitz 连续的,而 ϵ = 0 的层归一化不是。

命题 2. 对于任何具有层归一化 (ϵ = 0) 并可以识别语言 L 的 transformer 𝑇,对任何 𝜂 > 0 而言,都存在一个可以以最多𝜂为交叉熵的、带有层归一化的识别语言 L 的 transformer。

证明。让𝑑表示原始激活向量中的维数,𝐿是层数。然后添加一个新层,这个层中的自注意力不做任何事情 (W^V,𝐿+1,ℎ = 0),并且 FFNN 是根据原始输出层定义的:


这会导致残差连接除了 2 个维度外的所有维度为零,因此如果𝑠是原始输出 logit,则此新层的输出(层归一化之前)为


现在,如果 ϵ = 0,层归一化将该向量缩放到只具有单位方差,因此它变为:


新的输出层只是简单地选择第一维,并把它拓展到 c 倍。


实验

研究者测试了这一解决方案,它在层归一化时进行了如上修改。上图 2 显示 ϵ > 0 的层归一化提高了交叉熵,但它仍然随着 𝑛 增长并接近 1。

可学习性

在本节中,研究者将转向可学习性的问题,这时克服 Hahn 引理所提出的缺陷的第三种方法。

实验:标准的 transformer

研究者在 PARITY 和 FIRST 上训练 transformer。每个 transformer 都具有与对应的精确解相同的层数和头数以及相同的固定位置编码。与单词编码、自注意力相关的 FFNN 输出的𝑑_model 为 16,而与 FFNN 隐藏层相关的𝑑_FFNN 为 64。残差连接之后使用了层归一化(ϵ = 10^-5)。

实验使用 PyTorch 默认的初始化并使用 Adam (Kingma and Ba, 2015) 进行训练,学习率为 3 × 10^−4 (Karpathy, 2016)。实验没有使用 dropout,因为它似乎没有帮助。
 
FIRST 更容易学习,但坏消息是学习到的 transformer 不能很好地泛化到更长的句子。下图 4(左列)显示,当 transformer 在较短的字符串(𝑛 = 10、30、100、300)上从头开始训练并在较长的字符串(𝑛 = 1000)上进行测试时,准确度并不非常好。事实上,对于𝑛 = 10 上的训练,准确度和随机猜测类似。


长度取对数后拓展的注意力

幸运的是,这个问题很容易通过以 log 𝑛的比例缩放每个注意力层的 logits 来解决,即将注意力重新定义为


然后使用 c = 1 下的针对 FIRST 的 Flawed transformer:


命题 3。对于任何 𝜂 > 0,都存在一个带有如公式 2 所定义的注意力的 transformer,它无论有无层归一化,都可以以最多𝜂的交叉熵来识别 FIRST 语言。

证明。当没有层归一化时,3.3 节中描绘的模型中 c 设为 1,并对注意力的权重进行对数尺度的缩放,它可以将公式(1)中的 s 从公式(1)转化为:


实验:缩放的注意力

下图 4(右栏)的 tranformer 模型使用了 log n 为缩放因子的注意力。

我们可以在稀缺资源英语 - 越南语的机器翻译任务上使用开源 transformer 模型(即 Witwicky)时看到相似的效应(如下表 1 所示)。


当训练集和测试即得长度分布一样得时候,缩放注意力的 logits 没有显著的影响,但如果仅在只有中等甚至更短(小于 20)长度的句子上训练,而测试句子长度大于中等长度(大于 20),缩放注意力则提高了 1 个 BLEU 分数,这在统计上已经很显著了(p 值小于 0.01)。

感兴趣的读者可以阅读论文原文,了解更多研究细节。
理论Transformer
相关数据
激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

词嵌入技术

词嵌入是自然语言处理(NLP)中语言模型与表征学习技术的统称。概念上而言,它是指把一个维数为所有词的数量的高维空间嵌入到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

前馈神经网络技术

前馈神经网络(FNN)是人工智能领域中最早发明的简单人工神经网络类型。在它内部,参数从输入层经过隐含层向输出层单向传播。与递归神经网络不同,在它内部不会构成有向环。FNN由一个输入层、一个(浅层网络)或多个(深层网络,因此叫作深度学习)隐藏层,和一个输出层构成。每个层(除输出层以外)与下一层连接。这种连接是 FNN 架构的关键,具有两个主要特征:加权平均值和激活函数。

层归一化技术

深度神经网络的训练是具有高度的计算复杂性的。减少训练的时间成本的一种方法是对神经元的输入进行规范化处理进而加快网络的收敛速度。层规范化是在训练时和测试时对数据同时进行处理,通过对输入同一层的数据进行汇总,计算平均值和方差,来对每一层的输入数据做规范化处理。层规范化是基于批规范化进行优化得到的。相比较而言,批规范化是对一个神经元输入的数据以mini-batch为单位来进行汇总,计算平均值和方法,再用这个数据对每个训练样例的输入进行规整。层规范化在面对RNN等问题的时候效果更加优越,也不会受到mini-batch选值的影响。

推荐文章
暂无评论
暂无评论~