1.几种梯度下降方法比较
梯度下降、随机梯度下降、小批量梯度下降比较
梯度下降使用全部样本进行一次梯度计算
随机梯度下降使用单个样本进行一次梯度计算
小批量梯度下降使用部分样本进行一次梯度计算
需要设定参数:学习率、小批量梯度下降中的分多少批量m
![ef835dacf78c4cf25008380b4b2e7d91.png](https://img-blog.csdnimg.cn/img_convert/ef835dacf78c4cf25008380b4b2e7d91.png)
![1ca5509a5dfd7f4f06d5fea3d2b12162.png](https://img-blog.csdnimg.cn/img_convert/1ca5509a5dfd7f4f06d5fea3d2b12162.png)
2.Gradient Descent
![cc7d158bbfbaacba428b22e5466ca39b.png](https://img-blog.csdnimg.cn/img_convert/cc7d158bbfbaacba428b22e5466ca39b.png)
3.Mini-Batch Gradient descent
![fb477b7953e54107be1695abe9830450.png](https://img-blog.csdnimg.cn/img_convert/fb477b7953e54107be1695abe9830450.png)
之前的batch都是完整的批量,最后一个batch会有所缺少,故两部分写。
4.Momentum动量
![d1d3ecdc5c859b9e9a33b9a79fa8652c.png](https://img-blog.csdnimg.cn/img_convert/d1d3ecdc5c859b9e9a33b9a79fa8652c.png)
利用动量,减小mini-batch的震荡。
全零初始化速度,维度与w,b一样
![a4d7415f1d44d0aff74e97fd803aea1e.png](https://img-blog.csdnimg.cn/img_convert/a4d7415f1d44d0aff74e97fd803aea1e.png)
更新公式:
![15770fa00776c793fe2e1b87b02aec93.png](https://img-blog.csdnimg.cn/img_convert/15770fa00776c793fe2e1b87b02aec93.png)
参数更新:
![97cdb57cbee8489faf67ff7211c666ff.png](https://img-blog.csdnimg.cn/img_convert/97cdb57cbee8489faf67ff7211c666ff.png)
当参数beta=0时就是标准的梯度下降。
beta越大越平滑,越考虑之前的梯度,默认beta=0.9,一般可以考虑0.8-0.999之间。
Momentum考虑过去梯度,以平滑当前梯度,可与随机梯度下降,梯度下降,小批量梯度下降连用。
5.Adam
Adam是最有效的优化算法,结合了Momentum和RMSProp(动量+指数加权平均)。
具体公式:
![e1da378195169b709f948ab25844c938.png](https://img-blog.csdnimg.cn/img_convert/e1da378195169b709f948ab25844c938.png)
增加了超参数:
参数初始化:
![4ea46ccaf050ecb2d6a31f2c8cd5dea0.png](https://img-blog.csdnimg.cn/img_convert/4ea46ccaf050ecb2d6a31f2c8cd5dea0.png)
参数更新:
![1076e7543afe3042832b0eba93fdba94.png](https://img-blog.csdnimg.cn/img_convert/1076e7543afe3042832b0eba93fdba94.png)
![ebb3f94be6d775eb5f25627f1f4a32ff.png](https://img-blog.csdnimg.cn/img_convert/ebb3f94be6d775eb5f25627f1f4a32ff.png)
按照前处给的公式编写对应代码即可。
6.测试
梯度下降不需要初始化参数,Momentum和Adam都需要初始化参数。
![a3776085380b7773cd12932a95ad7780.png](https://img-blog.csdnimg.cn/img_convert/a3776085380b7773cd12932a95ad7780.png)
![1396add73d5d1e2f21140c0cb1f541b0.png](https://img-blog.csdnimg.cn/img_convert/1396add73d5d1e2f21140c0cb1f541b0.png)
![22b3057805eb8ea7f06517862b8bdfa1.png](https://img-blog.csdnimg.cn/img_convert/22b3057805eb8ea7f06517862b8bdfa1.png)
整个modle都是对之前完成函数的调用。
(1)小批量梯度下降
![0ed3385fe2fbc14557a566ef8784c153.png](https://img-blog.csdnimg.cn/img_convert/0ed3385fe2fbc14557a566ef8784c153.png)
准确率0.797
(2)带动量的小批量梯度下降
![04dba85f474edc919f41a8c216401048.png](https://img-blog.csdnimg.cn/img_convert/04dba85f474edc919f41a8c216401048.png)
准确率0.797
(3)带Adam模型的小批量梯度下降
![b7638426823076810973eee6f12bab66.png](https://img-blog.csdnimg.cn/img_convert/b7638426823076810973eee6f12bab66.png)
准确率0.94
小结:结果显示GD和Momentum准确率相同,Adam比前两者高很多,一般情况下Momentum的结果应当比GD的要好,但此处数据集过于简单,学习率也较低因此影响不大。Adam结果要远好于GD和Momentum,可能继续训练三者的结果会比较接近,但是也可以发现,Adam比GD、Momentum收敛的更快。