如前所述,当网络对训练数据学习得过于充分,包含了其噪声和特定特性,导致无法对新数据进行泛化时,就会发生过拟合 (overfitting)。应对此问题的一种有效方法是正则化 (regularization),它通过根据网络权重 (weight)的大小向损失函数 (loss function)添加一个惩罚项来实现。其基本思想是,复杂的模型通常拥有较大的权重,而更简单、泛化能力更强的模型往往具有较小的权重。通过惩罚大权重,我们促使网络寻求更简单的解决方案。
两种受线性模型直接启发、常用且有效的正则化技术是 L1 和 L2 正则化。
L2 正则化 (regularization)(权重 (weight)衰减)
L2 正则化向原始损失函数 (loss function)(Loriginal)添加一个惩罚项,该惩罚项与每个权重(w)的平方成比例。修改后的损失函数 LL2 变为:
LL2=Loriginal+2mλi∑wi2
这里:
- wi 表示网络中的每个权重(偏差有时不计入)。
- ∑iwi2 是所有权重的平方和。
- λ (lambda) 是正则化超参数 (parameter) (hyperparameter),用于控制惩罚的强度。λ 值越高,惩罚越强。
- m 是批次(或数据集)中的样本数量,用于缩放。在计算梯度时,通常包含 21 这个系数是为了数学上的便利。
工作原理: 在反向传播 (backpropagation)过程中,此惩罚项对权重 wi 的梯度是 mλwi。当使用梯度下降 (gradient descent)更新权重时,此项将被减去:
wi:=wi−α(∂wi∂Loriginal+mλwi)
请注意项 −αmλwi。此项在每个更新步骤中都会有效地将权重 wi 稍微推向零,其推动大小与其当前值成比例。这就是 L2 正则化常被称为权重衰减的原因。它促使网络使用较小的权重,将重要性分散到许多神经元上,而不是严重依赖少数几个大权重。这通常会带来更平滑的决策边界和更好的泛化能力。
L2 正则化施加的二次惩罚项(w2)。当权重偏离零时,惩罚项会显著增加,强烈阻止大的权重值。
L1 正则化 (regularization)
L1 正则化采用不同的方法。它向损失函数 (loss function)添加一个惩罚项,该惩罚项与每个权重 (weight)的绝对值成比例:
LL1=Loriginal+mλi∑∣wi∣
这里,∑i∣wi∣ 是所有权重绝对值的和,λ 再次控制惩罚强度。
工作原理: L1 惩罚项的梯度是 mλsign(wi),其中 sign(wi) 在 wi 为正时为 +1,在 wi 为负时为 -1,在 wi 为零时为 0(尽管梯度在零点处在技术上未定义,但实现会处理这种情况)。权重更新如下所示:
wi:=wi−α(∂wi∂Loriginal+mλsign(wi))
与 L2 的主要区别在于,L1 减去一个常数因子(αmλ),将权重推向零,而不管权重的当前大小(只要它不为零)。这种持续的推动能使权重变为精确的零并保持不变。因此,L1 正则化通常会产生稀疏模型,其中许多权重为零。这可以被视作一种自动特征选择,因为通过零权重连接的神经元对于那些输入实际上会变得不活跃。
L1 正则化施加的线性惩罚项(∣w∣)。当权重偏离零时,惩罚项线性增加。恒定的梯度通过将小权重直接推向零来促使稀疏性。
L1 和 L2 的选择
- **L2(权重 (weight)衰减)**通常更常见,并作为默认设置表现良好。它促使权重较小且分布分散。
- L1 生成稀疏权重,通过将一些权重降至零来有效地进行特征选择。如果您怀疑许多输入特征不相关,或者希望获得一个更稀疏、可能更易于解释的模型,它会很有用。然而,与 L2 相比,它在训练期间有时可能不太稳定。
在实际操作中,L1 和 L2 正则化 (regularization)都可以在大多数深度学习 (deep learning)框架中定义层或优化器时直接添加。
正则化 (regularization)参数 (parameter)(λ)
正则化超参数 (hyperparameter) λ 的选择很重要。
- 如果 λ=0,则没有正则化。
- 如果 λ 过小,正则化效果甚微,模型可能仍然过拟合 (overfitting)。
- 如果 λ 过大,权重 (weight)惩罚项将主导损失函数 (loss function)。网络会优先考虑最小化权重而非拟合数据,可能导致欠拟合 (underfitting)(高偏差)。
找到合适的 λ 值通常需要通过实验。它通常使用验证集进行调整,常通过网格搜索或随机搜索等方法,我们将在本章稍后讨论超参数调整时介绍这些方法。
通过添加这些惩罚项,L1 和 L2 正则化提供了有效的方法来控制模型复杂性,避免过拟合,并提升神经网络 (neural network)在新数据上的泛化表现。它们是深度学习 (deep learning)实践者工具箱中不可或缺的工具。