gensim Word2Vec - 如何应用随机梯度下降?
gensim Word2Vec - how to apply stochastic gradient descent?
据我了解,批量(香草)梯度下降对所有训练数据进行一次参数更新。随机梯度下降 (SGD) 允许您为每个训练样本更新参数,帮助模型更快收敛,代价是函数损失的高波动。
批量(香草)梯度下降集 batch_size=corpus_size
。
新元套batch_size=1
.
和mini-batch梯度下降集batch_size=k
,其中k
通常是32,64,128...
gensim如何应用SGD或mini-batch梯度下降?似乎 batch_words
相当于 batch_size
,但我想确定一下。
在 gensim 模型中设置 batch_words=1
是否等同于应用 SGD?
不,gensim
中的batch_words
是指发送到工作线程的工作块的大小。
gensim
Word2Vec
class 在 (context)->(target-word)
的每个训练微示例后更新模型参数(其中 context
可能是单个单词,因为在 skip-gram 中,或几个词的平均值,如在 CBOW 中)。
例如,您可以在 Word2Vec
训练循环的深处查看这个针对带负采样的 skip-gram 优化的 w2v_fast_sentence_sg_neg()
cython 函数:
观察到它正在考虑一个目标词(word_index
参数)和一个上下文词(word2_index
),并更新两个词向量(又名'projection layer' syn0
) 和模型的隐藏到输出权重 (syn1neg
),然后它可能会被后续的单个 (context)->(target-word)
对再次调用。
据我了解,批量(香草)梯度下降对所有训练数据进行一次参数更新。随机梯度下降 (SGD) 允许您为每个训练样本更新参数,帮助模型更快收敛,代价是函数损失的高波动。
批量(香草)梯度下降集 batch_size=corpus_size
。
新元套batch_size=1
.
和mini-batch梯度下降集batch_size=k
,其中k
通常是32,64,128...
gensim如何应用SGD或mini-batch梯度下降?似乎 batch_words
相当于 batch_size
,但我想确定一下。
在 gensim 模型中设置 batch_words=1
是否等同于应用 SGD?
不,gensim
中的batch_words
是指发送到工作线程的工作块的大小。
gensim
Word2Vec
class 在 (context)->(target-word)
的每个训练微示例后更新模型参数(其中 context
可能是单个单词,因为在 skip-gram 中,或几个词的平均值,如在 CBOW 中)。
例如,您可以在 Word2Vec
训练循环的深处查看这个针对带负采样的 skip-gram 优化的 w2v_fast_sentence_sg_neg()
cython 函数:
观察到它正在考虑一个目标词(word_index
参数)和一个上下文词(word2_index
),并更新两个词向量(又名'projection layer' syn0
) 和模型的隐藏到输出权重 (syn1neg
),然后它可能会被后续的单个 (context)->(target-word)
对再次调用。