Keras 优化器中的衰减参数

数据挖掘 机器学习 神经网络 深度学习 喀拉斯
2021-09-16 15:54:49

我目前正在训练 CNN,Keras并且正在使用 Adam 优化器。我的计划是在每个 epoch 之后逐渐降低学习率。这就是我认为衰减参数的用途。对我来说,文档并没有清楚地解释它是如何工作的:

衰减:浮动> = 0。每次更新的学习率衰减。

但是,当查看 tensorboard 中使用的学习率时,它与初始学习率保持不变。那么,这个衰减参数实际上是如何工作的呢?

1个回答

Adam 使用小批量进行优化。在优化期间,您可能需要使用高学习率快速下坡,成本函数。当您到达接近相对最佳点的点时,您必须降低学习率以免错过最佳点。换句话说,您必须通过降低学习率来衰减学习率以获得更准确的步骤。小批量优化器在一个时期内有多个步骤,这些步骤可能并不都是正确的,但因为它们试图最小化每批输入数据的成本,它们最终达到了相对最优点。

对于每个 epoch,TensorFlow使用相同的学习率,在完成 epoch 后,下一个 epoch 将使用当前学习率除以衰减参数开始。它不应该是负面的,因为您使用的是梯度下降,这意味着向低级别移动。


最近我在查看优化器的代码,Keras发现如下代码:

if self.initial_decay > 0:
       lr *= (1. / (1. + self.decay * K.cast(self.iterations,
                                             K.dtype(self.decay))))

学习在每次迭代而不是每个时期都会改变。