3 python nlp gensim word2vec doc2vec
我目前的doc2vec代码如下.
# Train doc2vec model
model = doc2vec.Doc2Vec(docs, size = 100, window = 300, min_count = 1, workers = 4, iter = 20)
Run Code Online (Sandbox Code Playgroud)
我也有一个word2vec代码如下.
# Train word2vec model
model = word2vec.Word2Vec(sentences, size=300, sample = 1e-3, sg=1, iter = 20)
Run Code Online (Sandbox Code Playgroud)
我很感兴趣,同时使用DM和DBOW在doc2vec两者跳过克和CBOW在word2vec.
在Gensim中,我找到了下面提到的句子: "通过word2vec的"skip-gram和CBOW模型",使用分层softmax或负抽样,生成具有深度学习的单词向量"
因此,我很困惑使用分层softmax或负抽样.请告诉我这两种方法有什么不同.
另外,我有兴趣知道在dm,DBOW,Skip-gram和CBOW方面需要改变哪些参数才能使用分层softmax和/或负采样?
我的应用程序是一个推荐系统:)
goj*_*omo 11
Skip-gram或CBOW是为神经网络选择输入上下文的不同方法.Skip-gram选择一个附近的单词,然后将其作为输入提供,以尝试预测目标单词; CBOW将一堆附近的单词平均在一起,然后提供该平均值作为输入以尝试预测目标单词.
DBOW与skip-gram最相似,因为整个文本的单个段落向量用于预测单个目标词,无论距离如何且没有任何平均值.它可以与同步跳过式训练混合使用,其中除了使用单个段落向量之外,还使用单独的附近单词向量.gensim选项dbow_words=1将为DBOW dm=0训练添加skip-gram 训练.
DM与CBOW最相似:段落矢量与许多周围的单词一起被平均以试图预测目标单词.
因此在Word2Vec中,您必须在skip-gram(sg=1)和CBOW(sg=0)之间进行选择- 它们不能混合使用.在Doc2Vec中,您必须在DBOW(dm=0)和DM(dm=1)之间进行选择- 它们不能混合使用.但是,当你做Doc2Vec DBOW时,你也可以添加skip-gram单词训练(带dbow_words=1).
hierarchy-softmax和negative-sampling之间的选择是独立的,与上述选择无关.它确定如何从神经网络中读取目标词预测.
通过负采样,每个可能的预测被分配给网络的单个输出节点.为了改进特定输入上下文创建的预测,它检查输出节点中的"正确"单词(当前训练示例语料库摘录)和N个其他"错误"单词(不匹配)目前的训练例子).然后它调整网络的内部权重和输入向量,使"正确的"字输出节点激活更强一些,并且N'错误的'字输出节点激活稍微弱一些.(这被称为'稀疏'方法,因为它避免了必须计算每个输出节点,这在大型词汇表中非常昂贵,而只是计算N + 1个节点而忽略其余节点.)
您可以使用参数negative=2(在Word2Vec或Doc2Vec中,使用任何类型的输入上下文模式)使用2个负示例设置负采样.默认模式(如果未negative指定)negative=5遵循原始Google word2vec.c代码中的默认模式.
对于hierarchical-softmax,而不是每个具有其自己的输出节点的可预测单词,多个输出节点激活的某种模式被解释为表示特定单词.为了表示单词,哪个节点应该更接近1.0或0.0是单词编码的问题,计算这个单词的编码使得常用单词具有短编码(仅涉及几个节点),而罕见的单词将具有更长的编码(涉及更多)节点).同样,这可以节省计算时间:检查输入上下文是否正在将正确的节点集驱动到正确的值以预测"正确的"单词(对于当前的训练示例),只需要几个节点被检查,并轻推,而不是整套.
您可以使用参数在gensim中启用hierarchical-softmax hs=1.默认情况下,不使用它.
negative=0如果启用hierarchical-softmax,通常应该禁用负采样- 通常一个或另一个在给定量的CPU时间/ RAM中表现更好.
(但是,遵循原始Google word2vec.c代码的架构,可能但不建议立即让它们同时处于活动状态negative=5, hs=1.这将导致更大,更慢的模型,这可能看起来表现更好,因为你"给予它更多的RAM /时间进行训练,但是给予等效的RAM /时间可能会更好."
对于较大的词汇表,Hierarchical-softmax往往会变慢(因为每个训练示例中涉及的平均节点数增加); 负采样不会(因为它总是N + 1个节点).具有较大语料库的项目倾向于倾向于偏向负抽样.
| 归档时间: |
|
| 查看次数: |
2602 次 |
| 最近记录: |