美文网首页
深度学习——学习率与warm up

深度学习——学习率与warm up

作者: 科技多 | 来源:发表于2020-04-21 18:10 被阅读0次

    学习率设定

    learning rate(lr)是神经网络炼丹最重要的参数,没有之一

    没有特定规律,理论上来说,通常学习率过小->收敛过慢,学习率过大->错过局部最优

    实际上来说,可能:学习率过小->不收敛,学习率过大->不收敛

    为什么会这样,还没有通用理论去解释。

    设定学习率的一些常用trick:

    首先寻找ok(合理范畴-计算负担-内达到好的结果)的学习率,然后调整其它参数, 其它参数调的差不多了,再去精调学习率。

    1、lr与其它参数有相互作用,但不多。在计算负担的起的情况下,选合适的学习率:比如选了好学习率,但要跑100 epoch才能收敛,花了一天,没时间调其它参数了,这种情况下我可能宁可舍弃一些精度,选一个ok的学习率,比如10个 epoch收敛。

    2、lr与样本数量关系很大

    比如样本比较大,或重复比较多,都会影响学习率。如果样本数量不变的话,一般原来ok的lr,之后还ok。

    而提升算法效果比较有效的一个策略是数据扩充,不幸的是数据扩充会影响lr, 需要注意。

    3、不同层采用不同的学习率

    (1)一部分已经训练好,然后在它上层再搭一层模型

    如果底层模型训练好了,然后训练上层模型,这时如果采用一样的学习率,会出现问题。

    因为底层模型训练好了,我可能只要稍微微调下就训练好了。

    底层模型训练好,上层模型随机初始化,lr不能太小

    上下层不一样的话,lr太大太小都不行

    trick:

    先固定下层,只训练上层,训练差不多ok时,再一块训练

    这里ok的意思:一般上层直接train到局部最优就完事了,不要只保留局部最优,因为局部最优可能很难出来。在此之前保留一些checkpoint,可以在这基础上优化。只训练上层不能在验证集上达到最优,但同时要避免因只训练上层陷入局部最优

    (2)上层比底层学习率大一些

    大多少,没有固定说法。比如指数层级去处理,lr指数缩减

    一层层训练,从顶向下一层层训练,理论上有效,实际上算力问题

    4、在最终阶段降低学习率,后者babysit

    最后比较稳定,降低lr更容易找到局部最优,可以增加batchsize, 这样更稳定

    babysit:看整个训练过程,当在验证集上精度不再提升时,降低lr,再跑。细调。

    5、 warm-up

    从头训练时用..待加

    6、常见学习率

    finetune: 1e-5, 2e-5, 5e-5

    从头训练:一般可以从0.01开始试,如果出现问题就调整。

    如果收敛太快,很快在训练集上过拟合了,我就降低lr

    如果训练过慢或不收敛,我就增加一点lr

    相关文章

      网友评论

          本文标题:深度学习——学习率与warm up

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