2024-04-20 13:45:28 发布
网友
我试图实现doc2vec,但是我不确定如果我预先训练了word2vec向量,模型的输入应该是什么样子。在
问题是,我不知道理论上如何将预训练的word2vec向量用于doc2vec。我想象,我可以用向量预先填充隐藏层,其余隐藏层填充随机数
另一个想法是使用向量作为word的输入,而不是一个热编码,但是我不确定docs的输出向量是否有意义。在
谢谢你的回答!在
您可能认为Doc2Vec(又称Mikolov/Le的“段落向量”算法)需要单词向量作为第一步。这是一个共同的信念,也许有些直觉,通过类比人类如何学习一种新的语言:先理解较小的单位,然后再从较小的单位中组合出大的含义。在
Doc2Vec
但这是一个常见的误解,Doc2Vec并不能做到这一点。在
一种模式,纯PV-DBOW(gensim中的dm=0)根本不使用传统的每字输入向量。而且,这种模式通常是最快的训练和最好的表现之一。在
dm=0
另一种模式,PV-DM(gensim中的dm=1)确实利用了相邻的词向量,与doc向量结合起来,就像word2vec的CBOW模式一样,但是它需要的任何词向量都将与doc向量同时训练。他们是在一个单独的步骤中第一次训练的,所以你不可能很容易地从别处提供单词向量。在
dm=1
(您可以将skip-gram单词训练混合到PV-DBOW中,在gensim中使用dbow_words=1,但这将在一个交叉的、共享的模型过程中从头开始训练单词向量。)
dbow_words=1
从某种程度上来说,你可以用其他地方的词向量来预先设定一个模型,但这并不一定会改善结果:它很容易使它们的质量偏离正轨或更糟。在一些幸运的管理良好的情况下,它可能会加快模型收敛速度,或者是一种加强向量空间与早期向量集的兼容性的方法,但这并不是没有额外的陷阱和警告,即不是原始算法的一部分,或是描述良好的实践。在
您可能认为
Doc2Vec
(又称Mikolov/Le的“段落向量”算法)需要单词向量作为第一步。这是一个共同的信念,也许有些直觉,通过类比人类如何学习一种新的语言:先理解较小的单位,然后再从较小的单位中组合出大的含义。在但这是一个常见的误解,
Doc2Vec
并不能做到这一点。在一种模式,纯PV-DBOW(gensim中的
dm=0
)根本不使用传统的每字输入向量。而且,这种模式通常是最快的训练和最好的表现之一。在另一种模式,PV-DM(gensim中的
dm=1
)确实利用了相邻的词向量,与doc向量结合起来,就像word2vec的CBOW模式一样,但是它需要的任何词向量都将与doc向量同时训练。他们是在一个单独的步骤中第一次训练的,所以你不可能很容易地从别处提供单词向量。在(您可以将skip-gram单词训练混合到PV-DBOW中,在gensim中使用
dbow_words=1
,但这将在一个交叉的、共享的模型过程中从头开始训练单词向量。)从某种程度上来说,你可以用其他地方的词向量来预先设定一个模型,但这并不一定会改善结果:它很容易使它们的质量偏离正轨或更糟。在一些幸运的管理良好的情况下,它可能会加快模型收敛速度,或者是一种加强向量空间与早期向量集的兼容性的方法,但这并不是没有额外的陷阱和警告,即不是原始算法的一部分,或是描述良好的实践。在
相关问题 更多 >
编程相关推荐