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

And*_*rey 6 transformer-model language-model

我正在开发一个语言模型,例如https://pytorch.org/tutorials/beginner/transformer_tutorial.html的语言模型。

\n\n

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

\n\n

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

\n\n

编辑:

\n\n

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

\n\n

我不明白这一点:

\n\n

“由于句子中的每个单词同时流经 Transformer\xe2\x80\x99s 编码器/解码器堆栈,因此模型本身\xe2\x80\x99t 对每个单词没有任何位置/顺序感。”

\n\n

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

\n\n

我尝试从模型中删除位置编码。它可以工作,但性能较差。

\n\n

将这种位置编码添加到 RNN 中有用吗?它可以提高其性能吗?

\n

Yar*_*tov 11

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

  • 请注意,这是关于解码器变压器而不是编码器变压器。 (3认同)