gpt4 book ai didi

python - doc2vec.infer_vector 如何跨单词组合?

转载 作者:行者123 更新时间:2023-12-01 02:56:43 24 4
gpt4 key购买 nike

我使用默认设置的 train(..) 训练了一个 doc2vec 模型。这有效,但现在我想知道 infer_vector 如何组合输入单词,它只是单个单词向量的平均值吗?

model.random.seed(0)
model.infer_vector(['cat', 'hat'])
model.random.seed(0)
model.infer_vector(['cat'])
model.infer_vector(['hat']) #doesn't average up to the ['cat', 'hat'] vector
model.random.seed(0)
model.infer_vector(['hat'])
model.infer_vector(['cat']) #doesn't average up to the ['cat', 'hat'] vector

这些不相符,所以我想知道我误解了什么。

最佳答案

infer_vector() 不会组合给定标记的向量 - 并且在某些模式下根本不考虑这些标记的向量。

相反,它认为整个 Doc2Vec 模型被卡住以防止内部更改,然后假设您提供的标记是示例文本,带有之前未经训练的标签。我们将这个隐含但未命名的标签称为X

使用类似训练的过程,它尝试为X找到一个好的向量。也就是说,它从一个随机向量开始(就像在原始训练中对所有标签所做的那样),然后查看该向量作为模型输入预测文本单词的效果如何(通过检查模型神经网络对输入 X 的预测) )。然后,通过增量梯度下降,它使 X 的候选向量能够越来越好地预测文本的单词。

经过足够多的此类推理训练后,向量在预测文本单词方面将尽可能好(考虑到卡住模型的其余部分)。因此,即使您提供该文本作为方法的“输入”,在模型内部,您提供的内容也用于选择算法的目标“输出”以进行优化。

请注意:

  • 微小的例子(比如一个或几个单词)不太可能给出非常有意义的结果——它们是尖锐的极端情况,而这些密集嵌入表示的本质值(value)通常来自于许多的边际平衡词语影响
  • infer_vector() 默认 steps=5 相比,它可能有助于执行更多的训练推理周期 - 有些报告报告了数十或数百个 步骤 最适合他们,对短文本使用更多步骤可能特别有值(value)
  • 它还可能有助于使用起始 alpha 进行推理,更像是批量训练中使用的 (alpha=0.025),而不是 infer_vector() 默认 (alpha=0.1)

关于python - doc2vec.infer_vector 如何跨单词组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44163836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com