卷积序列中嵌入序列学习模型的位置是什么?

时间:2017-06-18 11:43:10

标签: deep-learning

我不明白嵌入纸卷轴序列到序列学习中的位置,任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:2)

根据我的理解,对于要翻译的每个单词,输入包含单词本身及其在输入链中的位置(例如,0,1,... m)。

现在,仅使用具有值pos(在0..m中)的单元格来编码这样的数据将不会很好地执行(出于同样的原因,我们使用单热矢量来编码单词)。因此,基本上,位置将被编码在多个输入单元格中,具有单热表示(或者类似,我可能会想到正在使用的位置的二进制表示)。

然后,将使用嵌入层(就像它用于字编码一样)将这种稀疏和离散表示转换为连续表示。

本文中使用的表示选择了单词嵌入和位置嵌入的相同维度,并简单地总结了两者。

答案 1 :(得分:0)

根据我的看法,位置嵌入仍然是为单热矢量构建低维表示的过程。而这次单热矢量的维度是句子的长度。 BTY,我认为将“一个热门”置于位置顺序是否真的无关紧要。它只是给模型一种“位置意识”的感觉。

答案 2 :(得分:0)

据我所知,到目前为止,句子中的每个单词都有2个向量:

  1. 一个热编码向量来编码单词。
  2. 一个热编码矢量,用于编码句子中单词的位置。
  3. 这两个矢量现在分别作为输入传递,它们将输入嵌入到f维空间中。一旦他们从两个输入激活值∈R^ f。他们只是添加这些激活以获得组合的输入元素表示。

答案 3 :(得分:0)

我认为khaemuaset的答案是正确的。

强化:正如我从论文中所理解的那样(我正在阅读A Convolutional Encoder Model for Machine Translation)和相应的Facebook AI Research PyTorch源代码,位置嵌入是一个典型的嵌入表,但对于seq位置一热矢量而不是词汇单热矢量。我使用源代码here验证了这一点。请注意nn.Embedding的继承以及第32行对forward方法的调用。

我链接的类在FConvEncoder here中使用。

相关问题