Keras 在神经网络训练期间使用 回调函数 (callbacks) 来降低学习率,回调函数是一种基于预定义规则或性能指标动态调整超参数的工具。主要有两种方法:LearningRateScheduler
和 ReduceLROnPlateau
回调函数。这些工具使开发者无需手动干预即可实现自适应学习率策略,从而提高模型收敛性和训练效率。此过程集成到训练循环中,确保在指定间隔或满足特定条件时自动进行调整。
LearningRateScheduler
回调函数允许开发者定义一个自定义函数或预定义的时间表,以便在每个 epoch 开始时调整学习率。例如,常见的策略是阶梯衰减 (step decay),即在经过设定数量的 epoch 后按固定因子降低学习率。开发者可以编写一个函数,例如 def lr_step_decay(epoch): return initial_lr * 0.1 ** (epoch // 10)
,该函数每 10 个 epoch 将学习率降低 90%。通过将该函数传递给 LearningRateScheduler
并将其添加到 model.fit()
的 callbacks
列表中,可以轻松实现此回调函数。它提供了对学习率轨迹的明确控制,非常适用于已知预定义衰减模式效果良好的场景。
ReduceLROnPlateau
回调函数根据训练期间的模型性能调整学习率。它不是遵循固定的时间表,而是监控验证损失等指标,并在改进停滞时降低学习率。例如,如果验证损失在 5 个 epoch 内没有下降 (patience=5
),回调函数会将当前学习率乘以一个 factor
(例如 0.5),直到达到最小值 (min_lr
)。当训练动态不可预测时,这种方法非常有用,因为它响应实际的模型行为而不是固定的时间线。开发者通过指定监控指标、衰减因子、patience 和边界来配置它,确保模型不会因为学习率过高或过低而停留在次优状态。这两种方法都很灵活,所需的代码量极少,并且可以显著提升训练结果。