文章Super-Convergence记录

来源:互联网 发布:python cdll 编辑:程序博客网 时间:2024/05/29 15:59

Super-Convergence: Very Fast Training of Residual Networks Using Large Learning Rates
在这篇文章中,作者针对现在训练较慢,超参数学习率比较难找,给出了自己的解决方案,周期学习率:
将学习率设置一个最大值,和最小值,在给出一个参数stepsize,两个stepsize为一个周期,在前半个stepsize内,学习率逐渐从最小值增大到最大值,在后半个stepsize内,学习率从最大值变成最小值,通过这样设置学习率,文章中的实验数据指出,只要原始训练次数的1/3左右,就可以达到相同的准确率,而使用相同的训练次数,准确率更高,相当于对训练进行了提速,加速了收敛,因此这篇文章的名字就叫:Super-Convergence,超级收敛

周期学习率策略的本质来自于这样一个观察事实:增大学习率在短时间内可能对网络性能有负面影响,但是长时间来看还是有正面影响。因此,根据这个观察事实,使学习率在一定范围内变动而不是固定学习率。因此,就需要设置最小学习率和最大学习率,以及与周期相关的参数:stepsize。
这里写图片描述

stepsize设定
假设你有500000张图像,批处理大小是100,那么一个epoch就需要500000/100=5000次迭代,那么stepsize的大小,经过验证,需要为这个迭代次数的2-10倍,一般设置2-10之间,结果不会有太大区别,因此可以设置为2-3倍,这样,学习率更新的周期短一点。

最大最小学习率
需要通过实验来获得,下图就是通过实验来获取网络结构最小最大学习率,实验中总共跑了8个epoch,学习率从0一直增加到0.02,从图中可以看到,网络很快就开始收敛,因此将学习率最小值设置为0.001,而到学习率来到0.006时,准确率就开始下降,因此将最大学习率设置为0.006
这里写图片描述

结论
googlenet,alexnet的学习率测试:
这里写图片描述

这里写图片描述

相关的收敛速度与结果测试对比:
这里写图片描述
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

原创粉丝点击