深度学习常用优化方法

以下方法都是总结吴恩达深度学习课程的方法。

(1)梯度下降

batch-GD(size=m):速度比较慢,但每一次都是最优方向;
随机梯度下降(size=1):不能用向量加速,相对来说速度慢,而且最后只会在最优值附近徘徊;
mini-batch(size=16,32,64,128):速度较快,虽然也会在最优值之间徘徊,但是可以调整学习率使得到达最优值;

(2)动量梯度下降(Momentum)

动量法实际是利用加权指数平均将过去的梯度考虑在内,从而使的更新过程更加平滑
算法实现:
Vdw和Vdb初始化为零 ,β常用的值是0.9(上一时刻的权重)。
β
在我们进行动量梯度下降算法的时候,由于使用了指数加权平均的方法。原来在纵轴方向上的上下波动,经过平均以后,接近于0,纵轴上的波动变得非常的小;但在横轴方向上,所有的微分都指向横轴方向,因此其平均值仍然很大。最终实现红色线所示的梯度下降曲线。

(3)RMS-prob

除了上面所说的Momentum梯度下降法,RMSprop(root mean square prop)也是一种可以加快梯度下降的算法。同样算法的样例实现如下图所示:
在这里插入图片描述这里假设参数b的梯度处于纵轴方向,参数w的梯度处于横轴方向(当然实际中是处于高维度的情况),利用RMSprop算法,可以减小某些维度梯度更新波动较大的情况(我们希望w方向,也就是水平方向快一点,b方向,也就是垂直方向慢一点),如图中蓝色线所示,使其梯度下降的速度变得更快,如图绿色线所示。
在如图所示的实现中,RMSprop将微分项进行平方,然后使用平方根进行梯度更新(将曲线变得平滑),同时为了确保算法不会除以0,平方根分母中在实际使用会加入一个很小的值如ε=10−8。

(4)Adam( Adaptive Moment Estimation )

Adam 优化算法的基本思想就是将 Momentum 和 RMSprop 结合起来形成的一种适用于不同深度学习结构(应用广泛且有效)的优化算法。
在这里插入图片描述在这里插入图片描述

(5)学习率的衰减

在我们利用 mini-batch 梯度下降法来寻找Cost function的最小值的时候,如果我们设置一个固定的学习速率α,则算法在到达最小值点附近后,由于不同batch中存在一定的噪声,使得不会精确收敛,而一直会在一个最小值点较大的范围内波动,如下图中蓝色线所示。
但是如果我们使用学习率衰减,逐渐减小学习速率α,在算法开始的时候,学习速率还是相对较快,能够相对快速的向最小值点的方向下降。但随着α的减小,下降的步伐也会逐渐变小,最终会在最小值附近的一块更小的区域里波动,如图中绿色线所示。
在这里插入图片描述在这里插入图片描述

(6)局部最优问题

在低维度的情形下,我们可能会想象到一个Cost function 如左图所示,存在一些局部最小值点,在初始化参数的时候,如果初始值选取的不得当,会存在陷入局部最优点的可能性。
但是,如果我们建立一个神经网络,通常梯度为零的点,并不是如左图中的局部最优点,而是右图中的鞍点(叫鞍点是因为其形状像马鞍的形状)。
在这里插入图片描述 在一个具有高维度空间的函数中,如果梯度为0,那么在每个方向,Cost function可能是凸函数,也有可能是凹函数。但如果参数维度为2万维,想要得到局部最优解,那么所有维度均需要是凹函数,其概率为2−20000
,可能性非常的小。也就是说,在低纬度中的局部最优点的情况,并不适用于高纬度,我们在梯度为0的点更有可能是鞍点。
在高纬度的情况下:

  • 几乎不可能陷入局部最小值点;
  • 处于鞍点的停滞区会减缓学习过程,利用如Adam等算法进行改善。
深度学习常用优化算法主要包括以下几个: 1. **梯度下降法** (Gradient Descent): 是最基础的优化算法,通过迭代更新模型参数,沿着损失函数下降最快的方向前进。有批量梯度下降(Batch Gradient Descent)、随机梯度下降(SGD)和小批量梯度下降(Mini-Batch GD),其中SGD计算速度快但可能会发散,而Mini-Batch GD在两者间取得平衡。 2. **动量法** (Momentum): 加入了历史梯度信息,有助于加速收敛并减少震荡,类似于物理中的动量概念。 3. **自适应学习率算法**: - **Adagrad**: 自适应地调整每个参数的学习速率,对于稀疏数据效果较好。 - **RMSprop**: 综合了Adagrad的优点,并对过去的梯度做了指数衰减平均处理。 - **Adam**: 结合了动量和RMSprop的思想,通常被认为是最优选择,因为它考虑了梯度的一阶矩估计和二阶矩估计。 4. **Nesterov Accelerated Gradient (NAG)**: 是一种改进版的动量法,先预测一步再更新,理论上比标准动量法更快收敛。 5. **Adadelta**: 类似于RMSprop,但它不需要设置初始学习率,能自我调节学习率。 6. **L-BFGS** (Limited-memory Broyden-Fletcher-Goldfarb-Shanno): 非凸优化中的一种高效算法,适合小规模问题。 7. **AdamW** 或 **Decoupled Weight Decay Regularization**: Adam的基础上增加了权重衰减项,防止过拟合。 这些算法的选择往往取决于具体的任务、数据集大小以及模型架构,实践中可能会结合正则化技术和其他技巧来进一步提升性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值