learning_rate 是否会使用 "adaptive" 策略自动调整 VowpalWabbit Python 在线学习?
Will learning_rate be automatically adjusted using "adaptive" strategy for VowpalWabbit Python online learning?
我看到 VowpalWabbit command-line 的文档提到 --adaptive
学习率策略是默认的。我 不是 使用命令行实用程序进行训练,即:通过命令行传递整个训练文件。相反,我有一个大型数据集,我正在迭代并使用 Python 在线学习方法一次训练一个样本,如下所示:
for example in train_examples:
model.learn(example)
问题:
- 使用Python在线学习方法时,学习率是否也会使用
adaptive
策略自动调整,或者只有通过命令行实用程序传递训练文件才有效?
- 根据我的理解,
--passes
参数仅在训练文件通过命令行实用程序传递时有效(如果我错了请纠正我)。那么,下面的--decay_learning_rate
说法在Python在线学习方法中也不行吗?
--decay_learning_rate arg (=1)
Set Decay factor for learning_rate
between passes
没有单一的全局学习率。
有:
- 单个默认初始学习率(
-l <arg>
)
- 学习时保持多个(per-feature)学习率
学习率不是恒定的,随着模型收敛,它们会随着时间衰减。他们有很好的默认值,所以你通常不应该在训练时担心他们。
更详细一些:
- 初始学习率,可选地用
-l [ --learning_rate ] arg
设置。它在学习开始时设置一次,而不是在每个示例处理时设置,并且具有良好的默认值,因此无需指定它。如果你指定它,它会影响你在开始时学习的速度(更新有多大),但随着学习的进行和应用自动调整,效果会衰减。不建议将此初始 learning-rate 设置为高值,因为它可能会导致早期 over-fitting.
--adaptive
、--normalized
和 --invariant
是 3 个独立的布尔开关,默认情况下 on。除非你真的知道你在做什么,否则不要管它们(不要指定它们)它们将全部生效。这 3 个开关影响个体(每个特征)的 更新 ,并且与初始学习率正交。如果你明确地 turn-on 这 3 个开关中的一个或多个,在训练开始时(不是每个例子),它将隐式 turn-off 那些你没有明确指定的。
- 如您所想,
--decay_learning_rate arg
仅在多通道生效时才相关,因此您无需担心,因为您不使用多通道。它将影响通过之间的 额外 调整幅度。
随着时间的推移绘制您的 average-loss(或“自上一列以来”的损失)可以帮助您找出收敛。您可以使用 vw
源 utl
目录中的 vw-convergence
,将您的进度输出提供给它以查看您的收敛。 vw-convergence
是一个需要 perl 和 R 的 CLI 实用程序。
这是 vw-convergence
生成的图表示例
我看到 VowpalWabbit command-line 的文档提到 --adaptive
学习率策略是默认的。我 不是 使用命令行实用程序进行训练,即:通过命令行传递整个训练文件。相反,我有一个大型数据集,我正在迭代并使用 Python 在线学习方法一次训练一个样本,如下所示:
for example in train_examples:
model.learn(example)
问题:
- 使用Python在线学习方法时,学习率是否也会使用
adaptive
策略自动调整,或者只有通过命令行实用程序传递训练文件才有效? - 根据我的理解,
--passes
参数仅在训练文件通过命令行实用程序传递时有效(如果我错了请纠正我)。那么,下面的--decay_learning_rate
说法在Python在线学习方法中也不行吗?
--decay_learning_rate arg (=1) Set Decay factor for learning_rate between passes
没有单一的全局学习率。
有:
- 单个默认初始学习率(
-l <arg>
) - 学习时保持多个(per-feature)学习率
学习率不是恒定的,随着模型收敛,它们会随着时间衰减。他们有很好的默认值,所以你通常不应该在训练时担心他们。
更详细一些:
- 初始学习率,可选地用
-l [ --learning_rate ] arg
设置。它在学习开始时设置一次,而不是在每个示例处理时设置,并且具有良好的默认值,因此无需指定它。如果你指定它,它会影响你在开始时学习的速度(更新有多大),但随着学习的进行和应用自动调整,效果会衰减。不建议将此初始 learning-rate 设置为高值,因为它可能会导致早期 over-fitting. --adaptive
、--normalized
和--invariant
是 3 个独立的布尔开关,默认情况下 on。除非你真的知道你在做什么,否则不要管它们(不要指定它们)它们将全部生效。这 3 个开关影响个体(每个特征)的 更新 ,并且与初始学习率正交。如果你明确地 turn-on 这 3 个开关中的一个或多个,在训练开始时(不是每个例子),它将隐式 turn-off 那些你没有明确指定的。- 如您所想,
--decay_learning_rate arg
仅在多通道生效时才相关,因此您无需担心,因为您不使用多通道。它将影响通过之间的 额外 调整幅度。
随着时间的推移绘制您的 average-loss(或“自上一列以来”的损失)可以帮助您找出收敛。您可以使用 vw
源 utl
目录中的 vw-convergence
,将您的进度输出提供给它以查看您的收敛。 vw-convergence
是一个需要 perl 和 R 的 CLI 实用程序。
这是 vw-convergence