深度学习-正则化

摘要

本文系统阐述了深度学习中的正则化技术体系,围绕防止过拟合这一核心目标展开。首先通过偏差-方差框架解析过拟合/欠拟合本质,并使用对比表明确区分特征;其次深入分析了L1/L2正则化的数学原理(2mλ​∥w∥2与mλ​∥w∥1​),揭示其通过权重收缩(W(1−mαλ​))的机制;接着详解了Dropout技术实现方案(随机置零+缩放补偿)及其在计算机视觉中的应用价值;最后补充了早停法和数据增强策略。全文贯通理论公式与可视化示例,形成完备的正则化知识体系。

文章目录

为什么需要正则化

这里引入一些概念

  1. 偏差:预测与实际值差的大,训练集,测试集都不准。
  2. 方差:受数据的扰动大,训练集数据差别大(方差大),导致相同模型,不同训练集,预测的结果不同。(训练集准,测试集不准)
  3. 过拟合:训练参数过多,而训练样本过少导致学习了无用特征,或过度看重某个特征,使预测集准确率低。
  4. 欠拟合:训练集,测试集准确率都低。(偏差大)

过拟合与欠拟合对比表

特性 过拟合 (Overfitting) 欠拟合 (Underfitting)
定义 模型在训练集上表现很好,但在测试集上表现差 模型在训练集和测试集上表现都差
训练误差
测试误差
模型复杂度 通常过于复杂(模型参数过多) 通常过于简单(模型参数过少)
学习能力 学习能力过强,甚至记住了噪声 学习能力不足,无法捕捉数据中的基本模式
数据量 通常发生在数据量较少时 可能发生在数据量不足或模型太简单时
偏差-方差分解 高方差 高偏差
解决方案 1. 增加数据量 2. 正则化(L1/L2) 3. 减少模型复杂度 4. Dropout 5. 早停(Early Stopping) 1. 增加模型复杂度 2. 增加特征数量 3. 减少正则化 4. 延长训练时间 5. 使用更复杂的模型
典型表现图 训练误差曲线远低于测试误差曲线 训练误差和测试误差都较高且接近
决策边界 非常复杂,可能包含许多不必要的细节 过于简单,无法捕捉数据中的结构

正则化---为了防止过拟合

逻辑回归的L1与L2正则化

逻辑回归的参数W数量根据特征的数量而定(一个神经元*特征数),那么正则化如下

L2正则化 w 2 w^2 w2

逻辑回归的损失函数中增加L2正则化

J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∥ w ∥ 2 J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|^{2} J(w,b)=m1∑i=1mL(y^(i),y(i))+2mλ∥w∥2

其中的L2范数可以理解: λ 2 m ∥ w ∥ 2 2 = λ 2 m ∑ j = 1 n x j w j 2 = λ 2 m w T w \frac{\lambda}{2 m}\|w\|{2}^{2}=\frac{\lambda}{2 m} \sum{j=1}^{n} \frac{x_{j}}{w_{j}^{2}} =\frac{\lambda}{2 m} w^{T} w 2mλ∥w∥22=2mλ∑j=1nwj2xj=2mλwTw

解释:所有w参数的平方和的结果

  • 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) \frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right) m1∑i=1mL(y^(i),y(i))是当前批次,所有样本损失率的平均值
  • L2范数= λ 2 m ∥ w ∥ 2 \frac{\lambda}{2 m}\|w\|^{2} 2mλ∥w∥2= λ 2 m w T w \frac{\lambda}{2 m} w^{T} w 2mλwTw, w w w是权重矩阵(由神经元与特征数目决定)
  • λ \lambda λ是超参数

L1正则化 w w w

逻辑回归的损失函数中增加L1正则化

