深度学习中的正则化与优化:原理与实践
深度学习中的正则化与优化:原理与实践
深度学习中的正则化和优化是确保模型性能的关键技术。本文将详细介绍欠拟合与过拟合的原因及解决方案,深入探讨正则化的原理与实现方法,以及各种优化策略的优劣。同时,文章还将讨论学习率的选择与调整策略,帮助读者全面理解这些核心概念。
正则化和优化
欠拟合和过拟合
- 欠拟合的原因:模型复杂度过低,不能很好地拟合所有数据,导致训练误差大。
- 避免欠拟合:增加模型复杂度,如采用高阶模型(预测)或引入更多特征(分类)等。
- 过拟合的原因:模型复杂度过高,训练数据过少,导致训练误差小但测试误差大。
- 避免过拟合:降低模型复杂度,如加上正则惩罚项(L1、L2),或增加训练数据等。
正则化
正则化的核心思想是偏好简单的模型,主要作用包括:
- 降低训练噪声对模型的影响。
- 降低模型对训练数据的过拟合。
正则化项的数学表达式为:
其中,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
模型优化策略
- SGD+Momentum:将连续梯度平均在一起,以往的梯度有一个加权和加到最后的梯度上。
- RMSProp:根据每个维度的梯度值历史平方和进行梯度缩放(有衰减),使得沿着陡峭方向的优化变慢,沿着平缓方向的优化加快。公式为:
grad_squared=decay_rate∗grad_squared+(1−decay_rate)∗dx∗dx - AdaGrad:grad_squared+=dx∗dx,相比RMSProp缺少decay_rate,导致learning_rate衰减更快,更适合解决凸优化问题,而RMSProp更适合深度学习(以及大多数非凸问题)。
- 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。 - AdamW:在Adam的基础上加上Weight Decay。
学习率
学习率是机器学习中的一个超参数,用于控制模型在每一轮迭代中参数更新的步幅大小。选择合适的学习率对于模型的训练结果至关重要:
- 如果学习率过大,模型可能会跳过全局最优解,导致无法收敛。
- 如果学习率过小,模型的收敛速度会很慢,需要更多的迭代次数才能达到较好的效果。
一般来说,学习率的选择需要通过实验和调参来确定。通常从一个较大的学习率开始,观察模型在训练集上的表现,如果损失函数下降得很快,可以逐渐减小学习率;如果损失函数下降得很慢或者不下降,可以逐渐增大学习率。
一些自适应学习率算法,如Adagrad、RMSprop和Adam等,可以根据参数的更新情况动态地调整学习率,从而更加有效地进行模型训练。
经验法则:如果将批处理大小增加N,则初始学习率也按N缩放。