几种优化算法(SGD, Adam, RMSPROP, BGD,MBGD, Momentum,)的比较

打卡+坚持

今日语录:作为一名投资者,必须得学会抗压,需要一个良好的心态,如果心态跟着行情走,那就是一个失败的投资者。

一、首先我们需要了解这几个优化算法的目的是什么?

  • 给定目标函数f(x),寻找到一组参数,最小化f(x)
  1. BGD(batch gradient descent) 批梯度下降法:
  • 采用整个训练集的数据来对损失函数进行计算
  • 缺点:
    这种方法在一次更新中,对整个数据集求梯度,遇到数据量太大时,计算速度很慢,不能投入新数据实时更新模型。
    我们会事先定义一个迭代次数epoch,首先计算梯度向量params_grad,然后沿梯度方向更新params,learning_rate决定每一步迈多大。
    对于凸函数可以收敛到全局最小值,对于非凸函数可以收敛到局部最小值。
  1. SGD(stochastic gradient descent)随机梯度下降法:
  • 和BGD一次使用全部数据计算梯度相比,SGD更新时对每个样本进行梯度更新,对很大的数据集来说,可能会有相似的样本,这就导致BGD出现数据冗余,而SGD一次只进行一次更新,没有冗余,速度快,可以新增样本
  • 缺点:
  • SGD更新比较频繁,可能导致cost function严重的震荡。
  • BGD可以收敛到局部极小值,而SGD的震荡可以跳到更好的局部极小值处。当稍微更改了learning rate时,SGD和BGD收敛性是一样的。
  1. MBGD(mini-batch gradient descent ):小批度梯度下降法
  • 每一次利用利用一小批样本,即n个样本进行计算,这样他可以降低参数更新时的方差,收敛更稳定。
  • 与SGD不同的是,每一次运用的不是一个样本,而是利用n个样本。
  • 超参数n的设定n 一般在50~256之间。
  • 缺点:
    不能保证很好的收敛性,learning rate如果选择的太小,收敛速度会很慢,loss如果太大,loss function会在极小值处附近不停震荡,甚至偏离。
    有一种措施是先设定大一点的学习率,当两次迭代之间的变化低于某个阈值后,就减小 learning rate,不过这个阈值的设定需要提前写好,这样的话就不能够适应数据集的特点。
    几种优化算法(SGD, Adam, RMSPROP, BGD,MBGD, Momentum,)的比较_第1张图片
  1. Momentum:
    SGD方法的一个缺点是,其更新方向完全依赖于当前的batch,因而其更新十分不稳定。解决这一问题的一个简单的做法便是引入momentum。
    几种优化算法(SGD, Adam, RMSPROP, BGD,MBGD, Momentum,)的比较_第2张图片
    momentum即动量,它模拟的是物体运动时的惯性,即更新的时候在一定程度上保留之前更新的方向,同时利用当前batch的梯度微调最终的更新方向。这样一来,可以在一定程度上增加稳定性,从而学习地更快,并且还有一定摆脱局部最优的能力:
    β即momentum,

  2. RMSPROP:

几种优化算法(SGD, Adam, RMSPROP, BGD,MBGD, Momentum,)的比较_第3张图片
6. Adam
几种优化算法(SGD, Adam, RMSPROP, BGD,MBGD, Momentum,)的比较_第4张图片

你可能感兴趣的:(计算机视觉)