深度学习相关概念:动量法与自适应梯度

简介: 在梯度下降的每一步中,我们都用到了所有的训练样本,我们需要进行求和运算,在梯度下降中,在计算微积随机梯度下降(SGD)

 在上一篇博客中,我们介绍了梯度下降算法。但是梯度下降算法存在计算量过大或者陷入局部最优的问题。人们如今已经提出动量法和自适应梯度法来解决上述的问题。


1.梯度下降存在的问题


1.批量梯度下降(BGD)


在梯度下降的每一步中,我们都用到了所有的训练样本,我们需要进行求和运算,在梯度下降中,在计算微积随机梯度下降(SGD)


2.随机梯度下降法(SGD)


由于随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。


071d0f37021a4320924d0e0ee8ef16e4.png


3.小批量梯度下降(MBGD)

同SGD一样,每次梯度的方向不确定,可能陷入局部最优。


54caf8b411664557b25c43a394a96247.png


2.动量法(momentum)


  普通的梯度下降法当接近最优值时梯度会比较小,由于学习率固定,普通的梯度下降法的收敛速度会变慢,有时甚至陷入局部最优。


改进目标:改进梯度下降算法存在的问题,即减少震荡,加速通往谷低

 

改进思想:利用累加历史梯度信息更新梯度


947d13f4b3924664a2183926db886905.png


 这时如果考虑历史梯,将会引导参数朝着最优值更快收敛,这就是动量算法的基本思想。


f2d108fbe8d74ba59118152d33ddf23e.png


  可是为什么加入历史梯度值,就会避免陷入震荡,落入局部最优呢?

 

因为累加过程中震荡方向相互抵消,假设第n次的梯度g为-1,第n+1计算的梯度g’为1,那么通过累加后,二者再更新权重时梯度就会变成0,而不是在梯度g为-1的方向进行权重更新后,再在梯度g为1的方向进行权重更新(也就是说避免震荡)。


49b93d0ac40146c59dba3c3087a6d678.png


  此外动量法还可以避免高维空间中的鞍点(导数为0的点但不是全局最优点)


1dc17e25fb9b4c73aa68cff8b5e174ad.png


3.自适应梯度与RMSProp


  自适应梯度法通过减小震荡方向步长,增大平坦方向步长来减小震荡,加速通往谷底方向。但是如何区分震荡方向与平坦方向?梯度幅度的平方较大的方向是震荡方向;梯度幅度的平方较小的方向是平坦方向。


aa0f23e7316848d8ba47730d10de472c.png


  AdaGrad方法和RMSProp方法都是自适应梯度方法


3.1AdaGrad方法


139e670d91c445a2881efe5564b4dec6.png


  AdaGrad会记录过去所有梯度的平方和,更新权重时如下图所示


30165b6fe5af43018ae3e3e4a41d9cfa.png


  但是学习越深入,r会累计的越来越大,更新的幅度就越小。如果无止境地学习,更新量就会变为0, 完全不再更新。


3.2RMSProp方法


  RMSProp优化算法和AdaGrad算法唯一的不同,就在于累积平方梯度的求法不同。RMSProp算法不是像AdaGrad算法那样暴力直接的累加平方梯度,而是加了一个衰减系数来控制历史信息的获取多少。


f33fad500de64a0a89559f674c333736.png


  假设ρ取0.9,则在100次之后约等于2.65e-5=0.0000265≈0,也就是说100次前的梯度不在参与计算了。这样就可以控制历史信息的获取多少。


92a1562fb832433da19bb9dcffaa3c74.png


4.Adam方法(Adaptive Momentum Estimation)


  Adam是RMSProp的动量版,采用了一个修正偏差来解决冷启动问题。


201e5502db8841c0a6aa8a1b1479dafe.png


不同最优化方法效果:


9547d1a9e96f80908069b4e66750dab8.gif


c86a339b7403f5a2b91d1c1d51c92fce.gif


