doc2vec DBOW 中的词向量如何与段落向量共同训练?
How are word vectors co-trained with paragraph vectors in doc2vec DBOW?
我完全不明白在 DBOW 模式 (dm=0
) 中使用 gensim 的 doc2vec 训练过程中词向量是如何参与的。我知道默认情况下禁用 dbow_words=0
。但是当我们将 dbow_words
设置为 1 时会发生什么?
在我对DBOW的理解中,上下文词是直接从段落向量中预测出来的。所以模型的唯一参数是 N
p
维段落向量加上分类器的参数。
但多个消息来源暗示,在 DBOW 模式下可以共同训练单词和文档向量。例如:
- An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation第 5 节
- 这个 SO 答案:How to use Gensim doc2vec with pre-trained word vectors?
那么,这是怎么做到的? 任何澄清将不胜感激!
注意:对于DM,段落向量averaged/concatenated与预测目标词的词向量。在那种情况下,很明显词向量是与文档向量同时训练的。并且有 N*p + M*q + classifier
个参数(其中 M
是词汇大小,q
词向量 space 暗淡)。
如果设置 dbow_words=1
,则将 skip-gram 词向量训练添加到训练循环中,与正常的 PV-DBOW 训练交错。
因此,对于文本中的给定目标词,首先(单独)使用候选文档向量来尝试预测该词,然后对模型和文档向量进行反向传播调整。然后,分别使用一堆周围的单词,一次一个,以 skip-gram 的方式尝试预测同一个目标单词——并进行后续调整。
然后,文本中的下一个目标词得到相同的PV-DBOW加上skip-gram处理,依此类推。
由此产生的一些逻辑结果:
训练时间比普通 PV-DBOW 长 - 大约等于 window
参数的一个因数
word-vectors 总体上比 doc-vectors 获得更多的训练注意力,同样是一个等于 window
参数
的因子
我完全不明白在 DBOW 模式 (dm=0
) 中使用 gensim 的 doc2vec 训练过程中词向量是如何参与的。我知道默认情况下禁用 dbow_words=0
。但是当我们将 dbow_words
设置为 1 时会发生什么?
在我对DBOW的理解中,上下文词是直接从段落向量中预测出来的。所以模型的唯一参数是 N
p
维段落向量加上分类器的参数。
但多个消息来源暗示,在 DBOW 模式下可以共同训练单词和文档向量。例如:
- An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation第 5 节
- 这个 SO 答案:How to use Gensim doc2vec with pre-trained word vectors?
那么,这是怎么做到的? 任何澄清将不胜感激!
注意:对于DM,段落向量averaged/concatenated与预测目标词的词向量。在那种情况下,很明显词向量是与文档向量同时训练的。并且有 N*p + M*q + classifier
个参数(其中 M
是词汇大小,q
词向量 space 暗淡)。
如果设置 dbow_words=1
,则将 skip-gram 词向量训练添加到训练循环中,与正常的 PV-DBOW 训练交错。
因此,对于文本中的给定目标词,首先(单独)使用候选文档向量来尝试预测该词,然后对模型和文档向量进行反向传播调整。然后,分别使用一堆周围的单词,一次一个,以 skip-gram 的方式尝试预测同一个目标单词——并进行后续调整。
然后,文本中的下一个目标词得到相同的PV-DBOW加上skip-gram处理,依此类推。
由此产生的一些逻辑结果:
训练时间比普通 PV-DBOW 长 - 大约等于
window
参数的一个因数word-vectors 总体上比 doc-vectors 获得更多的训练注意力,同样是一个等于
window
参数 的因子