深度学习笔记——优化算法、激活函数

258 阅读4分钟

大家好,这里是好评笔记,本文为试读,查看全文请移步公主号:Goodnote。本笔记介绍深度学习中常见的优化算法、激活函数。

1.png


@[toc]

优化算法

在深度学习中,优化算法用于调整模型的参数(如权重和偏置)以最小化损失函数

方法

梯度下降 (Gradient Descent, GD)

简介
梯度下降是最基本的优化算法,通过计算损失函数相对于模型参数的梯度沿着梯度下降的方向更新参数,以最小化损失函数。

  • 批量梯度下降(Batch Gradient Descent):在每次迭代中使用整个训练集计算梯度,计算开销大但收敛稳定。
  • 随机梯度下降(Stochastic Gradient Descent, SGD):每次迭代只使用一个样本计算梯度,效率高,但容易在训练中产生波动。
  • 小批量梯度下降(Mini-batch Gradient Descent):在每次迭代中使用一小部分训练集进行梯度计算,平衡了批量梯度下降和随机梯度下降的优缺点。 在这里插入图片描述

优点

  1. 简单直观:梯度下降的原理简单,计算损失函数的梯度,沿着梯度最速下降方向进行优化。

  2. 广泛适用:梯度下降可以应用于各种类型的机器学习问题,包括线性回归、逻辑回归和神经网络等。在许多优化问题中,梯度下降是基本的选择,适用范围广泛。

  3. 可扩展性强:梯度下降可以在不同的规模和复杂度下使用。通过调整批量大小(如批量梯度下降、随机梯度下降、小批量梯度下降),可以适应不同数据集的规模。

  4. 良好的收敛性:对于凸优化问题,梯度下降可以保证收敛到全局最优解。而在非凸问题中,梯度下降也能找到局部最优解,具有良好的泛化能力。

缺点

  1. 收敛速度慢:梯度下降尤其是批量梯度下降(Batch Gradient Descent),收敛速度慢。在大型数据集上,批量梯度下降的效率较低。

  2. 容易陷入局部最优:在非凸优化问题中,梯度下降容易陷入局部最优解

  3. 对学习率敏感:梯度下降依赖于超参数学习率(learning rate) 的选择。如果学习率太小,收敛速度非常慢;如果学习率太大,梯度下降可能无法收敛,甚至在训练过程中发散。

  4. 梯度消失或梯度爆炸问题:在深层神经网络中,由于链式法则,梯度值会在反向传播时逐层累积,容易导致梯度消失或梯度爆炸问题,导致网络训练不稳定或无法更新参数。

适用场景

  • 适用于数据量较大的场景,如深度学习中的大规模数据训练。

动量法 (Momentum)

简介
动量法是对GD的改进,它在更新参数时不仅考虑当前的梯度还考虑前几次的梯度。这样就像给参数加上“惯性” ,从而避免震荡在这里插入图片描述 优点

  • 更快的收敛速度:由于动量的存在,它可以在损失函数的谷底处快速收敛。
  • 减少震荡:动量法在梯度方向上能够更稳健,减少梯度震荡现象。

缺点

  • 需要调节动量系数:动量的超参数(通常设为0.9左右)需要精心调节,使用不当可能导致训练失效。

适用场景

  • 适用于数据噪声较多或梯度震荡较大的场景,如深度神经网络中使用的卷积层。

AdaGrad (Adaptive Gradient Algorithm)

简介
AdaGrad是一种自适应学习率的方法。它为每个参数独立调整学习率学习率的调整取决于历史梯度的平方和,这使得频繁更新的参数学习率逐渐减小,而较少更新的参数学习率保持较大。这种方式防止步长过大导致的震荡,也避免步长过小导致的收敛速度慢在这里插入图片描述

优点

  • 自适应学习率:不需要手动调整学习率,适应稀疏数据场景。
  • 适合稀疏数据:对于稀疏数据(如NLP任务中的词嵌入学习),AdaGrad表现很好。

缺点

  • 学习率过快衰减:随着训练的进行,累积的梯度会导致学习率快速减小,最终学习率趋近于0,难以继续学习。

适用场景

  • 适合于稀疏特征的场景,如自然语言处理中的词嵌入或推荐系统中的高维特征。

详细全文请移步公主号:Goodnote。

参考:欢迎来到好评笔记(Goodnote)!