nlp - 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?
解决方案
不,batch_words
ingensim
是指发送到工作线程的工作块的大小。
该类gensim
Word2Vec
在每个训练微示例之后更新模型参数(context)->(target-word)
(其中context
可能是单个单词,如在 skip-gram 中,或多个单词的均值,如在 CBOW 中)。
例如,您可以在训练循环w2v_fast_sentence_sg_neg()
的深处查看这个优化的 cython 函数,用于带有负采样的 skip-gram :Word2Vec
观察它正在考虑一个目标词(参数)word_index
和一个上下文word2_index
词syn0
(syn1neg
用随后的单(context)->(target-word)
对再次跟注。
推荐阅读
- android - 读取并通知BLE android
- ios - 为什么 UIView.isHidden = false 的动画调用是复合的?
- php - XML 子元素不会被添加,但不会在 PHP 中引发任何错误
- javascript - 有没有什么方法可以导入 ES 模块的一部分而没有副作用?
- sql - Netsuite 案例声明
- firebase - 如何将匿名帐户链接到 Flutter 中的电话号码?
- ios - NativeScript-Vue 中的分组 UITableView
- c# - ML.NET 显示哪个分数与哪个标签相关
- php - 将两个数组合二为一,数据对应组合
- python - 机器学习损失高的恒定验证精度