据我了解,批量(原始)梯度下降使所有训练数据的参数更新一次。随机梯度下降(SGD)允许您更新每个训练样本的参数,从而以功能损失高波动为代价,帮助模型更快收敛。
批次(原始)梯度下降集batch_size=corpus_size
。
SGD设置batch_size=1
。
以及小批量梯度下降集batch_size=k
,其中k
通常是32、64、128 ...
gensim如何应用SGD或小批量梯度下降?看来batch_words
与batch_size
等效,但是我想确定。
在gensim模型中设置batch_words=1
等同于应用SGD吗?
答案 0 :(得分:0)
否,batch_words
中的gensim
是指发送到工作线程的工作块的大小。
gensim
Word2Vec
类在(context)->(target-word)
的每个训练微观示例之后更新模型参数(其中context
可以是单个单词,如skip-gram或几个词的均值,例如CBOW)。
例如,您可以在w2v_fast_sentence_sg_neg()
训练循环的最深处查看经过优化的Word2Vec
cython函数,以进行带有负采样的跳过语法:
观察到它正在考虑恰好一个目标词(word_index
参数)和一个上下文词(word2_index
),并同时更新两个词向量(又称为“投影层” {{1 }})和模型的隐藏至输出权重(syn0
),然后再使用随后的一对syn1neg
对再次调用它。