Machine learning 用于开发编码器-解码器模型的nn.embedding是如何工作的?

Machine learning 用于开发编码器-解码器模型的nn.embedding是如何工作的?,machine-learning,pytorch,attention-model,seq2seq,encoder-decoder,Machine Learning,Pytorch,Attention Model,Seq2seq,Encoder Decoder,在中,它将介绍如何使用pytorch开发一个简单的编码器-解码器模型。 但是,在编码器或解码器中,定义了self.embedding=nn.embedding(输入大小、隐藏大小)(或类似)。在中,nn.Embedding被定义为“存储固定字典和大小的嵌入的简单查找表” 所以我很困惑,在初始化过程中,这个查找表是从哪里来的?它是否初始化索引的一些随机嵌入,然后对它们进行训练?编码器/解码器部分真的有必要吗? 提前感谢。首先回答最后一点:是的,我们确实需要嵌入或类似的东西。至少在处理离散输入时(例

在中,它将介绍如何使用pytorch开发一个简单的编码器-解码器模型。 但是,在编码器或解码器中,定义了
self.embedding=nn.embedding(输入大小、隐藏大小)
(或类似)。在中,nn.Embedding被定义为“存储固定字典和大小的嵌入的简单查找表” 所以我很困惑,在初始化过程中,这个查找表是从哪里来的?它是否初始化索引的一些随机嵌入,然后对它们进行训练?编码器/解码器部分真的有必要吗?
提前感谢。

首先回答最后一点:是的,我们确实需要
嵌入
或类似的东西。至少在处理离散输入时(例如,一种语言的字母或单词),因为这些标记被编码为整数(例如“a”->1、“b”->2等),但这些数字没有意义:字母“b”不是“像“a”,而是更多”,这是其原始编码所暗示的。因此,我们提供了
嵌入
,这样网络就可以学习如何通过一些有用的东西来表示这些字母,例如,使元音在某种程度上彼此相似

在初始化过程中,嵌入向量以与模型中其他权重相同的方式随机采样,并与模型的其余部分一起进行优化。也可以通过一些预训练的嵌入(例如word2vec、Glove、FastText)对其进行初始化,但必须注意不要通过随机初始化的模型通过backprop破坏它们



嵌入并非绝对必要,但强迫网络了解13314(“项目”)与89137(“价值”)非常相似,但与13315(“日本”)完全不同,这将是非常浪费的。而且它可能根本不会收敛。

非常感谢您的回答。现在我明白了。