文章目录
- 1.梯度下降
- 1.1批量梯度下降(BGD)
- 1.2随机梯度下降(SGD)
- 1.3 小批量随机梯度下降(MSGD)
- 1.4 比较:
- 1.5 动量算法(momentum)
- 1.6 Nestrov Momentum
- 2. 自适应方法
- 2.1 自适应学习率算法(AdaGrad)
- 2.2 均方根反向传播算法(RMSprop)
- 2.3 Adadelta
- 2.4 自适应矩估计优化算法(Adam)
- 3.牛顿法
- 3.1 牛顿法
- 3.2 拟牛顿法
- 总结
几乎所有的的机器学习问题最终都将转换为一个最优化问题,而一般回转换为最小化问题
传统的解析方法在机器学习的优化问题中常常不适用,通常使用的是迭代优化的问题,需要确定两个关键点:1.下降的方向 2.确定下降的步长
参考博客
1.梯度下降
每次都沿着目标函数的负梯度方向进行下降,更新参数
1.1批量梯度下降(BGD)
BGD 采用整个训练集的数据来计算 cost function 对参数的梯度
1.2随机梯度下降(SGD)
和批量梯度下降(BGD) 的一次用所有数据计算梯度相比,随机梯度下降(SGD)每次更新时对每个样本进行梯度更新,
对于很大的数据集来说,可能会有相似的样本,这样 BGD 在计算梯度时会出现冗余, 而 SGD 一次只进行一次更新,
就没有冗余,而且比较快,并且可以新增样本。
缺点
随机梯度下降(SGD)因为更新比较频繁,会造成 cost function 有严重的震荡,此外随机梯度下降(SGD)对噪声比较敏感;批量梯度下降(BGD)可以收敛到局部极小值,当然 随机梯度下降(SGD)的震荡可能会跳到更好的局部极小值处。;当我们稍微减小 learning rate,随机梯度下降(SGD)和批量梯度下降(BGD)的收敛性是一样的。
1.3 小批量随机梯度下降(MSGD)
MBGD 每一次利用一小批样本,即 n 个样本进行计算, 这样它可以降低参数更新时的方差,收敛更稳定,
另一方面可以充分地利用深度学习库中高度优化的矩阵操作来进行更有效的梯度计算。
和 SGD 的区别是每一次循环不是作用于每个样本,而是具有 n 个样本的Batch。
缺点
- 1.选择合适的学习率非常困难。太大会使得手敛波动大,太小使得手敛速度慢
- 2.所有的参数使用相同的学习率。对于不经常出现的特征的参数希望更新快些,对于常常出现的特征则希望跟新慢一些
- 3.sgd容易收敛到局部最优解,并且在某些会受到鞍点影响;通过合适的初始化和step size设置下,鞍点影响可以降低。
minibatchSGD是梯度下降方法中较常用的方法,而且性能比其他两种都要好一些。但是仍然存在很多的问题,于是就有后面的那些改进的方法。
1.4 比较:
1.5 动量算法(momentum)
1.6 Nestrov Momentum
2. 自适应方法
2.1 自适应学习率算法(AdaGrad)
2.2 均方根反向传播算法(RMSprop)
2.3 Adadelta
2.4 自适应矩估计优化算法(Adam)
3.牛顿法
3.1 牛顿法