📜  分解密集合成器

📅  最后修改于: 2022-05-13 01:58:08.165000             🧑  作者: Mango

分解密集合成器

Transformer 模型在各种不同的 NLP 任务中取得了巨大的成功。这导致变压器在很大程度上取代了许多最先进架构中以前的自回归循环神经网络架构。在这个转换器的核心,该架构使用了一种称为 Query-Key 点积注意力的方法。这种transformer架构的成功主要归功于self-attention机制。

分解随机密集合成器是一种注意力模型,它在 Google Research 的论文“SYNTHESIZER: RETHINKING SELF-ATTENTION FOR TRANSFORMER MODELS”中提出。这背后的动机是通过提出点积自注意力的替代方案来降低架构操作的时间复杂度。

自注意力架构

Transformer 架构中点积自注意力的唯一重要性是自对齐,即计算单个令牌相对于序列中所有其他令牌的相对重要性。本文提出了一种合成器,一种学习自对齐矩阵而不是手动计算它的模型。因此,进行自对齐不仅没有点积自注意力,而且还完全消除了基于内容的类似记忆的自注意力。

建筑学:

作者在论文中提供了四种类型的 Synthesizer 模型,其中一半是分解模型。

  • 密集合成器
  • 随机合成器
  • 分解模型密集合成器
  • 分解模型随机合成器

在本文中,我们将讨论密集合成器及其分解模型。



密集合成器架构

密集合成器

密集合成器对每个输入进行模型调节。这接受输入 X ∈ R l*d并产生输出 Y 使得 Y ∈ R l*d ,其中 l 指序列长度,d 指维向量。现在,我们使用称为 F(x) 的参数函数将 d 维的输入 X i投影到l维。

B_i = F(X_i)

其中 F(x) 是一个投影操作,可以定义为:

F(x) = W_2(\sigma_R (W_1(X)  +b)) + b

其中,\sigma_R 是 ReLU 激活函数,W_1 ∈ R d*d和 W_2 ∈ R d*l 。现在B的定义域变成了 R l*l 。现在,我们可以通过以下关系计算 Y:

Y= softmax(B)G(X)

其中 G 是另一个参数化函数,类似于 Transformer 架构中 self-attention 中的 V(value)。这种方法通过用参数化函数F 替换QK T来消除 Key-Query 的点积。

分解密集合成器

上面定义的 Dense synthesizer 给模型增加了d*l的开销,即使去除了点积并保存了一些参数,当 l 很大时,上面的模型训练模型也会很麻烦。为了解决这个挑战,作者提出了另一种称为 Factorized Dense Synthesizer 的模型。在这个模型中,他们只是对模型的输出进行分解,然后进行训练。它稍微减少了参数的数量,也防止了过度拟合。可以表示如下:



A, B = F_A (X_i), F_B (X_i)

其中,F A将输入 X i 投影一个维度,而 F B将 Xi 投影到b维度,例如a*b = l。分解模型的输出可以从以下等式导出:

Y = softmax (C)G(X)

其中,C = H A (A)* H B (B),其中 H A和 H B是平铺函数,它简单地将向量复制k次,即 l -> l*k。在这种情况下,HA 进行 R a -> R a*b的投影,而 H B是 R b -> R b*a的投影。

合成器的混合物

我们可以以附加的方式组合所有提出的合成注意力变体。这个表达式是:

Y = softmax(a_1 S_{1}(X) + a_2 S_{2}(X).... a_N S_N(X))

其中S是参数化函数, a是参数使得 \sum a =1 是可训练的权重。

在混合随机分解和标准密集合成的情况下,表达式变为:

Y = softmax(a_1 R_1 R_2^{T} + a_2 F(X))G(X)

时间复杂度:

Self-attention 的时间复杂度为 \theta = 2d^{2} 而对于 Dense Synthesizer,时间复杂度变为 \theta(\theta(d^{2] +d*l) 和分解的密集合成器,时间复杂度为是 \theta (d(d+ k_1 + k_2)). 其中 l 是指序列长度,d 是模型的维度 & k 1 ,k 2是因式分解。

参考:

  • 合成器:重新思考变压器模型的自我关注