位置编码与变压器模型中的一种热编码相比有什么优势?

数据挖掘 机器学习 nlp 编码 注意机制
2022-02-14 07:55:48

我正在尝试阅读和理解论文Attention is all you need,在其中,他们将位置编码与 sin 用于偶数索引,将 cos 用于奇数索引。

在论文(第 3.5 节)中,他们提到

由于我们的模型不包含递归和卷积,为了让模型利用序列的顺序,我们必须注入一些关于序列中标记的相对或绝对位置的信息。为此,我们在编码器和解码器堆栈底部的输入嵌入中添加“位置编码”。

我的问题是,如果没有复发,为什么不使用 One Hot Encoding。使用正弦位置编码有什么好处?

2个回答

理论上的优势应该是网络应该能够从编码中掌握模式,从而更好地泛化更长的句子。使用 one-hot 位置编码,您将比后期位置的嵌入更可靠地学习较早位置的嵌入。

另一方面,关于Convolutional Sequence to Sequence Learning的论文在 Transformer 使用 one-hot 编码和学习嵌入的位置之前不久发表,它似乎在那里没有任何危害。

您在同一个问题中混合了两个不同的概念:

  • 一种热编码:编码方法n通过有一个离散令牌n- 除一个 1 外全为 0 的维向量。这可用于在具有离散输入的网络中对它们自身的标记进行编码,但前提是n不是很大,因为所需的内存量非常大。Transformers(和大多数其他 NLP 神经模型)使用嵌入,而不是 one-hot 编码。使用嵌入,你有一个表n条目,每个条目都是维度向量e. 为了代表tokenk, 你选择k嵌入表中的第一个条目。嵌入与任务中的其余网络一起训练。
  • 位置编码:在 LSTM 和 GRU 等循环网络中,网络按顺序处理输入,一个接一个令牌。位置的隐藏状态t+1取决于位置的隐藏状态t. 这样,网络就有了通过积累信息来识别每个令牌的相对位置的方法。但是,在 Transformer 中,没有内置的令牌序列概念。位置编码是解决此问题的方法:您保留一个带有向量的单独嵌入表。您不使用令牌来索引表,而是使用令牌的位置。这样,位置嵌入表比令牌嵌入表小得多,通常包含几百个条目。对于序列中的每个标记,第一个注意层的输入是通过将标记嵌入条目和位置嵌入条目相加来计算的。位置嵌入既可以使用网络的其余部分进行训练(就像令牌嵌入一样),也可以通过来自的正弦公式预先计算(Vaswani 等人,2017 年)具有预先计算的位置嵌入会导致较少的可训练参数,而不会损失结果质量。

因此,任何人都没有优势,因为它们用于正交目的。