我正在查看VW的更新规则选项文档,我对使用参数initial_t、power_t和decay_learning_rate指定学习进度的公式感到困惑。
基于文档中这一行下面的等式
指定其泛型形式的学习进度表。
如果initial_t等于零(默认情况下这是设置),那么对于所有的时间步骤和时间,学习速率似乎总是为零。是这样的吗?
另外,如果initial_t和power_t都设置为零,会发生什么情况?我试着用这些设置初始化大众,但它没有抱怨。
发布于 2020-10-29 19:53:13
如果initial_t等于零(默认情况下这是设置),那么对于所有的时间步骤和时间,学习速率似乎总是为零。是这样的吗?
默认情况下,initial_t设置为零。默认情况下,初始学习速率将不使用initial_t来计算其值,而是从其默认值(即0.5 )开始。
根据文档,默认情况下,标志adaptive、normalized和invariant是打开的。如果指定了其中任何一个,则关闭其他标志。在打开invariant标志的情况下(因此,在不使用规范化或自适应的情况下),将使用initial_t和power_t值计算初始学习速率,并将默认的initial_t设置为1而不是0。
如果initial_t显式地设置为零,再加上正在设置的invariant标志,那么是的,学习速率也将为零。
另外,如果initial_t和power_t都设置为零,会发生什么情况?我试着用这些设置初始化大众,但它没有抱怨。
如果使用initial_t和power_t计算初始学习速率,并且两者都显式设置为零,则c++应计算powf(0,0) to 1,从而使学习速率设置为默认值,这可以由--learning_rate指定。
如果您通过命令行运行vowpalwabbit,您应该能够看到这些值设置为:
Num weight bits = 18
learning rate = 10
initial_t = 1
power_t = 0.5
decay_learning_rate = 1https://stackoverflow.com/questions/64392044
复制相似问题