我读了这个页面,但我不明白基于以下代码构建的模型之间有什么不同.我知道当dbow_words为0时,doc-vectors的训练更快.
第一个模型
model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4)
Run Code Online (Sandbox Code Playgroud)
第二个模型
model = doc2vec.Doc2Vec(documents1, size = 100, window = 300, min_count = 10, workers=4,dbow_words=1)
Run Code Online (Sandbox Code Playgroud)
该dbow_words参数仅在训练DBOW模型时有效 - 即使用非默认dm=0参数.
因此,在两个代码行之间,两个都dm=1保持默认值不变,没有区别.
如果您改为切换到DBOW训练,dm=0然后使用默认dbow_words=0设置,模型是纯PV-DBOW,如原始"段落矢量"论文中所述.训练Doc向量以预测文本示例单词,但不训练单词向量.(在模型中仍然会有一些随机初始化的单词向量,但在训练期间它们不会被使用或改进.)这种模式很快并且仍能很好地工作.
如果添加dbow_words=1设置,则将以交错的方式将skip-gram字矢量训练添加到训练中.(对于每个文本示例,整个文本上的doc-vectors,然后是每个滑动上下文窗口上的字向量,都将被训练.)因为这会增加更多的训练示例,作为window参数的函数,它将显着变慢.(例如,window=5添加单词训练将使训练速度减慢约5倍.)
这样做的好处是可以将DBOW doc-vectors和单词向量放入"相同的空间" - 也许可以通过它们与单词的接近程度来解释doc-vectors.
这种混合训练可以作为一种语料库扩展 - 将每个上下文窗口转换为迷你文档 - 这有助于提高生成的doc-vector嵌入的表现力.(虽然,特别是对于足够大和多样化的文档集,可能值得与纯DBOW进行比较,并且传递更多.)
| 归档时间: |
|
| 查看次数: |
3078 次 |
| 最近记录: |