我不明白嵌入纸卷轴序列到序列学习中的位置,任何人都可以帮助我吗?
答案 0 :(得分:2)
根据我的理解,对于要翻译的每个单词,输入包含单词本身及其在输入链中的位置(例如,0,1,... m)。
现在,仅使用具有值pos(在0..m中)的单元格来编码这样的数据将不会很好地执行(出于同样的原因,我们使用单热矢量来编码单词)。因此,基本上,位置将被编码在多个输入单元格中,具有单热表示(或者类似,我可能会想到正在使用的位置的二进制表示)。
然后,将使用嵌入层(就像它用于字编码一样)将这种稀疏和离散表示转换为连续表示。
本文中使用的表示选择了单词嵌入和位置嵌入的相同维度,并简单地总结了两者。
答案 1 :(得分:0)
根据我的看法,位置嵌入仍然是为单热矢量构建低维表示的过程。而这次单热矢量的维度是句子的长度。 BTY,我认为将“一个热门”置于位置顺序是否真的无关紧要。它只是给模型一种“位置意识”的感觉。
答案 2 :(得分:0)
据我所知,到目前为止,句子中的每个单词都有2个向量:
这两个矢量现在分别作为输入传递,它们将输入嵌入到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中使用。