正则化 (Regularization):防止模型“死记硬背”的艺术
正则化是一系列旨在防止模型过拟合的技术的总称。它的核心思想是在损失函数中加入一个“惩罚项”,对模型的复杂度进行限制,从而提高模型在未见过数据上的泛化能力。
L1 / L2 正则化
核心思想:在原有的损失函数基础上,增加一个与模型权重大小相关的惩罚项。L2 正则化(又称权重衰减)惩罚的是权重的平方和,倾向于让权重变得更小更平滑。L1 正则化惩罚的是权重的绝对值之和,倾向于让一些不重要的权重直接变为零,从而实现特征选择。
动手试试:
下图展示了一条过拟合的曲线。拖动滑块增加 L2 正则化强度 (alpha),观察曲线如何被“拉”向更平滑、更合理的形态。
from tensorflow import keras
from keras import layers, regularizers
# 在 Keras 层中添加 L2 正则化
layers.Dense(
64,
activation='relu',
kernel_regularizer=regularizers.l2(0.001)
)
Dropout (随机失活)
核心思想:在训练过程的每一步中,随机地“关闭”(即将其输出置为零)一部分神经元。这就像在训练一个团队时,每次都随机让一些队员“临时下班”。这迫使剩下的队员必须更努力地学习,不能过度依赖某几个“明星队员”,从而让整个团队(网络)变得更加鲁棒和强大。
动手试试:
点击“执行一次 Dropout”,观察隐藏层中的神经元是如何被随机“关闭”(变灰)的。
from tensorflow import keras
from keras import layers
model = keras.Sequential([
layers.Dense(128, activation='relu'),
# 添加 Dropout 层
# rate=0.5 表示每次随机关闭 50% 的神经元
layers.Dropout(0.5),
layers.Dense(10, activation='softmax')
])