当 dbow_words 设置为 1 或 0 时,doc2vec 模型之间有什么不同?
What is different between doc2vec models when the dbow_words is set to 1 or 0?
我读了这个 page 但我不明白基于以下代码构建的模型之间有什么不同。
我知道当 dbow_words 为 0 时,文档向量的训练速度更快。
第一个模型
model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4)
第二个模型
model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4,dbow_words=1)
dbow_words
参数只在训练DBOW模型时有效-
也就是说,使用非默认 dm=0
参数。
因此,在您的两行示例代码中,都保留默认 dm=1
值不变,没有区别。
如果改为切换到 DBOW 训练,dm=0
,则使用默认 dbow_words=0
设置,模型是原始 'Paragraph Vectors' 论文中描述的纯 PV-DBOW。 Doc-vectors 被训练来预测文本示例单词,但是 no 单词向量被训练。 (模型中仍然会有一些随机初始化的词向量,但在训练过程中不会使用或改进它们。)这种模式速度很快,而且效果很好。
如果添加 dbow_words=1
设置,则 skip-gram 词向量训练将以交错方式添加到训练中。 (对于每个文本示例,整个文本的文档向量,然后每个滑动上下文 window 上的词向量都将被训练。)因为这增加了更多的训练示例,作为 window
参数,它会明显变慢。 (例如,对于 window=5
,添加单词训练会使训练速度降低大约 5 倍。)
这有利于将 DBOW 文档向量和词向量都放入 "same space" - 可能使文档向量更接近单词,因此更易于解释。
这种混合训练可以作为一种语料库扩展——将每个上下文window变成一个迷你文档——这有助于提高生成的文档向量嵌入的表现力。 (尽管如此,尤其是对于足够大和多样化的文档集,与具有更多遍数的纯 DBOW 进行比较可能是值得的。)
我读了这个 page 但我不明白基于以下代码构建的模型之间有什么不同。 我知道当 dbow_words 为 0 时,文档向量的训练速度更快。
第一个模型
model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4)
第二个模型
model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4,dbow_words=1)
dbow_words
参数只在训练DBOW模型时有效-
也就是说,使用非默认 dm=0
参数。
因此,在您的两行示例代码中,都保留默认 dm=1
值不变,没有区别。
如果改为切换到 DBOW 训练,dm=0
,则使用默认 dbow_words=0
设置,模型是原始 'Paragraph Vectors' 论文中描述的纯 PV-DBOW。 Doc-vectors 被训练来预测文本示例单词,但是 no 单词向量被训练。 (模型中仍然会有一些随机初始化的词向量,但在训练过程中不会使用或改进它们。)这种模式速度很快,而且效果很好。
如果添加 dbow_words=1
设置,则 skip-gram 词向量训练将以交错方式添加到训练中。 (对于每个文本示例,整个文本的文档向量,然后每个滑动上下文 window 上的词向量都将被训练。)因为这增加了更多的训练示例,作为 window
参数,它会明显变慢。 (例如,对于 window=5
,添加单词训练会使训练速度降低大约 5 倍。)
这有利于将 DBOW 文档向量和词向量都放入 "same space" - 可能使文档向量更接近单词,因此更易于解释。
这种混合训练可以作为一种语料库扩展——将每个上下文window变成一个迷你文档——这有助于提高生成的文档向量嵌入的表现力。 (尽管如此,尤其是对于足够大和多样化的文档集,与具有更多遍数的纯 DBOW 进行比较可能是值得的。)