J ( w , b ) = 1 m ∑ i = 1 m L ( y ^ ( i ) , y ( i ) ) + λ 2 m ∥ w ∥ 1 J(w, b)=\frac{1}{m} \sum_{i=1}^{m} L\left(\hat{y}^{(i)}, y^{(i)}\right)+\frac{\lambda}{2 m}\|w\|_{1} J(w,b)=m1∑i=1mL(y^(i),y(i))+2mλ∥w∥1

其中L2范数可以理解为: λ 2 m ∥ w ∥ 1 = λ 2 m ∑ j = 1 n x j ∣ w j ∣ \frac{\lambda}{2 m}\|w\|{1}=\frac{\lambda}{2 m} \sum{j=1}^{n} \frac{x_{j}}{\left|w_{j}\right|} 2mλ∥w∥1=2mλ∑j=1n∣wj∣xj

梯度下降

•接下来我们通过方向传播来理解这个其中的L2,对于损失函数我们要反向传播求参数梯度:

(1) d W = ∂ L ∂ w + λ m W dW=\frac{\partial L}{\partial w}+\frac{\lambda}{m} W dW=∂w∂L+mλW

前面的默认损失函数的梯度计算结果默认为backprop,那么更新的参数就为

(2) W : = W − α d W W:=W-\alpha dW W:=W−αdW 那么我们将第一个公式带入第二个得到

W : = W − α ( ∂ L ∂ w + λ m W ) W:=W-\alpha(\frac{\partial L}{\partial w}+\frac{\lambda}{m} W) W:=W−α(∂w∂L+mλW)

= W − α λ m W − α ∗ ∂ L ∂ w =W-\frac{\alpha \lambda}{m} W-\alpha * \frac{\partial L}{\partial w} =W−mαλW−α∗∂w∂L

所以每次更新的时候都会让 W ( 1 − α λ m ) W(1-\frac{\alpha \lambda}{m}) W(1−mαλ),使权重 w w w随迭代次数逐渐减小,所以我们通常称L2范数为权重衰减。

  • 正则化如何防止过拟合的

    红线:合适的拟合。
    绿线:过拟合
    蓝线:欠拟合

如上图所示,我们发现,当模型发生过拟合时,模型相对于其他模型,曲线函数更加的弯曲,这说明在局部弯曲的部分,切线斜率特别大,(即模型导数的绝对值特别大,这是由于 w w w从一个较大的值变化到另一个大的值,是 w w w的系数过大导致的) ,对于整个模型来说,我们可以理解为所有的参数的绝对值之和特别大。因此,如果我们有办法使得这些参数的值,比较稠密均匀地集中在零附近,就能有效地抑制过拟合。于是,便引入了范数。从而使 w w w的系数减小,从而减小拟合的波动,防止过拟合的发生

参考:正则化如何防止过拟合的

注:其中,入为正则化因子,是超参数。由于L1正则化最后得到 w向量中将存在大量的 0,使模型变得稀疏化,因此 L2 正则化更加常用。

dropout正则化


  • dropout为什么起效

加入了dropout后,输入的特征都存在被随机清除的可能,所以该神经元不会再特别依赖于任何一个输入特征,也就是不会给任何一个输入特征设置太大的权重。通过传播过程,dropout将产生和L2正则化相同的收缩权重的效果。(不会给某个特征设置太大的权重)
·对于不同的层,设置的keep_prob大小也不一致,神经元较少的层,会设keep_prob为1.0,而神经元多的层则会设置比较小的keep_prob通常被使用在计算机视觉领域,图像拥有更多的特征,场景容易过拟合,效果被实验人员证明是很不错的。

早停止法

数据增强

增加数据的多样性,使其能够尽可能覆盖所有情况。

如果所有A类都是头朝左,B类都是头朝右,就会可能会把车头朝向视为类别的重要依据。

  • 数据增强的效果

总结

过拟合风险 正则化策略 L1/L2权重惩罚 Dropout随机失活 数据增强扩展 早停法干预 抑制大权重 破坏特征依赖 增加多样性 控制训练时机 提升泛化能力