美文网首页
pytorch优化器学习速率调整实验及结论

pytorch优化器学习速率调整实验及结论

作者: 小小兰哈哈 | 来源:发表于2018-12-03 23:12 被阅读0次

    一.前言:

    目前我们对深度学习的研究只是工程科学,所能优化的点做有效的方式只能是有目的的做实验,下面就将pytorch的bi-gru分类模型的调优过程附上。

    二.背景:

    使用tf的效果85%/32%,keras是85%/34%,而pytorch的效果只有85%/22%,网络结构基本相同,都是bi-gru,所不同的只是评估样本和优化器。需要做的是和tensorflow和keras的效果打平,从优化器的学习速率调优上,就可以做到这一点,可见学习率对一个训练器的重要程度。

    三.实验过程:

    1. 一开始的 lr:0.5,decay:0.08, 准85%/召0.000%, auc:0.78, 不收敛-------^^^^

    2.既然不收敛,调整lr为0.01, decay:0.8试一下:结果:到20%了,还需提高^_^

    auc:0.9485560449492769

    高分段:['0.6605', '0.8519', '0.2035']

    3.lr再稍微往上调一点试试:初始lr为0.05, 效果出来了,挺好:到32%了

    4. decay为0,也就是不衰减会怎样? lr调成0.01不变试试:也还好,比衰减差3个点

    auc:0.9589003424257141

    高分段:['0.5628', '0.8526', '0.2942']

    5.用流行的schedule_optimizer,三角学习率,lr 先升后降的学法试试:

    auc:0.963233359864019

    高分段:['0.5980', '0.8516', '0.3429']


    哦也,到34%了,果然圣贤足迹是不容置疑的 ^ __  ^

    四.结论:

    学习速率的调整对效果影响显著

    学习速率过大,则无法找到最优点,局部最优点也无法定位,因此无法收敛;

    学习速率过小,则只能徘徊在一段空间附近,只能找到局部最优,或者无法找到最优点。

    实验证明,最优的学习速率方案是先有个warmup步长,进行学习速率上升, 经过warmup到达最高点,然后逐渐下降。

    一定要找到一个合理的学习速率,使全局的学习速率保持到这个均值,才能达到比较好的效果,比如这次bi-gru的调整最优的平均速率是0.01

    五.使用pytorch的心得及结论(一些定理):

         1. 在保持学习速率均值的情况下,三角学习率> 按照auc逐步衰减> 保持均值不变;

         2. 交叉验证的效果好于特定的验证集,最好的训练效果是交叉验证,最后用测试集进行评估,也就是说,训练集、校正集、评估集是三个集合,不做交叉。

         3.网络merge的最好组合方法: merge的最好组合,是模型差异性越大越好,多次实验证明:单模型效果稍差的情况下,cnn与lstm的merge会好于两个lstm的merge效果,

            模型差异性大的结果进行merge,会得到最好的效果。

         4. fintune微调的最优方式:1. 数据量:fintune预训练的集合数据量> 精细标注样本的数据量 2.层冻结:将后面的全连接层与loss计算部分冻结,只fintune 词向量层及编码层,效果较好。

    相关文章

      网友评论

          本文标题:pytorch优化器学习速率调整实验及结论

          本文链接:https://www.haomeiwen.com/subject/zuhpcqtx.html