CS Notes
  • CS-Notes文档说明
  • 机器学习
    • 频率派和贝叶斯学派
    • 机器学习中的分类指标
    • 数学基础
    • 数据清洗
    • SVM
    • 线性模型
    • 拉格朗日乘子法和KKT条件
    • 集成学习
    • 贝叶斯分类器
    • 降维和度量学习
    • 决策树
    • 神经网络
    • 神经网络优化器
    • Autoencoders & GANs
    • IoU
    • EM算法
    • ML问题总结
    • 机器学习&深度学习学习资料汇总
    • 如何阅读论文
    • 如何写好一篇论文
  • 语言、算法相关
    • 背包问题 - 01背包&完全背包
    • 平衡二叉树AVL
    • 红黑树RB-Tree
    • STL容器
    • STL 常用算法
    • Markdown总结
    • 问题总结
    • 代码汇总
    • PAT手册
  • MIT 6.828 OS课程
  • ImGui
Powered by GitBook
On this page
  • BGD
  • SGD
  • MBGD
  • Momentum
  • Adagrad
  • RMSprop
  • Adam

Was this helpful?

  1. 机器学习

神经网络优化器

类别

优化器

固定学习率

BGD(批梯度下降)

SGD(随机梯度下降)

MBGD(小批量梯度相加)

Momentum

Nesterov Momentum

动态学习率

Adagrad

RMSprop

Adam

BGD

更新规则如下:

θj:=θj−α∂J(θ)∂θj∂J(θ)∂θj=1m∑i=1m(hθ(xi)−yi)2\theta_j:=\theta_j-\alpha\frac{\partial J(\theta)}{\partial\theta_j}\\ \frac{\partial J(\theta)}{\partial\theta_j}=\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x_i)-y_i)^2θj​:=θj​−α∂θj​∂J(θ)​∂θj​∂J(θ)​=m1​i=1∑m​(hθ​(xi​)−yi​)2

其中m表示的是样本数,所以在BGD中,没更新一个参数,需要遍历所有的样本,有n个参数,则更新一次参数需要遍历n次样本,使得训练速度非常慢,所以BGD不适合大数据集的训练。

SGD

θj:=θj−α(hθ(xi)−yi)\theta_j:=\theta_j-\alpha(h_{\theta}(x_i)-y_i) θj​:=θj​−α(hθ​(xi​)−yi​)

只根据一个样本就更新参数,速度就非常快了,但是这样也会引入新的问题,就是每次更新的方向不一定是朝着最优的方向,所以训练的准确度下降,不一定能够得到全局最优。

MBGD

MBGD则是综合了BGD和SGD的特点,每次选择所有样本的一个小批量来更新参数。

优点:收敛更稳定,另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。 缺点:关于学习率的选择,如果太小,收敛速度就会变慢,如果太大,loss function就会在极小值处不停的震荡甚至偏离。

Momentum

这个思想是结合了物体运动的惯性问题,当一个球体从山坡上滚下的时候,当到达的一个低谷的时候,由于惯性的存在会继续保持向前的动力,在低谷的时候会来回滚动,最终停止。这样有什么好处呢?在神经的网络的训练中,损失平面是凹凸不平的,那么会有很多的低谷,我们的目标是找到海拔最低的那个低谷,但是很多时候可能陷入一个低谷,无法跳出来训练的损失无法继续下降,但是这个低谷并不是最优的,引入了动量,在进入这个低谷的时候,由于保持着一定的惯性,就有概率能够跳出这个低谷,从而继续寻找最优的低谷。同样的,这样也会引入新的问题,就是overshoot,就是假设我们已经找到了最优的低谷,但是由于惯性的存在,我们却跳出了这个低谷,导致整体的性能下降。

Adagrad

https://www.cnblogs.com/yunqishequ/p/10026758.html

RMSprop

Adam

ref:

https://blog.csdn.net/weixin_29260031/article/details/82320525

Previous神经网络NextAutoencoders & GANs

Last updated 5 years ago

Was this helpful?