首页 > 解决方案 > gensim Word2Vec - 如何应用随机梯度下降?

问题描述

据我了解,批量(普通)梯度下降对所有训练数据进行一次参数更新。随机梯度下降 (SGD) 允许您更新每个训练样本的参数,帮助模型更快地收敛,但代价是函数损失的高波动。

在此处输入图像描述

批量(香草)梯度下降集batch_size=corpus_size

新元套batch_size=1

和小批量梯度下降集batch_size=k,其中k通常是 32、64、128...

gensim 如何应用 SGD 或小批量梯度下降?似乎这batch_words相当于batch_size,但我想确定一下。

在 gensim 模型中设置是否batch_words=1等同于应用 SGD?

标签: nlpgensimword2vecgradient-descentstochastic

解决方案


不,batch_wordsingensim是指发送到工作线程的工作块的大小。

该类gensim Word2Vec在每个训练微示例之后更新模型参数(context)->(target-word)(其中context可能是单个单词,如在 skip-gram 中,或多个单词的均值,如在 CBOW 中)。

例如,您可以在训练循环w2v_fast_sentence_sg_neg()的深处查看这个优化的 cython 函数,用于带有负采样的 skip-gram :Word2Vec

https://github.com/RaRe-Technologies/gensim/blob/460dc1cb9921817f71b40b412e11a6d413926472/gensim/models/word2vec_inner.pyx#L159

观察它正在考虑一个目标词(参数)word_index和一个上下文word2_indexsyn0syn1neg用随后的单(context)->(target-word)对再次跟注。


推荐阅读