当前位置:   article > 正文

【深度学习基础】02梯度下降算法改进:SGD、Momentum、NAG、RMSProp、Adam等_基于梯度下降法( sgd) 的adam(adaptive moment estimation)算法

基于梯度下降法( sgd) 的adam(adaptive moment estimation)算法

目录

1. 优化算法背景

1.1 常见优化问题

1.1.1 梯度消失或梯度爆炸

1.1.2 局部最小值

 1.2 常用解决办法

1.2.1 参数初始化策略

1.2.2 小批量梯度下降

1.2.3 梯度下降算法优化(本文关注)

1.2.4 其他非算法优化方式

2. 梯度下降算法优化

2.1 动量梯度下降

2.2 RMSProp算法

2.3 Adam算法

2.4 学习率衰减


1. 优化算法背景

传统的机器学习会小心设计目标函数和约束,以确保优化问题是凸的,从而避免一般优化问题的复杂度。在训练神经网络时,首先,会遇到大量的非凸优化情况;其次,由于巨大的数据量导致训练速度很慢,无法使深度学习发挥最大效果。本文总结了一些常见的梯度下降优化算法能够帮助我们快速训练模型,提高计算效率。

1.1 常见优化问题

1.1.1 梯度消失或梯度爆炸

  • 目前神经网络中损失函数计算的误差是通过梯度反向传播的方式指导深度网络权值的更新优化
  • 其中将误差从末层往前传递的过程需要链式法则(BP算法是GD在Chain Rule中的应用)
  • 而链式法则是连乘的形式,所以当层数越深的时候,梯度将以指数形式传播,梯度消失和爆炸问题一般随着网络层数的增加变得越来越明显
  • 假设g(z) = z, b^{[l ]} = 0(g为激活函数),对于目标输出有:\hat{y} = W^{[L]}W^{[L-1]}...W^{[2]}W^{[1]}X
    • 对于W^{[l]}>1的情况,梯度值将以指数级递增。反之亦然。

1.1.2 局部最小值

  • 对于非凸函数,如神经网络,有可能会存在多个局部极小值。事实上,几乎所有的深度模型基本上都会有非常多的局部极小值。
  • 学者们猜想,对于足够大的神经网络而言,大部分局部最小值都有很小的代价函数,我们能不能找到真正的全局最小点并不重要,而是需要在参数空间中找到一个代价很小(但不是最小)的点。
损失函数多个最小值
  • 实际上,对于很多高维非凸函数而言,局部极小值都远少于另一类梯度为零的点:鞍点。鞍点附近的某些点比鞍点有更大的代价,而其它点则有更小的代价。鞍点附近的平稳段会使得学习非常慢
  • Momentum、RMSProp以及Adam优化算法能够帮助尽早走出平稳段,加速学习
鞍点

 1.2 常用解决办法

解决办法有很多种,可以从参数的初始化策略、获取梯度的训练集大小、学习率以及梯度下降算法等角度入手,本文主要针对梯度下降算法展开介绍

1.2.1 参数初始化策略

  • 好的初始化可以让神经元各层激活值不会出现饱和现象,并且也不能为0
  • 常用的初始化方法
    • 随机初始化:搞一些很小的值进行初始化,实验表明大了就容易饱和,小的就激活不动
    • 标准初始化:权重参数满足某一分布
    • Xavier初始化:【首先有一个共识必须先提出:神经网络如果保持每层的信息流动是同一方差,那么会更加有利于优化】
      • Xavier Glorot认为还不够,应该增强这个条件,好的初始化应该使得各层的激活值和梯度的方差在传播过程中保持一致,这个被称为Glorot条件
      • 如果反向传播每层梯度保持近似的方差,则信息能反馈到各层。而前向传播激活值方差近似相等,有利于平稳地学习
      • 这就要求激活函数满足:①线性;②激活值关于0对称。该初始化方法适合tanh函数
    • He初始化:适用于ReLU激活函数

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/886623
推荐阅读
相关标签