我需要问一些关于单词嵌入的问题.....可能是基本的。
[0 0 0 1 0]
)转换为嵌入向量E = [0.2, 0.4, 0.2, 0.2]
时....对于结果单词向量中的每个索引是否有任何重要性?例如E[1]
是0.2 ......具体是E[1]
定义的(尽管我知道它基本上是转换到另一个空间)....或者单词向量共同定义上下文但不单独定义... 提前致谢
答案 0 :(得分:2)
1:嵌入向量中的每个元素(或一组元素)都有一些含义,但对于人类来说大多是未知的。根据您使用的算法,单词嵌入向量可能具有不同的含义,但通常很有用。 例如,Glove,类似的单词'frog','toad'在向量空间中彼此靠近。 King - man导致矢量类似于Queen。
将词汇转换为索引。例如,您有一个词汇表: [狗,猫,老鼠,饲料,玩,用] 然后句子:狗玩猫=> 0,4,5,1 同时,你有嵌入矩阵如下
[0.1,0.1,0] #comment:这是狗
[0.2,0.5,0.1]#这是猫
[...]
[...]
[...]
[...]
第一行是嵌入狗的矢量,第二行是猫,然后是等等 然后,在查找后将使用索引(0,4,5,1)成为矩阵[[0.1,0.1,0] [...] [...] [0.2,0.5,0.1]]
更新: 单热矢量不包含任何信息。您可以认为单热矢量是词汇表中该矢量的索引。 例如,Dog => [1,0,0,0,0,0]和cat => [0,1,0,0,0,0]。 one-hot vs index之间有一些不同:
如果你输入一个索引列表:[0,4,5,1]到你的多层感知器,它就无法学习任何东西(我试过......)。但是如果你输入一个矩阵-hot vector [[... 1] [1 ...] [...] [...]],它学到了一些东西。但它在RAM和CPU方面代价高昂。
One-hot需要花费大量内存才能存储零。因此,如果您没有嵌入矩阵,我建议随机初始化嵌入矩阵。将数据集存储为索引,并使用索引查找嵌入向量
“它的意思是查找表只是嵌入向量的矩阵 (已经通过word2vec或...单独训练)每个单词 词汇。而在神经网络的过程中,我们也是 可以使用嵌入层,或者我们可以参考嵌入式矢量 特定嵌入向量的查找表 一热的矢量。“
使用“INDEX”在查找表中查找。将狗变为0,将cat变为1.单热矢量和索引包含相同的信息,但是一次性热量需要更多存储空间。此外,许多deeplearning框架接受索引作为嵌入层的输入(其中,输出是该索引中单词的向量表示。)
“。我们如何获得此嵌入向量......”