vowpal wabbit中的`--save_resume`选项到底是做什么的

时间:2015-01-25 21:52:30

标签: vowpalwabbit

我正在使用来自两个不同来源的数据训练神经网络,启发式:

cat train1.vw |vw --oaa 10 --nn 20 --save_resume -f /tmp/weights
cat train2.vw |vw --oaa 10 --nn 20 --save_resume -i /tmp/weights -f /tmp/weights

然而,这引起了一个错误,即" - oaa不能多次传递。"好的,--save_resume持有配置参数,所以我修改了:

cat train1.vw |vw --oaa 10 --nn 20 --save_resume -f /tmp/weights
cat train2.vw |vw --save_resume -i /tmp/weights -f /tmp/weights

一切正常。出于好奇,我在没有--save_resume选项的情况下重复了第二种方法,除了模型性能稍差之外,所有仍然工作。

我推测--save_resume可以节省学习率和权重文件中的示例数量。这似乎是从输出中发生的,并证实了更好的性能。还有别的吗?

编辑:经过一些实验后,我发现通过-i传递初始回归量的原因是提出了"选项' - oaa'不能多次指定错误,"不是--save_resume

2 个答案:

答案 0 :(得分:4)

您的推测是正确的。如果--save_resume未对train1.vw进行第一次培训,则模型/tmp/weights不包含学习率和其他状态信息(例如{V}默认使用--adaptive,所以每个功能都有一个学习率)。这可能会影响最终模型的质量,通常会使情况变得更糟。

报告为平均损失的不同数字的另一个原因是,当不使用--save_resume时,VW仅计算给定数据的平均值(train1.vw resp。{{ 1}})。

train2.vw的想法是,在分两步训练时,你应该获得相同的最终平均损失

--save_resume

当一步训练时

cat train1.vw | vw --oaa 10 --nn 20 --save_resume -f /tmp/weights
cat train2.vw | vw --save_resume -i /tmp/weights -f /tmp/weights

查看related solved GitHub issue

答案 1 :(得分:1)

看起来最近在这里引入了一个错误,我为它记录了一张票: https://github.com/JohnLangford/vowpal_wabbit/issues/554

更新:他们已经将它修复为master。所以一定要拉。