Java教程

关于深度学习优化器【转载以学习、回忆】

本文主要是介绍关于深度学习优化器【转载以学习、回忆】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

来源链接:https://mp.weixin.qq.com/s/kUE7NcTiQyYP-oWi0T_mbA

来源公众号:阿柴的算法学习日记

转载以学习回忆

___________________________开始

原文此处有动图。。。。

梯度下降是指,给定待优化的模型参数和目标函数后,算法沿梯度

 

 

 的相反方向更新来最小化。学习率a决定了每一时刻的更新步长。对于每一个时刻t,我们可以用下述步骤来描述梯度下降的流程。

 

 

1.计算目标函数的梯度

 

 

 2.更新模型参数

 

 

 

梯度下降法目前主要分为三种方法,区别在于每次参数更新时计算的样本数据量不同:批量梯度下降法(BGD, Batch Gradient Descent),随机梯度下降法(SGD, Stochastic Gradient Descent)及小批量梯度下降法(Mini-batch Gradient Descent)。

  • 批量梯度下降法 BGD

 

 

  •  随机梯度下降法 SGD

 

 

  •  小批量梯度下降法 Mini-batch GD

 

 

 注意红箭头 目前的SGD默认是小批量梯度下降算法

 

对于随机梯度下降算法,明显存在以下缺点

  • 选择合适的learning rate比较困难 ,学习率太低会收敛缓慢,学习率过高会使收敛时的波动过大;

  • 所有参数都是用同样的learning rate;

  • SGD容易收敛到局部最优,并且在某些情况下可能被困在鞍点。

二 动量优化法

动量优化方法引入物理学中的动量思想,加速梯度下降,有Momentum和Nesterov两种算法。当我们将一个小球从山上滚下来,没有阻力时,它的动量会越来越大,但是如果遇到了阻力,速度就会变小,动量优化法就是借鉴此思想,使得梯度方向在不变的维度上,参数更新变快,梯度有所改变时,更新参数变慢,这样就能够加快收敛并且减少动荡。

  • Momentum

 

 

【吴恩达里边的讲解】 

 

 

 

 

 

 

 

 

  •  NAG(Nesterov accelerated gradient)

三 自使用学习率优化算法

  • AdaGrad
  • AdaDelta
  • RmsProp 

 又称均方根传递。和动量一样减小震荡,能利用大学习率,从而加速。

  • Adam

关于Adam的就看不懂了

Adam 本质实际上是Momentum和RMSprop结合在了一起

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 吴恩达讲解视频https://www.bilibili.com/video/BV1i741147Q5?p=20

要理解这些算法 要用【指数加权平均】

 

 

 【理解指数加权平均】

 

 

 【偏差修正】

 

 

 当t增大无影响,初期修正了过小的缺点

【动量梯度下降法】

 

这篇关于关于深度学习优化器【转载以学习、回忆】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!