百问深度学习模型训练
有哪些学习率调节策略?
OneCycleLR
1 | import cv2 |
论文中作者将神经网络的快速收敛称为"super-convergence"。在Cifar-10上训练56层的残差网络时,发现测试集上的准确率在使用高学习率和相对较少的训练轮次的时候也依然保持较高(如下图所示),这个现象给"super-convergence"提供了可能。
这说明在高学习率的某些情况下的更新并不会破坏网络。
CLR(如上图所示)不是单调地降低训练过程中的学习率,而是让学习率在设定好地最大值与最小值之间往复变化,文中提出CLR能够work的原因在于两点:
- CLR里面增大学习率的过程可以帮助损失函数值逃离鞍点
- 最优的学习率会在设定好的最大值与最小值之间,最优学习率附近的值在整个训练过程中会被一直使用到。\(stepsize\)一般设置为\(number of samplesbatchsize\)的2-10倍,一个cycle包括2个\(stepsize\);\(base\_lr\)一般设置为\(max\_lr\)的\(\frac{1}{3}\) 或者 \(\frac{1}{4}\)。一般当学习率回到base_lr时使训练结束。
在CLR的基础上,"1cycle"是在整个训练过程中只有一个cycle,学习率首先从初始值上升至max_lr,之后从max_lr下降至低于初始值的大小。和CosineAnnealingLR不同,OneCycleLR一般每个batch后调用一次。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.