首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >doc2vec.infer_vector是如何跨单词结合的?

doc2vec.infer_vector是如何跨单词结合的?
EN

Stack Overflow用户
提问于 2017-05-24 16:24:45
回答 1查看 609关注 0票数 1

我用火车(..)训练了一个doc2vec模型默认设置。这是可行的,但现在我想知道infer_vector是如何跨输入单词组合的,这仅仅是单个单词向量的平均值吗?

代码语言:javascript
复制
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

这些都不符合,所以我想知道我有什么误会。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-24 17:16:06

infer_vector()不为给定的令牌组合向量,而且在某些模式下根本不考虑这些令牌的向量。

相反,它认为整个Doc2Vec模型是针对内部更改而冻结的,然后假设您提供的令牌是一个示例文本,带有以前未经过训练的标记。让我们把这称为暗含但未命名的标签X。

使用类似训练的过程,它试图为X找到一个很好的向量,也就是说,它从一个随机向量开始(就像对原始训练中的所有标记一样),然后查看该向量作为模型输入对文本单词的预测能力(通过检查模型神经网络对输入X的预测)。然后,通过渐变梯度下降,使X的候选向量更好地预测文本的单词。

经过足够的推理训练后,向量将尽可能好地预测文本的单词(给定冻结模型的其余部分)。因此,即使您提供该文本作为方法的“输入”,在模型中,您提供的是用于选择优化算法的目标“输出”。

请注意:

  • 微小的例子(比如一个或几个单词)不太可能给出非常有意义的结果--它们是锋利的边角情况,而这些密集的嵌入表示的本质价值通常来自于许多字的影响的边缘平衡。
  • 这可能有助于进行比infer_vector()默认steps=5更多的训练--推理周期--有些人报告说,有几十个或数百个steps最适合他们,而且对于短文本使用更多的steps可能特别有价值。
  • 它还可能有助于使用起始alpha进行推理,更像批量训练(alpha=0.025)中使用的推理,而不是infer_vector()默认值(alpha=0.1)。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44163836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档