训练神经网络时如何设定学习率

1、学习率是什么?

在训练期间权重更新的量被称为步长或“学习率”。具体而言,学习速率是在神经网络训练中使用的可配置超参数,其具有小的正值,通常在0.0和1.0之间的范围内

… learning rate, a positive scalar determining the size of the step.

学习率,确定步长大小的正标量.

如学习率为0.1(传统上常见的默认值)意味着每次更新权重时网络中的权重被更新0.1 *(估计的权重误差)或估计的权重误差的10%。

在极端情况下,过大的学习速率将导致权重更新太大,并且模型的性能(例如其在训练数据集上的损失)将在训练时期内振荡。据说摆动性能是由发散(发散)的权重引起的。学习率太小可能永远不会收敛,或者可能会陷入次优解决方案。

学习率过大,在算法优化的前期会加速学习,使得模型更容易接近局部或全局最优解。但是在后期会有较大波动,甚至出现损失函数的值围绕最小值徘徊,波动很大,始终难以达到最优,如下图蓝色曲线所示。所以引入学习率衰减的概念,直白点说,就是在模型训练初期,会使用较大的学习率进行模型优化,随着迭代次数增加,学习率会逐渐进行减小,保证模型在训练后期不会有太大的波动,从而更加接近最优解,如下图中上面一条绿色曲线所示。
训练神经网络时如何设定学习率_第1张图片
当进入了最优学习率区域,你将会观察到在损失函数上一次非常大的下降。进一步增加学习速率会造成损失函数值「跳来跳去」甚至在最低点附近发散。
训练神经网络时如何设定学习率_第2张图片

2、如何设定学习率

不幸的是,我们无法分析地计算给定数据集上给定模型的最佳学习速率。 相反,必须通过反复试验发现良好(或足够好)的学习率。要考虑的学习率的值范围小于1.0且大于10 ^ -6。

学习速率将与优化过程的许多其他方面相互作用,并且相互作用可以是非线性的。 然而,一般而言,较小的学习率将需要更多的训练时期。 相反,较大的学习率将需要较少的训练时间。 此外,考虑到误差梯度的噪声估计,较小的批量大小更适合于较小的学习率。学习率的传统默认值为0.1或0.01,这可能是训练的起点。默认值0.01通常适用于标准多层神经网络,但完全依赖此默认值是愚蠢的。

根据经验,可以从以下几个数值开始试验α的值,0.001 ,0.003, 0.01, 0.03, 0.1, 0.3, 1, …α初始值位0.001, 不符合预期乘以3倍用0.003代替,不符合预期再用0.01替代,如此循环直至找到最合适的α

参考资料:

  1. https://blog.csdn.net/ghw15221836342/article/details/86620738?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
  2. https://blog.csdn.net/lvchunyang66/article/details/80090708
  3. https://www.sohu.com/a/224777308_129720
  4. http://www.imooc.com/article/41638

你可能感兴趣的:(训练神经网络时如何设定学习率)