梯度下降算法总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_27643275/article/details/81946959

    梯度下降算法 

优点

缺点

    BGD(batch)

1、相对噪声低

2、凸函数可以收敛到全局小值

  1. 每更新一次参数都要遍历所有样本,计算量开销大,计算速度慢
  2. 对于非凸函数收敛到局部最小值

      SGD

1、收敛速度快

2、有机会跳出局部最小值

 

1.失去所有向量化带来的加速(无法利用矩阵操作加速计算过程)

2.噪声大

3.永远不会收敛,一直在最小值附近波动

 

  Mini-batch SGD

(一般提到的SGD是Mini-batch SGD)

  1. BGD和SGD的折中
  2. Batch_size比较小时,可能跳出局部最小值

 

不能收敛到最小值,在最小值附近波动

 

 

Momentum

 

收敛速度非常快

参数采用相同的学习率,对于稀疏数据不友好

Adagrad

 

为不同的参数设置不同的学习率,易于处理稀疏数据

 

学习率不断较小最终达到一个非常小的值,模型学习速度很慢

RMSprop

 

  1. 解决了Adagrad学习率消失的问题
  2. 善于处理非平稳目标

 

相对于Adagrad收敛速度慢

Adam

 

1、结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点 
2、对内存需求较小  
3、也适用于大多非凸优化 ,适用于大数据集和高维空间 

 

 可能不收敛或者收敛到局部最小值

 

1.SGD + Momentum

被大量用在CNN 、NLP 问题上

2.Adam + SGD

Adam加速收敛过程,可能陷入到局部最小值或无法收敛,此时用小学习率 SGD 帮助 adam 跳出局部最小值。

 

猜你喜欢

转载自blog.csdn.net/baidu_27643275/article/details/81946959