尽管L2权重衰减和基本Dropout等标准正则化方法是应对过拟合的基本手段,但训练大规模、复杂的CNN模型通常从更精细的方法中获益。随着模型架构复杂度与规模的增加,它们获得了更强的表达能力,但也更容易对训练数据过拟合,并对训练过程的具体情况更敏感。此处分析旨在提升现代CNN泛化能力的高级正则化方法。卷积层的Dropout变体标准Dropout在训练期间随机将部分神经元激活值设为零。尽管在全连接层中有效,但其在卷积层中的应用可能不是最优的,因为卷积层中相邻像素或特征图激活常共享关联信息。由于强的空间结构,简单地丢弃单个激活值可能无法引入足够的噪声或有效防止协同适应。高级Dropout变体解决了此问题。空间Dropout空间Dropout(有时称作2D Dropout)并非丢弃单个激活值,而是在训练期间随机丢弃整个特征图(通道)。如果某个特定通道被选中进行Dropout,则该特征图内的所有激活值都设为零。考虑一个形状为(batch_size, height, width, channels)的特征图张量。标准Dropout将在height * width * channels维度内的每个元素上独立操作。然而,空间Dropout对给定通道的height和width维度应用相同的Dropout掩码。digraph G { rankdir=LR; node [shape=record, style=filled, fillcolor="#e9ecef"]; subgraph cluster_std { label = "标准Dropout"; style=dashed; color="#adb5bd"; node [shape=square, style=filled, fixedsize=true, width=0.3, height=0.3, label=""]; fm1 [label="特征图1\n(Dropout前)", shape=rect, fillcolor="#a5d8ff"]; fm1_after [label="特征图1\n(Dropout后)", shape=rect, fillcolor="#a5d8ff"]; p1 [pos="0,1!", fillcolor="#495057"]; p2 [pos="0.4,1!", fillcolor="#dee2e6"]; p3 [pos="0.8,1!", fillcolor="#dee2e6"]; p4 [pos="1.2,1!", fillcolor="#495057"]; p5 [pos="0,0.6!", fillcolor="#dee2e6"]; p6 [pos="0.4,0.6!", fillcolor="#495057"]; p7 [pos="0.8,0.6!", fillcolor="#dee2e6"]; p8 [pos="1.2,0.6!", fillcolor="#dee2e6"]; p9 [pos="0,0.2!", fillcolor="#495057"]; p10 [pos="0.4,0.2!", fillcolor="#dee2e6"]; p11 [pos="0.8,0.2!", fillcolor="#495057"]; p12 [pos="1.2,0.2!", fillcolor="#dee2e6"]; fm1 -> fm1_after [label=" 应用Dropout\n (像素级)", fontsize=10]; } subgraph cluster_spatial { label = "空间Dropout"; style=dashed; color="#adb5bd"; node [shape=rect, style=filled]; fm2 [label="特征图\n(Dropout前)", fillcolor="#96f2d7"]; fm2_after [label="特征图\n(Dropout后)", fillcolor="#96f2d7"]; fm2 -> fm2_after [label=" 应用Dropout\n (通道级)", fontsize=10]; node [shape=rect, height=0.8, width=0.2, label="", style=filled]; c1 [pos="0,0!", fillcolor="#63e6be"]; c2 [pos="0.3,0!", fillcolor="#63e6be"]; c3 [pos="0.6,0!", fillcolor="#495057"]; // 被丢弃的通道 c4 [pos="0.9,0!", fillcolor="#63e6be"]; } }对比显示标准dropout作用于像素级与空间dropout作用于通道级。灰色方块表示被丢弃的单元或通道。这种方法鼓励网络学习跨不同特征图的冗余表示,使其对整个通道的缺失更具韧性,并更适合处理空间相关数据的卷积层。DropConnectDropConnect是另一种变体,它并非将激活值(神经元输出)设为零,而是在前向传播期间随机将网络中的权重设为零。层间每个连接都有一定概率被丢弃。Dropout影响层中的激活值 ($a$) ($y = a(Wx + b)$),而DropConnect直接将掩码 ($M$) 应用于权重 ($W$) 和偏差 ($b$):$$ y = a((M_W \odot W)x + (M_b \odot b)) $$这里,$\odot$ 表示逐元素乘法,而 $M_W, M_b$ 是为每个训练样本采样的二进制掩码。与Dropout相比,DropConnect可被视为一种更通用的正则化形式,可能引入更多噪声并需要仔细调整。它的计算量比标准Dropout更大,因为它需要为每个样本的权重而非仅仅激活值采样不同的掩码。标签平滑正则化 (LSR)分类模型通常使用独热编码标签和交叉熵损失函数进行训练。这鼓励模型为正确类别输出接近1的概率,为所有错误类别输出接近0的概率。例如,对于一个3类别问题,如果真实标签是类别1,目标概率向量为$[1, 0, 0]$。即使模型对错误类别分配很小的概率,也会受到严重惩罚。尽管这看起来很直观,但可能导致以下问题:过度自信: 模型学习对其预测过度自信,这可能不反映真实的潜在不确定性。这会阻碍泛化,尤其当训练数据包含噪声或模糊性时。对噪声的敏感性: 硬目标使模型对训练集中的潜在错误标签样本高度敏感。适应性降低: 正确类别与错误类别之间极大的逻辑值差异会使模型在微调或迁移学习期间适应性降低。标签平滑通过将硬0和1目标替换为“更平滑”的概率来解决此问题。我们不再要求正确类别的概率为1.0,而是为其分配一个略小于1的目标概率,例如 $1 - \alpha$。剩余的概率质量 $\alpha$ 平均分配给错误类别。对于一个有 $K$ 个类别的分类问题,如果一个样本的原始独热目标中,真实类别 $k_{true}$ 的 $y_k = 1$,而对于 $k \neq k_{true}$ 的类别 $y_k = 0$,则平滑后的标签 $y'_{k}$ 变为:$$ y'{k} = y{k} (1 - \alpha) + \frac{\alpha}{K} $$我们通过一个例子来说明。假设我们有 $K=5$ 个类别,真实类别是索引2,并且我们使用平滑因子 $\alpha = 0.1$。原始独热目标: $[0, 0, 1, 0, 0]$平滑目标:对于真实类别 (k=2):$y'_{2} = 1 \times (1 - 0.1) + \frac{0.1}{5} = 0.9 + 0.02 = 0.92$对于任意错误类别 (例如, k=0):$y'_{0} = 0 \times (1 - 0.1) + \frac{0.1}{5} = 0 + 0.02 = 0.02$所得平滑目标向量: $[0.02, 0.02, 0.92, 0.02, 0.02]$当使用这些平滑目标进行交叉熵损失训练时,模型被抑制为正确类别生成相对于其他类别来说极大的逻辑值。它鼓励逻辑值之间存在有限差异,从而得到一个校准更好的模型(其置信分数更能反映实际可能性),并且通常泛化能力略好。平滑因子 $\alpha$ 的典型值为0.1,但可以作为超参数进行调整。LSR广泛用于训练先进的图像分类模型。与其他方法的结合需要注意的是,这些高级正则化方法与训练过程的其他组成部分相配合。例如:批量归一化 (Batch Normalization): BN本身由于小批量统计引入的噪声而具有轻微的正则化效果。BN和Dropout的配合需要仔细考虑,有时会导致Dropout位置或比例的调整。数据增强: Cutout、Mixup或RandAugment等明显修改训练图像的方法,可作为强大的正则化手段。当使用强数据增强时,显式正则化(如Dropout或LSR)的强度可能需要调整。选择合适的正则化方法组合和强度常涉及实验。监控验证损失和准确率非常重要,以找到既能防止过拟合又不过度阻碍模型从训练数据中学习能力的配置。这些高级方法为深度学习实践者的工具包提供了有价值的补充,以构建更有效和可靠的CNN模型。