1 概述
目前主要是凸优化的梯度下降算法。
1 还有别的优化算法吗?
2 梯度下降的思想是什么?
在深度学习中如何更新参数,稍微再详细一点? 大概明白了
2 梯度下降法
为什么梯度代表着下降最快的方向?
参考:
https://blog.csdn.net/red_stone1/article/details/80212814
是这个博客让我知道为什么梯度代表下降最快的方向
2.1 GD算法
思想:
结构:
代码:
公式推导:
2.2 GD算法延申
![](https://img-blog.csdnimg.cn/20201203090806726.png)
![](https://img-blog.csdnimg.cn/2020120309075469.png)
这三种GD算法的延申仅仅是批量和不批量的区别。随机梯度下降法的缺点在于随机性太大,仅仅根据一个样本更新参数,这里虽然引入了随机性和噪声,但期望仍然等于正确的梯度下降
1 SGD 因为更新比较频繁,会造成 cost function 有严重的震荡。BGD 可以收敛到局部极小值,当然 SGD 的震荡可能会跳到更好的局部极小值处。当我们稍微减小 learning rate,SGD 和 BGD 的收敛性是一样的。
2 就算是MBGD也有两个缺点:
2.1 不过 Mini-batch gradient descent 不能保证很好的收敛性,
2.3 有动量的随机梯度下降
首先要有指数加权平均的说法,而我们要介绍的指数加权平均本质上就是一种近似求平均的方法。
本质就是以指数式递减加权的移动平均。各数值的加权而随时间而指数式递减,越近期的数据加权越重,但较旧的数据也给予一定的加权。
公式如下:
参考:
https://zhuanlan.zhihu.com/p/29895933
理解指数加权平均的公式来由
https://www.cnblogs.com/guoyaohua/p/8542554.html
理解各种优化器的来由
2.4 AdaGrad(对学习率的增加和减少做一些操作)
前面用用一个学习率给所有参数进行更新未免有些不好,因为有些参数已经到了最小值附近,而有些参数的梯度很大,统一更新不太好。不如每个变量有不同的学习率来做。
参考: