ludwig decay_rate的行为会根据batch_size的不同而有所变化,

enxuqcxy  于 2个月前  发布在  其他
关注(0)|答案(1)|浏览(26)

在我看来,纯粹基于经验观察(我没有在代码中检查),decay(更具体地说是decay_rate)是在每个步骤(或每个批次)时计算计算机的,而不是在整个周期内。
我不知道这是否是预期的行为(在同一周期内降低学习率,使前几步/批次使用比最后几个更高的学习率),但可能是这样,因为这是支配learning_rate_warmup_epochs的相同逻辑,即使这是有意为之,也会出现一个棘手的问题:
如果我有一个较小的batch_size(因此在一个周期内有更多的批次/步骤,因此应用了更多的学习率衰减),我将获得更高的衰减速率,与使用较大的batch_size(因此在一个周期内有较少的批次/步骤,因此应用了较少的学习率衰减)相同的训练相比。
上面的内容对你有意义吗?
如果有,可以通过以下两种方式解决这个问题:

  1. 在周期级别计算decay_rate效应,使其与批次大小无关
  2. 在批次/步骤级别计算decay_rate效应(就像现在一样),但使其效果与一个周期内的步骤数成比例(这与learning_rate_warmup_epochs发生的事情相同)
    还有一件事:我认为decay行为应该在learning_rate_warmup完成上升后生效,否则我们会得到一个“曲线”式的初始值上升到learning_rate(永远不会实现,因为它从一开始就衰减了这个值)。
xu3bshqb

xu3bshqb1#

相同的模型配置与learning_rate: 0.001decay_rate: 0.90相同,但有以下区别:

  • batch_size: 50

  • batch_size: 50

相关问题