该dbow_words
参数仅在训练 DBOW 模型时有效——即使用非默认dm=0
参数。
因此,在您的两个示例代码行之间,它们都保持默认dm=1
值不变,没有区别。
如果您改为切换到 DBOW 训练,dm=0
则使用默认dbow_words=0
设置,模型是纯 PV-DBOW,如原始“段落向量”论文中所述。训练文档向量以预测文本示例词,但没有训练词向量。(模型中仍然会有一些随机初始化的词向量,但在训练过程中没有使用或改进它们。)这种模式速度很快,而且效果很好。
如果您添加dbow_words=1
设置,那么skip-gram 词向量训练将以交错的方式添加到训练中。(对于每个文本示例,将训练整个文本上的文档向量,然后是每个滑动上下文窗口上的词向量。)由于这增加了更多的训练示例,作为window
参数的函数,它会显着变慢。(例如,使用window=5
,添加单词训练将使训练速度慢 5 倍。)
这样做的好处是将 DBOW 文档向量和词向量放在“相同的空间”中——也许通过它们与词的接近程度使文档向量更易于解释。
这种混合训练可以作为一种语料库扩展——将每个上下文窗口变成一个迷你文档——这有助于提高生成的文档向量嵌入的表达能力。(尽管如此,特别是对于足够大和多样化的文档集,它可能值得与具有更多通道的纯 DBOW 进行比较。)