adam 参数解释


adam 参数解析

参考

https://zhuanlan.zhihu.com/p/91166049
https://zhuanlan.zhihu.com/p/32626442

伪代码

参数解释

  1. Mt
    • Mt 提供了需要增大学习率的参数加速训练的能力.
      *. 累计的一阶动量(梯度)越大 代表在这个方向上历史向单一方向更新的越多. 越需要收敛.
  2. Vt
    • vt提供了需要减小学习率衰减的能力.
    • vt越大代表历史累计的二阶动量(梯度平方)越大, 代表这个参数更新越频繁,震荡越严重. 所以需要衰减学习率.
  3. t
    • 代表时间步, 每个epoch更新一次.
    • 所以在每个epoch开始时loss可能会有震荡.
  4. ß1, ß2,
    • 起到了对一二阶动量指数衰减的作用. 避免vt 累计过大, 导致参数学习率太小无法更新. 克服了adagrad 累计梯度导致分母过大参数无法更新的问题.
    • 下图展示出时间步1~20时,各个时间步的梯度随着时间的累积占比情况。(ß1,ß2的作用, 指数衰减 )
  5. epsilon
    • 避免gt除数(vt+epsilon) 为0. 注意如果vt过小会导致学习率过大, 这时可以调大epsilon值, 避免震荡.

adam的参数学习率理解

  1. 由于引入了一阶&二阶动量. adam的每个参数学习率都是不同的.
  2. 狭义上的学习率是固定的. 即alpha本身不会改变.
  3. 但梯度的系数等于 $ alpha * \frac{m_t}{\sqrt{v_t} + epsilon} $ 即通过累计的一二阶动量对梯度做更新.
    • 所以打印adam的learning rate 会发现并没有变化.
  4. 有必要也可以为adam引入学习率衰减, 以保证不过拟合, 二者并不矛盾.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM