自己动手实现深度学习框架-5 使用学习率优化器加快模型训练速度
代码仓库: https://github.com/brandonlyg/cute-dl (转载请注明出处!) 目标 增加学习率优化器, 加快模型在小学习率下模型的训练速度。 使用MNIST数据集比较同一个模型使用不同学习率优化器的表现。 常见的学习率优化算法 在上个阶段,我们使用固定学习率优化器训练识别MNIST手写数字模型。在后面的示例中将会看到: 如果学习习设置太大,模型将无法收敛; 如果设置学习率太小模型大概率会收敛速度会非常缓慢。因此必须要要给学习率设置一个合适的值,这个合适的值到底是什么需要反复试验。 训练模型的本质是,在由损失函数定义的高纬超平面中尽可能地找到最低点。由于高纬超平面十分复杂,找到全局最低点往往不现实,因此找到一个尽量接近全局最低点的局部最低点也是可以的。 由于模型参数是随机初始化的,在训练的初始阶段, 可能远离最低点,也可能距最低点较较近。为了使模型能够收敛,较小的学习率比较大的学习率更有可能达到目地, 至少不会使模型发散。 理想的状态下,我们希望,学习率是动态的: 在远离最低点的时候有较大的学习率,在靠近最低点的时候有较小的学习率。 学习率算法在训练过程中动态调整学习率,试图使学习率接近理想状态。常见的学习率优化算法有: 动量算法。 Adagrad算法。 RMSProp算法。 Adadelta算法。 Adam算法。