当TensorFlow中的学习率下降时,应该何时设置楼梯是真的?

问题描述 投票:3回答:2

回想一下,当exponentially decaying在TensorFlow中学习率时:

decayed_learning_rate = learning_rate * decay_rate ^(global_step / decay_steps)

文档提到这个楼梯选项为:

如果参数阶梯为True,则global_step / decay_steps是整数除法,并且衰减的学习速率遵循阶梯函数。

什么时候更好地衰减每X步数并遵循楼梯案例功能而不是更平滑的版本,每一步都会衰减越来越多?

machine-learning neural-network tensorflow conv-neural-network
2个回答
1
投票

现有答案似乎没有描述这一点。有两种不同的行为被描述为“阶梯”行为。

  • feature request for staircase,行为被描述为手动调整的分段恒定衰减率,因此用户可以提供一组迭代边界和一组衰减率,以使衰减率在迭代后跳转到指定值通过一个给定的边界。 如果你查看actual code for this feature pull request,你会发现PR与函数参数中的阶梯选项无关。相反,它定义了一个完全独立的piecewise_constant操作,相关的单元测试显示了如何使用learning_rate_decay.piecewise_constant将自己的自定义学习速率定义为分段常量。
  • the documentation on decaying the learning rate,行为被描述为将global_step / decay_steps视为整数除法,因此对于第一组decay_steps步,除法结果为0,学习率是恒定的。一旦你越过decay_steps-th迭代,你将衰减率提高到1的幂,然后是2的幂,等等。所以你只能观察到特定权力的衰减率,而不是在所有权力的平滑变化,如果你将全局步骤视为浮点数。

至于优点,这只是你应该根据你的问题做出的超参数决定。使用阶梯选项可以保持衰减率恒定,基本上就像在模拟退火中保持更高的温度更长时间。这可以让您通过在梯度方向上采取更大的步幅来探索更多的解决方案空间,代价是可能存在噪声或非生产性更新。同时,平稳地增加衰减率的力量将稳定地“冷却”探测,这可以通过使你卡在局部最佳值附近来限制你,但它也可以防止你用嘈杂的大梯度步骤浪费时间。

一种方法或另一种方法是否更好(a)通常无关紧要;(b)通常需要在可能重要的情况下进行特别调整。

另外,正如特征请求链接所提到的那样,当你有单独的证据支持基于收集训练指标作为迭代函数的手动调整衰减率时,分段常数操作似乎是针对非常特别调整的用例。我一般不建议一般使用。


0
投票

好问题。

据我所知,这是研究小组的偏好。

从过去的时代开始,仅在每个时代降低学习率在计算上更有效率。这就是为什么有些人现在更喜欢使用它。

人们可能会讲的另一个手工波浪的故事是它阻止了当地的最佳状态。通过“突然”改变学习率,重量可能会跳到更好的低音。 (我不同意这一点,但为了完整性而添加它)

© www.soinside.com 2019 - 2024. All rights reserved.