梯度(向量)计算:

梯度下降法及迭代公式_机器学习

  1. Learning rate太小的话,训练速度会很慢,太大可能会的不到正确的结果;(可以作参数参数迭代次数—Loss的函数);
  2. 自动调节的learning rate的方法:

梯度下降法及迭代公式_算法_02

  1. (几种方法比较)

                

  1. Vanilla(一般的方法):

梯度下降法及迭代公式_梯度下降法及迭代公式_03

  1. Adagrad(除以了过去所有的梯度值的平方之和平均值的根)

梯度下降法及迭代公式_人工智能_04

其中算式,注意可以简化为:(分母项用于反映反差的大小,约束变化)

梯度下降法及迭代公式_python_05

具体步骤:

梯度下降法及迭代公式_机器学习_06

解释:参数迭代过程中最优的步伐大小应该是一次微分的绝对值除以二次微分的大小;

      但是微分求取的速度较慢,于是用平方和的根值代替二次微分;

梯度下降法及迭代公式_人工智能_07

  1. Stochastic Gradient Desent(SGD)(训练速度更快)随机梯度下降

首先只考虑一个example,调节参数后,再调用一个example调节参数,直到所有的example全部考虑并更新参数,最后调节的参数就是所求的;

对比:

梯度下降法及迭代公式_python_08

  1. SGD with Momentum(SGDM):该方法和过去的移动是相关的,采用指数加权平均的方法

梯度下降法及迭代公式_人工智能_09

不会在loss函数微分为零的时候就停止,如图,在第二处位置并未停下, 而是继续往前移动;

并且在真正的极小值处来回移动,直到符合条件。

梯度下降法及迭代公式_人工智能_10

  1. RMSProp (改进后的Adagrad,Adagrad规定移动大小项的分母会无限地增大,相应的movement就会很小): RMSProp解决了这一问题

梯度下降法及迭代公式_梯度下降法及迭代公式_11

 

梯度下降法及迭代公式_机器学习_12

仍然无法解决会卡在一个不是极小值但grad为零的位置。


  1. Adam:结合了RMSProp和Adagrad方法,更加有效解决问题

梯度下降法及迭代公式_梯度下降法及迭代公式_13

ε是为了防止分母为零,adam说明中的mt,vt,β1和β2是SGDM和RMSProp的对应式子和符号。

由于移动指数平均在迭代开始的初期会导致和开始的值有较大的差异,所以我们需要对上面求得的几个值做偏差修正,即

梯度下降法及迭代公式_梯度下降法及迭代公式_14

随着t的增大,adam中的β值逐渐减小为零,对前期影响大而后期影响小,达到纠正前期误差较大的作用。

问题:在后期时,即使gradient突然变得很大,也只会引起较小的变化,因为前面的gradient的和已经远远大于该gradient,对movement的影响就会很小。反而会被更多的但是gradient更小的所影响,再者对该Θ函数求极限会有一个最大值,移动距离会受限制。

梯度下降法及迭代公式_算法_15

试图优化adam算法:

  1. SWATS:比较adam和SGDM,adam训练的更快,但更不稳定;SGDM 训练更慢但是更加稳定。将二者结合就是SWATS的方法。即初始用adam,最 后收尾用SGDM。

梯度下降法及迭代公式_python_16

  1. AMSGrad:利用取最大值的方法,只解决了learning rate的大小问题

梯度下降法及迭代公式_机器学习_17

  1. AdaBound:界定了learning rate的上下限,比较粗暴的方式,是not adaptive的。


梯度下降法及迭代公式_python_18

试图优化SGDM算法:

  1. LR range test: 选择一个较好的learning rate

梯度下降法及迭代公式_机器学习_19

  1. Cyclical LR: 周期性变化的learning rate,鼓励更多的动态探索

梯度下降法及迭代公式_python_20

  1. SGDR:

梯度下降法及迭代公式_算法_21

  1. One-cycle LR:先增后减的learning rate

梯度下降法及迭代公式_人工智能_22

(14)

梯度下降法及迭代公式_python_23

(15)

梯度下降法及迭代公式_机器学习_24

(16)

梯度下降法及迭代公式_机器学习_25

(17)

梯度下降法及迭代公式_算法_26

目前其它的优化器

  在AMSGrad后,有很多其它的优化器出现,包括AdamW,修复adam的权重下降问题;QHAdam,用基于动量的随机梯度下降平均标准的随机梯度下降;AggMo,结合多个动量项;等其他优化器。

一些其他知识:

1.(warm-up adam)因为开始的估计不会非常准确,会使得movement非常震荡不稳定

梯度下降法及迭代公式_人工智能_27

如何warm-up?

用rt来估计方差的值,当方差较大的时候,就走对应小步一点,方差val小的时候就走大步一点

RAdam就是开始的时候用SGDM,后来用Adam;它解决的是一开始learning rate不准确的问题;

而SWATS是开始的时候用Adam,后来用SGDM;为了使accuracy收敛的更好,更加稳定和准确;

梯度下降法及迭代公式_人工智能_28

  1. 优化,每循环走几步后,将最初的直接更新到目前的gradient方向,能够避免explore到一个很深的陷阱里边。

梯度下降法及迭代公式_算法_29

 

梯度下降法及迭代公式_算法_30

  1. Adam & SGD的优化之有差别于之前的正则化的用法:将惩罚项不放在Loss函数里,即不在mt或者vt中,而是放在θ函数中,如图:

梯度下降法及迭代公式_python_31

  1. 其他可能对我们有帮助的方法:

(1)增加model的随机性   

梯度下降法及迭代公式_梯度下降法及迭代公式_32

  1. 对learning rate的一系列方法:

梯度下降法及迭代公式_人工智能_33

开始用简单的数据去训练,后面再用比较复杂困难的数据训练。

用别人训练好的model,节省时间和资源。

  1. 避免极端的训练情况,使一般化:

梯度下降法及迭代公式_梯度下降法及迭代公式_34

Feature scaling:(特征归一化)

归一化后加快了梯度下降求最优解的速度和有可能提高精度

梯度下降法及迭代公式_人工智能_35

梯度下降法及迭代公式_算法_36

常用方法:有多个example时,每一个example对应一组feature,即x1,x2....,xR,然后标准化各个参数feature。

梯度下降法及迭代公式_人工智能_37

梯度下降法及迭代公式_梯度下降法及迭代公式_38

参考:

梯度下降的理论支撑:

在一个圆形邻域中寻找最小值(可以通过泰勒展开简化loss方程,然后求最小值),并更新中心点,(半径大小与learning rate有关,需足够小才成立)直到找到最小点。

梯度下降的限制:

  1. 局部最优
  2. 在拐点卡住,如三次函数y=x^3在x=0这一点时,微分也为零(加上momentum就可以解决,如SGDM,每次移动都与前一次的移动相关,不会在loss函数微分为零的时候就停止)

总结:

梯度下降法及迭代公式_机器学习_39

梯度下降法及迭代公式_算法_40

梯度下降法及迭代公式_机器学习_41