Transformer在语言建模中是否需要位置编码?

Is positional encoding necessary for transformer in language modeling?

我正在开发类似 https://pytorch.org/tutorials/beginner/transformer_tutorial.html 的语言模型。

我不清楚 - 这里是否需要位置编码? 据我了解 - 语言翻译任务是必要的,因为解码器应该能够将来自先前输出的单词定位在编码器的序列中。 但是在没有解码器的语言建模中是否有必要?

编码器输出中的单词是否可能被打乱?

编辑:

原论文中没有解释。我没有在教程中找到解释(比如这里https://kazemnejad.com/blog/transformer_architecture_positional_encoding/)。

我不明白这个:

"As each word in a sentence simultaneously flows through the Transformer’s encoder/decoder stack, The model itself doesn’t have any sense of position/order for each word."

从我的角度来看 - transformer 编码器具有有关顺序的信息,因为它的输入是一个有序序列(类似于 RNN)。

我试图从模型中删除位置编码。它有效,但性能较差。

在RNN中加入这样的位置编码有用吗?它可以提高性能吗?

该研究小组声称不需要位置编码:https://arxiv.org/abs/1905.04226

我看了下面的视频, https://www.youtube.com/watch?v=S27pHKBEp30 其中,他在关于 16:00 的时间戳中说,没有位置编码注意机制只是 'Bag of Words'.

取自https://jalammar.github.io/illustrated-transformer/

改变单词的顺序,将置换 V 的行的顺序,但也会置换相关矩阵 Q x transpose(K) 的列的顺序。因此,结果输出将保持不变,并且位置信息将在第一个自注意层之后丢失。

为了解决这个问题,您将位置编码到每个单词的嵌入中,这样神经网络就可以学习采用两个嵌入并知道它们相距多远,无论它们的输入顺序如何。

来自声称 positional encoding is not necessary 的摘要:

The positional encoding is an essential augmentation for the self-attention mechanism which is invariant to sequence ordering.