1.Adagrad
为什么学习率要随着参数更新次数变化呢,而且是越来越小呢?
因为起初我们在梯度下降时候需要大跨步走,快速下降节省时间,当到达最优参数的附近h时候大跨步走就有可能错过最优点,导致一直无法收敛,所以到最优参数附近的时候应该小步走,而且是越来越小。
步骤:
1.求根号下在此之前包括本次所有偏导平方之和
2.学习率除以2得到的值得到变化的学习率
3.与本次偏导gt相乘得到w的变化值
4.wt与3得到的值相减得到wt+1,完成参数更新
2.RMSProb
和Adagrad原理基本一致,只是加了α,可以控制给当前次偏导大的权重,给过去偏导小的权重。
RMSProb、Adagrad解决的是学习率的问题
步骤:
1.将本次之前的偏导项平方后之和乘以α
2.将本次偏导项平方后乘以(1-α)
3.求1,2结果和开根号
4.学习率除以3得到的结果得到新的学习率
5.新的学习率与本次偏导gt相乘得到w的变化大小
6.wt-5得到的值得到wt+1,完成参数更新
3. Momentum
解决的是下面三种情况:梯度为0,无法继续梯度下降,但是没到达最优解
迭代公式:
与前俩个不同的地方在于,前俩个是学习率随着迭代次数变化,Momentum是w的学习率不变,学习率乘以的偏导项不仅和当前偏导项有关,还和之前的偏导项有关,也就是类似于动量,当前的速度不仅和当前的所处的梯度有关,还和之前的速度有关,之前的速度又是和之前的梯度相关的。
步骤:
1.通过之前的速度vt和当前的梯度(加速度)计算出当前的vt+1
2.将学习率和当前的vt+1相乘得到w的改变量
3.wt-α.vt+1得到更新后的wt+1
4. Adam
将RMSProb和Momentum结合,既解决学习率问题,又解决梯度为零无法继续梯度下降,但是没到达最优解的问题。
步骤:
1.计算本次偏导项gt
2.计算改变后偏导项vt+1 = β1 .vt +(1-β1).gt
3.计算改变学习率的项σt+1 = β2.σt+(1-β2).gt^2
4.将2,3分别除以(1-β1),(1-β2)使得后面的项的系数为1,得到v-t+1和σ-t+1
5.跟新参数wt+1 = wt - α.v-t+1/√σ-t+1 +э(微小的偏置项)