【发布时间】:2016-04-21 14:24:59
【问题描述】:
我正在做一个小实验,我有 2000 条推文作为我的输入文档。我在这个输入推文上训练 word2vec,然后找到与特定词最相似的前 10 个词 - w1。
我担心的是,如果我运行 word2vec 10 次(使用相同的参数)并检查与 w1 最相似的前 10 个单词,会得到相同的单词集(权重也相同)。
现在 AFAIK word2vec 在开始时初始化随机权重,为什么它在不同的运行中给我相同的输出?
【问题讨论】:
我正在做一个小实验,我有 2000 条推文作为我的输入文档。我在这个输入推文上训练 word2vec,然后找到与特定词最相似的前 10 个词 - w1。
我担心的是,如果我运行 word2vec 10 次(使用相同的参数)并检查与 w1 最相似的前 10 个单词,会得到相同的单词集(权重也相同)。
现在 AFAIK word2vec 在开始时初始化随机权重,为什么它在不同的运行中给我相同的输出?
【问题讨论】:
gensim 的 word2vec 的默认 seed 设置为 1,如 documentation 中所述。对于不同的输出,尝试改变种子变量
from gensim.models.word2vec import Word2Vec
sentences = ['a quick brown fox jumps over a dog'.split()]
model = Word2Vec(sentences, min_count=1, size=5, seed=1)
print model['fox']
Out: array([ 0.0629408 , 0.07386301, -0.00788937, -0.09287976, 0.05859811], dtype=float32)
model = Word2Vec(sentences, min_count=1, size=5, seed=2)
print model['fox']
Out: array([-0.05617044, 0.00294411, -0.09557492, 0.02923537, -0.08322554], dtype=float32)
【讨论】: