问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

深度学习中的正则化与优化:原理与实践

创作时间:
作者:
@小白创作中心

深度学习中的正则化与优化:原理与实践

引用
CSDN
1.
https://blog.csdn.net/m0_74259787/article/details/144773519

深度学习中的正则化和优化是确保模型性能的关键技术。本文将详细介绍欠拟合与过拟合的原因及解决方案,深入探讨正则化的原理与实现方法,以及各种优化策略的优劣。同时,文章还将讨论学习率的选择与调整策略,帮助读者全面理解这些核心概念。

正则化和优化

欠拟合和过拟合

  • 欠拟合的原因:模型复杂度过低,不能很好地拟合所有数据,导致训练误差大。
  • 避免欠拟合:增加模型复杂度,如采用高阶模型(预测)或引入更多特征(分类)等。
  • 过拟合的原因:模型复杂度过高,训练数据过少,导致训练误差小但测试误差大。
  • 避免过拟合:降低模型复杂度,如加上正则惩罚项(L1、L2),或增加训练数据等。

正则化

正则化的核心思想是偏好简单的模型,主要作用包括:

  1. 降低训练噪声对模型的影响。
  2. 降低模型对训练数据的过拟合。

正则化项的数学表达式为:

其中,L0是原始损失,L1是正则化项,λ是正则化系数,λ越大表示正则化越强。

具体到权重W的正则化表达式为:
L(W)=1N∑i=1NLi+λR(W)
其中,W是权重,N是样本数量,λ是正则化强度的超参数。

常见的正则化项包括:

  • L1正则化项:R(W)=∑i,j|Wi,j|
  • L2正则化项:R(W)=∑i,jWi,j2

L1正则化倾向于产生稀疏权重,而L2正则化则偏好“分散”权重。例如:

  • L2正则化偏好:[0.25, 0.25, 0.25, 0.25]
  • L1正则化偏好:[1, 0, 0, 0]

其他正则化方法还包括dropout、batch normalization和fractional pooling等。

优化

优化的核心是通过梯度下降法更新模型参数。梯度方向是函数值最大增长的方向,而更新模型参数的方向则是梯度方向的相反方向,更新幅度与梯度大小有关。

梯度计算方法包括:

  • 数值法:计算慢但易于实现
  • 解析法:快速精确但实现复杂

可以使用解析法计算梯度,使用数值法检查梯度。

随机梯度下降(SGD)

SGD使用小批量样本计算梯度,计算速度快但可能产生震荡。

局部最优值与鞍点

  • 局部最优值:理论上很可怕,但随着网络参数量的增加,这个问题的影响会减小。对于大型网络,局部最优值与全局最优值很接近。
  • 鞍点:是指函数在某一点的梯度为零,且该点处的Hessian矩阵有正负性质的点。跳出鞍点需要很长时间

区分鞍点和局部最优值可以通过Hessian矩阵的特征值:

  • 鞍点的Hessian矩阵特征值有正有负
  • 局部最优值的Hessian矩阵特征值都为正或为负

Hessian矩阵的计算公式为:
Hij=∂2L∂xi∂xj

模型优化策略

  1. SGD+Momentum:将连续梯度平均在一起,以往的梯度有一个加权和加到最后的梯度上。
  2. RMSProp:根据每个维度的梯度值历史平方和进行梯度缩放(有衰减),使得沿着陡峭方向的优化变慢,沿着平缓方向的优化加快。公式为:
    grad_squared=decay_rate∗grad_squared+(1−decay_rate)∗dx∗dx
  3. AdaGrad:grad_squared+=dx∗dx,相比RMSProp缺少decay_rate,导致learning_rate衰减更快,更适合解决凸优化问题,而RMSProp更适合深度学习(以及大多数非凸问题)。
  4. Adam:结合了Momentum和RMSProp,对学习率进行自适应缩放。具体公式为:
    m=β1∗m+(1−β1)∗dx
    v=β2∗v+(1−β2)∗dx∗dx
    m=m/v+ϵ
    其中,ϵ是防止除0的常数,β1和β2是超参数,一般取0.9和0.999。
  5. AdamW:在Adam的基础上加上Weight Decay。

学习率

学习率是机器学习中的一个超参数,用于控制模型在每一轮迭代中参数更新的步幅大小。选择合适的学习率对于模型的训练结果至关重要:

  • 如果学习率过大,模型可能会跳过全局最优解,导致无法收敛。
  • 如果学习率过小,模型的收敛速度会很慢,需要更多的迭代次数才能达到较好的效果。

一般来说,学习率的选择需要通过实验和调参来确定。通常从一个较大的学习率开始,观察模型在训练集上的表现,如果损失函数下降得很快,可以逐渐减小学习率;如果损失函数下降得很慢或者不下降,可以逐渐增大学习率。

一些自适应学习率算法,如Adagrad、RMSprop和Adam等,可以根据参数的更新情况动态地调整学习率,从而更加有效地进行模型训练。

经验法则:如果将批处理大小增加N,则初始学习率也按N缩放。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号