zoukankan      html  css  js  c++  java
  • 【2020春】李宏毅机器学习(New Optimizers for Deep Learning)

    https://www.bilibili.com/video/av94519857?p=8
    https://www.bilibili.com/video/av94519857?p=9

    -----总结-----


    一次能够拿到所有训练数据,就是offline learning。

    每次梯度反方向

    Momentum(累加历史所有梯度,即使当前梯度为0,也会因为历史梯度的影响,继续移动,防止卡在鞍点)

    Adagrad(随着时间累计,分母可能会无止境变大,导致leanring rate*gradient接近0,也就相当于卡住。EMA问题)

    RMSProp(通过增加一个系数alpha,解决EMA问题。但是梯度为0的情况还是可能进入鞍点。)

    Adam(结合Momentum和RMSProp,既能避免EMA问题,又能避免梯度为0进入鞍点。)

    Ada系列集中在2014年左右被提出的。

    实际应用

    Adam 和 SGDM

    训练acc

    验证acc

    一篇论文

    结论:Flat Minimum和Sharp Minimum

    • adam:训练更快,但是与测试gap大,不稳定;
    • sgdm:更稳定,与测试gap小;

    如何提高Adam?

    经过1000步很小的gradients之后,遇到一个较大的gradient,但是受movement影响,只能移动很小的一步。也就是大量Non-informative梯度抑制了informative梯度。

    从公式可以看出,一次更新的最大移动距离的上届就是(sqrt(1/(1-beta_2)))*eta

    这篇文章提出记住历史最大的v_t,就可以避免non-informative gradients的影响了。

    另一篇文章

    如何提高SGDM?

    lr太大或太小,都不如适中的时候好。LR Range Test

    Adam需要warm up,否则前期的梯度会很乱。

    warmup,前期走小步一点。

    Variance大,则走小步;Variance小,则走大步。

    通用的方法

    再看Momentum

    Adam in the future:Nadam

    L2 regularization or weight decay?【SGDWM或AdamW(实际应用比较多)】

    更多探索,效果更好

    耐心教导模型

  • 相关阅读:
    EOS概念理解总结
    boost asio one client one thread
    EOS 数据签名与公匙验证代码用例
    EOS 智能合约编写(一)
    EOS多节点同步代码分析
    EOS 用户权限相关命令
    EOS 多主机多节点配置终极命令
    EOS多主机多节点环境配置
    ubuntu命令错误集
    java多线程中的调度策略
  • 原文地址:https://www.cnblogs.com/CheeseZH/p/13546274.html
Copyright © 2011-2022 走看看