【问题标题】:Iterative training using VowpalWabbit使用 VowpalWabbit 进行迭代训练
【发布时间】:2019-10-15 07:23:09
【问题描述】:

我正在尝试使用 VW 执行迭代测试。

理想情况下,我能够:

  1. 训练并保存模型 initial_model.vw(我已经对此进行了测试,它可以工作)
  2. 加载此模型,向其中添加其他数据,然后再次保存(到 new_model.vw)
  3. 使用此新模型进行第一个模型无法进行的预测,以证明迭代训练已成功。

我发现一个人也在尝试这样做 (how to retrain the model for sequence of files in vowpal wabbit),但是当我运行我的代码并尝试使用其他数据重新训练时,它似乎覆盖了旧数据而不是添加到它。

这是我正在使用的代码的基本大纲:

  1. 初始训练和保存:
    vw initial_data.txt -b 26 --learning_rate 1.5 --passes 10 -- 
    probabilities --loss_function=logistic --oaa 80 --save_resume --kill_cache 
    --cache_file a.cache -f initial_model.vw
  1. 使用新数据进行再训练:
    vw new_data.txt -b 26 --learning_rate 1.5 -- 
    passes 10 -i initial_model.vw --probabilities --loss_function=logistic -- 
    oaa 80 --save_resume --kill_cache --cache_file a.cache -f new_model.vw

我知道这不足以重现我正在做的事情,但我只想知道我的论点是否有任何问题,以及这是否应该在理论上有效。当我使用我的再训练模型进行预测时,它只对包含在新数据中的测试用例准确,而不是原始训练文件中涵盖的任何内容。感谢您的帮助!

【问题讨论】:

    标签: vowpalwabbit


    【解决方案1】:

    我可以看到问题中给出的论点存在 2 个潜在问题。 这些可能没问题,如果您真的打算以这种方式使用它们,并且您真的知道自己在做什么,但它们似乎有点可疑。

    1) 每当您在同一数据 (--passes <n>) 上多次运行 vw 时,vw 都会隐式切换到保留模式,其中 10 个示例中有 1 个被保留。保留示例仅用于误差估计,而不用于学习以避免过度拟合。如果这是您的意图,那很好,但如果您不想保留任何示例,则应使用选项--holdout_off,并注意过度拟合的机会增加了。

    2) 初始学习率 (--learning_rate 1.5) 似乎很高,它增加了过度拟合的机会。如果你使用它是因为你最终得到了较低的训练损失,那么这是错误的做法。在 ML 中,目标不是最小化训练损失,而是泛化损失。

    另外:在第二批设置初始学习率似乎与--save_resume 选项相矛盾。 --save_resume 的目标是开始一个新的批次,每个特征学习率(AdaGrad 风格)低(已经衰减,如模型中保存的那样)。在开始时让学习率跳跃可能会使第二批中的第一个示例比第一批中的所有衰减特征重要得多。

    提示:通过将进度输出传送到绘图实用程序vw-convergence,您可以了解自己的表现:

     vw -P 1.1 ... data.txt 2>&1 | vw-convergence
    

    (注意:vw-convergence 需要R

    【讨论】:

      猜你喜欢
      • 2021-10-25
      • 2020-01-12
      • 1970-01-01
      • 2021-05-23
      • 2017-09-28
      • 2012-10-25
      • 2016-10-20
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多