小编New*_*ton的帖子

Transformer 模型中自注意力的计算复杂性

我最近浏览了Google Research的Transformer论文,其中描述了自注意力层如何完全取代传统的基于 RNN 的序列编码层进行机器翻译。在论文的表 1 中,作者比较了不同序列编码层的计算复杂度,并指出(稍后)当序列长度n小于向量表示的维数时,自注意力层比 RNN 层快d

然而,如果我对计算的理解是正确的,自我注意层的复杂性似乎比声称的要低。让我们X成为自注意力层的输入。然后,X将具有形状,(n, d)因为n每个维度都有词向量(对应于行)d。计算自注意力的输出需要以下步骤(为了简单起见,考虑单头自注意力):

  1. 线性变换 的行X以计算 query Q、 keyK和 valueV矩阵,每个矩阵都具有 shape (n, d)。这是通过后乘以X3 个学习的形状矩阵(d, d)来实现的,计算复杂度为O(n d^2)
  2. 计算层输出,在论文的公式 1 中指定为SoftMax(Q Kt / sqrt(d)) V,其中在每一行上计算 softmax。计算Q Kt具有复杂性O(n^2 d),将结果与后乘V也具有复杂性O(n^2 d)

因此,该层的总复杂度为O(n^2 d + n d^2),比传统的 …

nlp artificial-intelligence machine-learning neural-network deep-learning

12
推荐指数
2
解决办法
3396
查看次数