上图展示了一个马鞍状的最优化地形,其中对于不同维度它的曲率不同(一个维度下降另一个维度上升)。注意SGD很难突破对称性,一直卡在顶部。而RMSProp之类的方法能够看到马鞍方向有很低的梯度。因为在RMSProp更新方法中的分母项,算法提高了在该方向的有效学习率,使得RMSProp能够继续前进。

目录
相关文章
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的自适应神经网络:原理与应用
【8月更文挑战第14天】在深度学习领域,自适应神经网络作为一种新兴技术,正逐渐改变我们处理数据和解决问题的方式。这种网络通过动态调整其结构和参数来适应输入数据的分布和特征,从而在无需人工干预的情况下实现最优性能。本文将深入探讨自适应神经网络的工作原理、关键技术及其在多个领域的实际应用,旨在为读者提供一个全面的视角,理解这一技术如何推动深度学习向更高效、更智能的方向发展。
|
23天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习之自适应控制器设计
人工智能基于深度学习的自适应控制器设计在自动化系统、机器人控制、工业制造、无人驾驶等领域中有着广泛应用。自适应控制器借助深度学习模型的强大特征提取和学习能力,能够在未知或动态变化的环境中对系统进行实时调节,从而提升系统的响应速度、稳定性和控制精度。
30 1
|
1月前
|
机器学习/深度学习 算法
深度学习中的自适应抱团梯度下降法
【10月更文挑战第7天】 本文探讨了深度学习中一种新的优化算法——自适应抱团梯度下降法,它结合了传统的梯度下降法与现代的自适应方法。通过引入动态学习率调整和抱团策略,该方法在处理复杂网络结构时展现了更高的效率和准确性。本文详细介绍了算法的原理、实现步骤以及在实际应用中的表现,旨在为深度学习领域提供一种创新且有效的优化手段。
|
1月前
|
机器学习/深度学习 传感器 数据采集
深度学习之自适应机械手操作
基于深度学习的自适应机械手操作,是指通过深度学习技术赋予机械手灵活、智能的控制能力,使其能够适应不同的任务和环境变化,完成复杂的物体抓取、操作和交互。
36 2
|
1月前
|
机器学习/深度学习 数据采集 自然语言处理
通过深度学习实践来理解深度学习的核心概念
通过实践,不仅可以加深对深度学习概念的理解,还能发现理论与实际之间的差距,进而对模型进行改进和优化。实践中遇到的问题(如梯度消失、过拟合、训练效率低等)能促使你深入思考,进而更加全面地掌握深度学习的核心概念。
44 4
|
2月前
|
机器学习/深度学习 分布式计算 数据可视化
对深度学习概念的基础理解与认识
一、神经网络的组成 人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。 这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。 感知机 感知机是1957年,由Rosenblatt提出会,是神经网络和支持向量机的基础。 感知机是有生物学上的一个启发,他的参照对象和理论依据可以参照下图:(我们的大脑可以认为是一个神经网络,
对深度学习概念的基础理解与认识
|
1月前
|
机器学习/深度学习 Python
深度学习笔记(六):如何运用梯度下降法来解决线性回归问题
这篇文章介绍了如何使用梯度下降法解决线性回归问题,包括梯度下降法的原理、线性回归的基本概念和具体的Python代码实现。
63 0
|
3月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习中的梯度消失与梯度爆炸问题解析
【8月更文挑战第31天】深度学习模型在训练过程中常常遇到梯度消失和梯度爆炸的问题,这两个问题严重影响了模型的收敛速度和性能。本文将深入探讨这两个问题的原因、影响及解决策略,并通过代码示例具体展示如何在实践中应用这些策略。
|
4月前
|
机器学习/深度学习 人工智能 并行计算
现代深度学习框架构建问题之线性代数的常见概念定义如何解决
现代深度学习框架构建问题之线性代数的常见概念定义如何解决
46 3
|
4月前
|
机器学习/深度学习 算法
现代深度学习框架构建问题之tinyDL中机器学习的通用组件与深度学习如何解决
现代深度学习框架构建问题之tinyDL中机器学习的通用组件与深度学习如何解决
88 2

热门文章

最新文章