问题描述
vowpal wabbit (vw
) 支持使用 --save_resume
进行核外学习。这就是 --help
选项告诉最终用户有关 --save_resume
选项的内容:
--save_resume save extra state so learning can be
resumed later with new data
我有一个庞大的实时数据集,目前有数亿个文档被分类为 1024 个批次,我的目标是在所有批次上训练 LDA 模型,为此我运行了一个调用 vw
的脚本,例如这个(注意我没有设置--passes
,所以每个数据点只看到一次)。
初始调用:
vw -d clean.txt --lda 100 --lda_D 307000000 -f weights --readable_model lda.model.vw
vw -d clean.txt --lda 100 --lda_D 307000000 --save_resume -i weights -f weights --readable_model lda.model.vw
我已经以这种方式通过 vw 成功运行了所有批次,但是从每次调用中 vw
给出的输出来看,学习率似乎从未下降,它始终如下所示:
learning rate = 0.5
initial_t = 0
power_t = 0.5
我会猜到在请求 --save_resume
时会保存学习率,并且 vw
在看到更多数据时会自动降低学习率,但事实似乎并非如此,对吗?
您是否必须使用vovpal wabbit 手动管理学习率?
解决方法
LDA 的学习率似乎是基于全局学习率计算的(但与全局学习率分开存储)。 LDA 的学习/衰减率似乎没有打印在任何地方,因此您不会在日志中看到它们。
https://github.com/VowpalWabbit/vowpal_wabbit/blob/master/vowpalwabbit/lda_core.cc#L892