梯度下降
梯度下降目的是找到J(x,y,z,...)类函数的最小代价值,梯度下降并不仅仅可以解决一类线性问题,也可以解决二类非线性问题等。
用一张图来说明原理
这张图就说明了梯度下降的工作原理,简述来说就是利用下山法来找到山中盆地(最小值点)
而这张图找到了盆地但是没有找到最优的(局部最优)
我们更新参数的时候需要同步更新参数,梯度下降的公式呢就是原始变量减去学习率乘当前状态的对于此参数的偏导数,学习率α在这里就能直观感受到,他决定了下山速度,α越大下山越快,也就是下降的越快,快速的找到最低点。α越小,下降的越慢,虽然找最低点比较慢,但是较大的α而言更精确找到最低点。
梯度下降学习率解决方案
AdaGrad算法
在更新学习率的时候加入参数r
r=r+g^2 #这里的g是代表梯度下降程度(L对于某个参数的偏导数)当下降过快就加大学习率如果过小就减小学习率
b<-b-(α/(sqrt(r)+S))g #这样的方法更新参数b不会出现反复横跳的情况 S是防止分母为0
RMSProp算法
针对AdaGrad算法改进版本,学习率只和学习率相关可能不受控制这时在原本的公式进行改进
r=ρr+(1-ρ)g^2
b<-b-(α/(sqrt(r+S)))g
Adam算法
由于公式中字母引用符号不方便表示,图片引用自Bilibili UP主风中摇曳的小萝卜