news 2026/8/5 5:33:06

【机器学习专栏】1.3 机器学习基础:正则化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【机器学习专栏】1.3 机器学习基础:正则化

引子:没有约束,就没有泛化

“L1 正则化为什么会产生稀疏解?从几何和贝叶斯两个角度解释。”
“Dropout 训练时为什么要除以 1-p?推理时权重要缩放吗?”
“Early Stopping 和 L2 正则化有什么数学联系?”
“Label Smoothing 为什么能提高模型校准性能?”
“Weight Decay 和 L2 正则化等价吗?在 Adam 优化器下呢?”
“Spectral Norm 是怎么稳定 GAN 训练的?”

正则化是机器学习中对抗过拟合的核心技术。面试中,正则化不仅考察你是否知道各种方法,更考察你是否理解每种方法背后的数学原理。本章从经典 L1/L2 正则化出发,深入 Dropout、Early Stopping、数据增强等现代深度学习正则化技术,涵盖从传统 ML 到 CV、NLP、GAN 等各领域的正则化手段。


4.1 L1 与 L2 正则化

4.1.1 基础定义

在标准损失函数中添加惩罚项,限制模型权重的复杂度:

类型惩罚项损失函数优化器视角
L2 (Ridge)lamda * sum(w_j^2)L = L0 + lamda *
L1 (Lasso)lamda * sum(w_j)
Elastic Netlamda1*w

4.1.2 梯度更新对比

无正则化: w_{t+1} = w_t - eta * grad L0(w_t)

L2 正则化(权重衰减)
w_{t+1} = w_t - eta * (grad L0(w_t) + 2lamdaw_t) = (1 - 2etalamda)w_t - etagrad L0(w_t)

可以看到 L2 在每次更新前先将权重乘以 (1 - 2etalamda) —— 这是"权重衰减"名称的来源。这个系数恒小于 1,意味着权重的范数被持续压缩。

L1 正则化(软阈值)
w_{t+1} = w_t - eta * (grad L0(w_t) + lamda * sign(w_t))

因为 d||w||_1/dw = sign(w),L1 的梯度更新方向与 w 的符号有关。当 w 为正时减去一个正数(推向 0),为负时加上一个正数(也推向 0)。整理后得到:

w_{t+1} = sign(w_t - etagrad L0) * max(0, |w_t - etagrad L0| - eta*lamda)

这就是软阈值算子(Soft Thresholding)——当权重绝对值小于 eta*lamda 时直接被置零。这是 L1 产生稀疏解的核心机制。

Q:L1 正则化的梯度为什么用 sign 函数?它在 w=0 处不可导怎么处理?

初级回答:L1 的梯度是 w 的符号,w=0 处用次梯度,取 [-1, 1] 之间的任意值。

进阶回答:L1 正则化在 w=0 处确实不可导,但在优化中我们使用次梯度(subgradient)来处理。次梯度是凸函数在不可导点处所有支撑超平面斜率的集合。对于 f(w) = |w|,在 w=0 处的次梯度是 [-1, 1] 区间。实际实现中,通常取 0 作为次梯度的值。更稳定的做法是使用近端梯度法(Proximal Gradient Descent),它通过近端算子直接求解带 L1 惩罚的优化问题,避免处理不可导点:

prox_{lamda*||.||_1}(z) = sign(z) * max(0, |z| - lamda)

源码级回答:在 sklearn 的 Lasso 实现中,默认使用 coordinate_descent 算法(坐标下降法),而不是次梯度下降。坐标下降法每次只优化一个参数,其他参数固定,可以解析地求解每个参数的闭式解。其核心更新公式为:

w_j_hat = sign(sum_i x_ij(y_i - y_i_hat(-j))) * max(0, |sum_i x_ij(y_i - y_i_hat(-j))| - lamda) / sum_i x_ij^2

其中 y_i_hat(-j) 是不使用第 j 个特征的预测值。这个公式天然包含了软阈值操作。

4.1.3 为什么 L1 产生稀疏解?几何解释

Q:L1 和 L2 的约束区域形状不同,怎么导致稀疏性的差异?

初级回答:L1 的约束区域是菱形(有尖角),L2 是圆形(平滑)。等高线在菱形顶点接触时,解落在坐标轴上,某些权重变为 0。

进阶回答(详细推导):

带正则化的优化问题等价于约束优化问题:

min_w L0(w) s.t. ||w||_p <= C

其中 p=1 是 L1,p=2 是 L2。约束区域的定义:

  • L1 约束:|w1| + |w2| <= C --> 菱形(定义域有尖角)
  • L2 约束:w1^2 + w2^2 <= C^2 --> 圆形(定义域光滑)

损失函数的等高线是椭圆形(因为 Hessian 矩阵通常是正定的)。最优解在等高线与约束区域首次相切的位置:

  • L2(圆形):切点一般不会在坐标轴上,因为圆形表面光滑,等高线的梯度方向在坐标轴附近很难恰好与圆的法线方向一致。结果 w1 和 w2 通常都不为零,但都比无正则化时小。

  • L1(菱形):菱形的角在坐标轴上(如 (C,0) 或 (0,C))。当椭圆等高线膨胀到与菱形内切时,首次接触点很可能发生在这些尖角处——此时一个权重为 0,产生稀疏解。

源码级回答:L1 正则化的解路径具有**分段线性(piecewise linear)**性质——LARS 算法(Least Angle Regression)利用这一性质可以高效计算出 Lasso 的完整解路径。随着 lamda 从大到小变化,特征会逐个进入模型,每个进入点称为"knot"。而在 Ridge 中,所有特征始终在模型中,只是权重被均匀收缩。

4.1.4 贝叶斯视角

Q:从贝叶斯角度理解,L1 和 L2 分别对应什么先验?

初级回答:L2 对应高斯先验,L1 对应拉普拉斯先验。

进阶回答(MAP 估计推导):

从贝叶斯角度看,正则化等价于对参数施加先验分布,求最大后验估计(MAP):

w_MAP = argmax_w log P(y|X,w) + log P(w)

L2 正则化 = 高斯先验

假设先验 P(w_j) 正比于 exp(-lamda/2 * w_j^2)(均值为 0 的高斯分布),则:

log P(w) = -lamda/2 * sum w_j^2 + const

代入 MAP 公式得到 L = L0 + lamda/2 * ||w||_2^2,即 L2 正则化。

L1 正则化 = 拉普拉斯先验

假设先验 P(w_j) 正比于 exp(-lamda * |w_j|)(拉普拉斯分布),则:

log P(w) = -lamda * sum |w_j| + const

代入 MAP 公式得到 L = L0 + lamda * ||w||_1,即 L1 正则化。

拉普拉斯分布和高斯分布的关键区别:

特性高斯分布 N(0, sigma^2)拉普拉斯分布 Lap(0, b)
PDF 形式指数平方衰减指数衰减
在 0 处形状平滑,二阶可导尖峰,不可导
尾部快速衰减慢速衰减
产生稀疏性

追问:为什么拉普拉斯先验比高斯先验更容易产生 0 权重?

拉普拉斯分布在 0 处的概率密度远高于高斯分布——拉普拉斯有"尖峰",高斯是"圆顶"。这意味着拉普拉斯先验更"相信"参数为 0。在 MAP 估计中,拉普拉斯先验对非零参数施加更重的惩罚。关键在于:拉普拉斯先验在 w=0 处的概率集中质量,使得 MAP 估计趋向于让不重要的参数精确为 0,而不是仅仅缩小。

4.1.5 Elastic Net

Q:什么时候该用 Elastic Net 而不是单纯的 L1 或 L2?

进阶回答:Elastic Net 结合了 L1 和 L2 的优点:

L = L0 + lamda1 * ||w||_1 + lamda2 * ||w||_2^2

适用场景:

  1. 特征数 >> 样本数(p >> n):Lasso 最多只能选出 n 个特征(受限于约束区域维度),Elastic Net 没有此限制。
  2. 特征分组相关:Lasso 会从一组高度相关的特征中随机选一个,Elastic Net 会同时选入或剔除整个组(因为 L2 项促进分组效应)。
  3. 希望稀疏但不止于稀疏:Elastic Net 能在保持稀疏性的同时,让选中的特征系数更稳定。

源码级回答:sklearn 中的 ElasticNet 使用 l1_ratio 参数控制 L1 和 L2 的混合比例(l1_ratio=1 是 Lasso,l1_ratio=0 是 Ridge)。实际计算中,Elastic Net 的求解也使用坐标下降法,其更新公式是 Lasso 软阈值和 Ridge 收缩的混合。

4.1.6 Group Lasso

Q:如果你想对特征分组施加稀疏性(如一个 One-hot 编码的类别变量应该一起选或不选),该用什么?

进阶回答:Group Lasso。它对预先定义的特征组施加 L2 范数惩罚,但组之间施加 L1 惩罚——一个组要么全部为 0,要么全部非 0:

L = L0 + lamda * sum_{g=1}^{G} sqrt(p_g) * ||w_g||_2

其中 p_g 是第 g 组的特征数。Group Lasso 不会在组内产生稀疏性(组内用 L2 惩罚),但会在组间(用 L1 惩罚)产生稀疏性。


4.2 Dropout

4.2.1 原理与原始论文

Dropout 由 Srivastava、Hinton 等人在 2014 年提出(“Dropout: A Simple Way to Prevent Neural Networks from Overfitting”)。核心思想:在每次训练迭代中,以概率 p 随机丢弃(置零)每个神经元的输出。

Q:训练时为什么要除以 1-p?

初级回答:为了保持训练和推理时输出的期望一致。

进阶回答(数学推导):

假设神经元在训练时的输出为 h,丢弃概率为 p。训练时神经元的输出是随机变量:

h_train = h/(1-p) 以概率 (1-p) 保留
h_train = 0 以概率 p 丢弃

推理时所有神经元都保留,输出为 h。为了保持一致性,需要 E[h_train] = h_infer:

E[h_train] = (1-p) * h/(1-p) + p * 0 = h = h_infer

如果不做缩放,即训练时直接丢弃:h_train = h 或 0,则 E[h_train] = (1-p)h,推理时需要乘 (1-p) 来补偿。两种方式等价,只是缩放位置不同。PyTorch 和 TensorFlow 都采用"训练时缩放"的方式(Inverted Dropout)。

importtorchimporttorch.nnasnnclassDropoutLayer(nn.Module):"""从零实现 Dropout(Inverted Dropout)"""def__init__(self,p=0.5):super().__init__()self.p=p# 丢弃概率defforward(self,x):ifself.training:# 伯努利掩码:每个元素独立以 (1-p) 保留mask=torch.rand_like(x)>self.p# 训练时缩放returnx*mask/(1-self.p)returnx

追问:为什么 Dropout 能防止过拟合?有三层解释。

第一层:集成学习(Ensemble)视角

每次 dropout 相当于从完整网络中采样出一个子网络。训练 T 步相当于训练了 T 个不同的子网络(权重复用)。推理时全部保留相当于对这些子网络的输出做几何平均(而非算术平均)。Hinton 等人证明了几何平均对应集成学习的 Bagging 思想,而且比算术平均更合理(因为神经网络输出是概率时,几何平均对应概率乘积)。

对于有 N 个神经元的网络,可能的子网络数量为 2^N。虽然实际采样有限,但 Dropout 的集成效果远超显式训练少数模型。

第二层:协同适应(Co-adaptation)视角

没有 Dropout 时,神经元可能形成"相互依赖"的关系——某个神经元依赖另一个神经元的存在来纠正它的错误。Dropout 强制每个神经元独立工作,不能依赖其他神经元的"补位"。这迫使每个神经元学到更鲁棒的特征,类似于正则化中的"独立性强"。

第三层:隐式数据增强视角

Dropout 为每个神经元的输出添加了乘性噪声(Bernoulli 噪声)。这可以看作是一种隐式的数据增强——通过噪声迫使网络学习更平滑的决策边界。

4.2.2 为什么 Dropout 在 CNN 中效果有限?Spatial Dropout

Q:原始 Dropout 在 CNN 上效果不好怎么办?

初级回答:CNN 中使用 Spatial Dropout,在通道层面丢弃整个特征图。

进阶回答:CNN 的卷积层中,相邻像素高度相关。原始 Dropout 随机丢弃单个像素几乎不会破坏空间结构——被丢弃的像素可以被相邻像素"弥补"(因为卷积核是共享且滑动的)。Spatial Dropout 以概率 p 丢弃整个通道(整张特征图),迫使网络不依赖于某个通道的信息。

classSpatialDropout2d(nn.Module):"""在通道层面丢弃整个特征图"""def__init__(self,p=0.5):super().__init__()self.p=pdefforward(self,x):# x shape: (batch, channels, height, width)ifself.training:mask=torch.rand_like(x[:,:,0:1,0:1])>self.preturnx*mask/(1-self.p)returnx

4.2.3 Stochastic Depth for ResNet

Stochastic Depth 是 Dropout 在 ResNet 中的变体,由 Huang 等人 2016 年提出。核心思想:训练时以概率 p 随机丢弃(跳过)整个残差块(Residual Block),只保留 shortcut 连接:

H_l(x) = F_l(x) + x 以概率 (1-p_l) 保留
H_l(x) = x 以概率 p_l 丢弃

其中 p_l 随层数的增加线性增大(底层小,顶层大),因为浅层提取基础特征更重要。

特性DropoutStochastic Depth
丢弃粒度神经元整个残差块
推理时全部保留全部保留
有效深度不变变浅(加速训练)
效果防止过拟合训练更深网络

Stochastic Depth 解决了深层 ResNet(如 1202 层)的训练困难问题,同时训练速度提高了约 40%。


4.3 Early Stopping

4.3.1 什么是 Early Stopping?

在验证集上的性能不再提升时停止训练,是最简单也最常用的正则化方法。实现时需要设置 patience(容忍步数),防止在验证 loss 的局部波动中误停。

classEarlyStopping:"""Early Stopping 实现"""def__init__(self,patience=10,min_delta=0.001):self.patience=patience self.min_delta=min_delta self.counter=0self.best_loss=float('inf')self.early_stop=Falsedef__call__(self,val_loss):ifval_loss<self.best_loss-self.min_delta:self.best_loss=val_loss self.counter=0else:self.counter+=1ifself.counter>=self.patience:self.early_stop=Truereturnself.early_stop

4.3.2 Early Stopping 与 L2 正则化的数学联系

Q:面试官的经典追问——Early Stopping 为什么可以被看作是一种正则化?它跟 L2 正则化有什么关系?

进阶回答(关键洞察):

考虑一个线性模型 y = Xw,使用梯度下降优化 MSE 损失。假设 X 的 SVD 分解为 X = U * Sigma * V^T,权重更新为:

w^{(t)} = w^{(t-1)} - eta * grad L(w^{(t-1)})

对于 MSE 损失,梯度下降的解可以写为:

w^{(t)} = sum_{i=1}^{p} (1 - eta * sigma_i2)t * (u_i^T y / sigma_i) * v_i

其中 sigma_i 是 X 的奇异值。这个公式的关键含义:每个奇异值方向上的衰减速度是 (1 - eta * sigma_i2)t。奇异值越小(对应方差小的方向),衰减越快。

L2 正则化的解析解为:

w_ridge = sum_{i=1}^{p} (sigma_i^2 / (sigma_i^2 + lamda)) * (u_i^T y / sigma_i) * v_i

对比发现:

方法衰减因子含义
Early Stopping (t 步后)(1 - eta * sigma_i2)t小奇异值方向先被压缩
L2 正则化 (lamda)sigma_i^2 / (sigma_i^2 + lamda)小奇异值方向被压缩更多

两者都在小奇异值方向(方差小、噪声可能大的方向)衰减更快,这解释了为什么 Early Stopping 等价于隐式 L2 正则化。对于 MSE 损失和线性模型,Early Stopping 的解与 Ridge 的解之间存在一一对应的关系——迭代步数 t 对应 lamda 与 1/t 成正比。


4.4 数据增强

4.4.1 为什么数据增强算正则化?

Q:数据增强明明是"增加数据",为什么会被归类为正则化方法?

进阶回答:数据增强虽然没有修改损失函数,但它通过引入先验知识(如平移不变性、旋转不变性)来扩展训练分布,本质上降低了模型对特定输入模式的过拟合。每个增强操作相当于告诉模型:“这个样本在某种变形下应该保持相同的预测。” 这与正则化的目标一致——提高泛化能力、降低对训练数据特定模式的依赖。Bishop 在 1995 年证明,在输入上添加小噪声等价于一种 L2 类型正则化。

4.4.2 图像数据增强

基础方法

方法操作适用场景超参数
水平翻转(Flip)左右镜像一般物体识别p=0.5
随机旋转(Rotation)0-360 度旋转方向无关任务[-30, +30] 度
随机裁剪(Random Crop)截取随机区域后缩放分类/检测裁剪比例 0.08-1.0
颜色抖动(Color Jitter)调整亮度/对比度/饱和度/色调颜色鲁棒任务各参数 +/- 0.2
随机擦除(Random Erasing)随机遮挡矩形区域行人重识别遮挡比例 0.02-0.4

高级方法

Cutout(DeVries & Taylor, 2017):随机擦除输入图像中的正方形区域,防止网络过度依赖局部特征。

Mixup(Zhang et al., 2018):将两张图像按随机比例混合,标签也按相同比例混合:

x_tilde = lamda * x_i + (1-lamda) * x_j
y_tilde = lamda * y_i + (1-lamda) * y_j

其中 lamda 服从 Beta(alpha, alpha) 分布,alpha 控制混合强度(通常 0.2-0.4)。Mixup 的数学直觉:强制模型在样本之间线性插值,相当于隐式地学习了线性决策边界区域。

CutMix(Yun et al., 2019):结合 Cutout 和 Mixup——用另一张图像的 patch 替换被裁剪区域,标签按像素比例混合。CutMix 在分类和目标检测上同时有效,性能通常优于单独使用 Mixup 或 Cutout。

Q:Mixup 为什么有效?从理论角度解释。

进阶回答

  1. Vicinal Risk Minimization (VRM):Mixup 不是经验风险最小化(ERM),而是邻域风险最小化。ERM 只在训练点上坍塌 Dirac delta 分布,VRM 在样本间定义连续的标签分布。
  2. 模型校准性:Mixup 降低了模型的预测置信度,使预测概率更接近真实准确率(Expected Calibration Error 降低)。
  3. 对对抗样本鲁棒:Mixup 学到的决策边界更平滑,不易被小的对抗扰动"欺骗"。

4.4.3 文本数据增强

文本数据增强比图像更难——因为文本是离散的,微小改动可能改变语义。

方法操作效果与限制
同义词替换(SR)随机替换词为同义词简单但可能改变语境
回译(Back Translation)翻译到另一语言再译回质量高但计算成本大
EDA(Easy Data Augmentation)SR + RI(随机插入)+ RS(随机交换)+ RD(随机删除)Wei & Zou 2019,简单有效
对抗增强在词嵌入空间加扰动需要额外训练

Q:EDA 的参数怎么设置?为什么它有效?

进阶回答:EDA 有四个操作,每个按概率执行。Wei & Zou 建议的默认参数:

  • 同义词替换:每个句子随机替换 10% 的词
  • 随机插入:在随机位置插入随机词的同义词,比例 10%
  • 随机交换:随机交换两个词的位置,比例 10%
  • 随机删除:以概率 0.1 删除每个词

EDA 的效果在小数据集(<500 样本)上最明显,平均提升 3% 准确率,在更大数据集上提升有限。局限性:对于情感分析等语义敏感任务,同义词替换可能反转情感极性。

4.4.4 音频数据增强

方法操作典型参数
噪声叠加(Noise Injection)加高斯白噪声SNR=15-30dB
时间拉伸(Time Stretch)改变播放速度不改变音高0.8x-1.2x
音高偏移(Pitch Shift)改变音高不改变速度+/- 2 半音
SpecAugment在频谱图上随机掩码时间/频率段掩码宽度 F=10, T=20

SpecAugment(Park et al., 2019)是语音识别中最有效的增强方法——直接在 Mel-spectrogram 上应用时间掩码和频率掩码,灵感来自 Cutout 在图像上的应用。


4.5 Label Smoothing

4.5.1 原理

Q:Label Smoothing 是什么?为什么能提高模型泛化能力?

进阶回答:Label Smoothing(标签平滑)由 Szegedy 等在 Inception-v2 论文中提出。核心思想:不要用 one-hot 硬标签训练模型,而是用软标签(soft label):

y_i_smooth = (1 - epsilon) * y_i_onehot + epsilon / K

其中 K 是类别数,epsilon 是平滑系数(通常 0.1)。例如三分类时:

  • One-hot: [1, 0, 0]
  • Smoothed: [0.9, 0.05, 0.05] (epsilon=0.15)

4.5.2 为什么有效?

  1. 防止过置信:softmax 输出会趋向于 one-hot(因为交叉熵在 logit 足够大时饱和),Label Smoothing 抑制了 logit 的无限增长。
  2. 校准性提升:模型的预测概率更接近真实准确率。未平滑模型在预测 0.99 时可能只有 90% 的准确率,平滑后预测 0.9 时就能达到约 90% 的准确率。
  3. 模型鲁棒性:对错误标签更不敏感——即使训练集中有错误标注,平滑后的标签不会要求模型死记硬背错误。

追问:Label Smoothing 的缺点是什么?

  1. 知识蒸馏中不适用:Student 模型需要从 Teacher 的硬预测中学习类别间关系,Label Smoothing 会模糊这些关系。
  2. 影响 Top-1 准确率:有些任务中 LS 会轻微降低 Top-1 准确率,但提高 Top-5。
  3. 在小数据集上效果有限:数据足够时模型自然校准,LS 的增益减小。

4.6 各种正则化方法的对比与选择

方法原理适用场景训练成本推理影响
L2 正则化权重衰减几乎所有模型无额外成本
L1 正则化产生稀疏性特征选择、高维数据无额外成本
Dropout随机丢弃神经元全连接网络少量增加
Spatial Dropout丢弃整个通道CNN少量增加
Stochastic Depth随机跳过残差块ResNet 系列减少训练时间
Early Stopping提前停止训练几乎所有模型降低训练时间
数据增强扩展训练分布CV/NLP/Audio在线增强有额外成本
Label Smoothing软化标签分布分类任务无额外成本
Spectral Norm限制 Lipschitz 常数GAN少量额外计算

正则化的组合使用

在实践中,深度模型通常组合使用多种正则化方法:

图像分类(ResNet/DenseNet): 数据增强(Random Crop + Flip + Color Jitter + Mixup/CutMix) + Weight Decay(L2) + Label Smoothing(epsilon=0.1) + Stochastic Depth(ResNet 深度 > 100 时) 文本分类(BERT): + Dropout (p=0.1) + Weight Decay (lamda=0.01) + 有时用回译增强 GAN 生成器: + Spectral Norm(在判别器的每层) + Label Smoothing(用 0.9/0.1 代替 1/0)

4.7 Spectral Norm 与 Virtual Adversarial Training

4.7.1 Spectral Norm

Q:Spectral Norm 是什么?它如何稳定 GAN 的训练?

进阶回答:Spectral Norm 由 Miyato 等人在 2018 年提出(“Spectral Normalization for Generative Adversarial Networks”),用于约束判别器(Discriminator)的 Lipschitz 常数。

对于线性层 W,其谱范数定义为最大奇异值:

sigma(W) = max_{||x||_2 <= 1} ||Wx||_2

谱归一化(Spectral Normalization)将权重矩阵除以其谱范数:

W_SN = W / sigma(W)

这样保证了 sigma(W_SN) = 1,即 Lipschitz 常数为 1。

为什么这对 GAN 重要?

在 WGAN-GP 中,判别器需要满足 1-Lipschitz 约束。谱范数是满足这一约束的最优雅方式——每次权重更新后直接除以谱范数。与梯度惩罚(Gradient Penalty)相比:

方法实现复杂度计算成本效果
Weight Clipping简单容易破坏网络容量
Gradient Penalty中等高(需要计算额外梯度)效果好
Spectral Norm中等低(只需 SVD 近似)效果好,稳定

源码级回答:Spectral Norm 的实际实现使用幂迭代法(Power Iteration)近似最大奇异值,避免每次更新都做完整的 SVD:

defspectral_norm(W,u,num_iters=1):"""幂迭代法近似最大奇异值"""for_inrange(num_iters):v=W.T @ u v=v/torch.norm(v)u=W @ v u=u/torch.norm(u)sigma=u @ W @ v# 最大奇异值的近似returnW/sigma,u# 返回归一化后的 W 和更新后的 u

其中 u 是随机初始化的向量,在训练过程中持续更新。

4.7.2 Virtual Adversarial Training (VAT)

Q:Virtual Adversarial Training 是如何工作的?它和对抗训练有什么区别?

进阶回答:VAT 由 Miyato 等人在 2018 年提出,是一种半监督正则化方法。核心思想:模型的输出分布应该在输入的局部邻域内平滑——即使对输入施加小的对抗性扰动,输出分布也不应剧烈变化。

VAT 的损失是 KL 散度的对抗版本:

L_VAT(x) = KL[p(y|x) || p(y|x + r_adv)]

其中对抗扰动 r_adv 是使 KL 散度最大的方向(约束 ||r||_2 <= epsilon):

r_adv = argmax_{||r||_2 <= epsilon} KL[p(y|x) || p(y|x + r)]

与标准对抗训练的区别:

方面标准对抗训练VAT
需要标签是(对抗样本必须有真实标签)否(只用模型当前输出)
适用场景监督学习半监督/无监督
扰动目标最大化真实标签的损失最大化输出分布的 KL 散度
正则化效果对特定攻击鲁棒整体决策边界平滑

VAT 的优势在于它可以在未标注数据上工作——只需要计算模型当前预测作为"伪标签",然后寻找使 KL 散度最大的方向。这在半监督学习中非常有效。


4.8 正则化的物理学直觉

用一个直观的比喻来总结各种正则化方法:

  • L2 正则化:给权重加了一个"弹簧",拉力与权重大小成正比,防止权重过大。
  • L1 正则化:给权重加了一个"摩擦力",微小的权重会被摩擦消耗到 0。
  • Dropout:模拟"团队中没有固定依赖关系,每个人都要能独立解决问题"。
  • Early Stopping:相当于"限时训练"——时间不够长就不会学会噪声模式。
  • 数据增强:相当于"多角度训练"——在更多样化的环境中学到不变性。
  • Label Smoothing:模拟"导师不给出 100% 确定的答案,避免学生过度自信"。

面试速查表

考点核心要点常见追问面试频度
L1 vs L2稀疏 vs 衰减几何解释、梯度推导、贝叶斯先验⭐⭐⭐⭐⭐
Elastic NetL1+L2 混合何时用、分组效应⭐⭐⭐
Group Lasso组级稀疏性与 L1/L2 的区别⭐⭐
Dropout丢弃 + 缩放为什么除 1-p、集成视角、co-adaptation⭐⭐⭐⭐⭐
Spatial Dropout通道级别丢弃CNN 为什么用⭐⭐⭐
Stochastic Depth跳过残差块ResNet 训练加速⭐⭐
Early Stopping验证 loss 上升前停止与 L2 的数学联系⭐⭐⭐⭐
数据增强图像/文本/音频Mixup/CutMix/EDA⭐⭐⭐⭐
Label Smoothing软标签校准性提升、缺点⭐⭐⭐
Spectral Norm谱范数归一化GAN 稳定性、幂迭代⭐⭐⭐
VAT对抗性正则化半监督学习⭐⭐

本章总结

正则化是机器学习面试中"看似简单、实则需要深度"的话题。你需要从多个维度理解每种正则化方法:

  1. 数学形式:L1/L2 的损失函数、梯度更新公式
  2. 几何直观:L1 的菱形与 L2 的圆形的约束区域差异
  3. 贝叶斯视角:L1 = 拉普拉斯先验,L2 = 高斯先验
  4. 工程实现:Dropout 的 Inverted Dropout 实现、Spectral Norm 的幂迭代
  5. 适用场景:不同正则化方法适用的模型架构和数据类型

面试中的典型追问路径是:从 L1/L2 的正则化公式出发,追问 L1 为什么产生稀疏性(几何),再追问贝叶斯解释,然后转到 Dropout(原理 + 缩放),再问 Early Stopping(与 L2 的关系),最后问数据增强或高级变体。这条追问链覆盖了本章的绝大部分核心知识点。


下一章预告:第五章将深入降维与特征选择,探索 PCA 的数学推导、t-SNE 的可视化力量,以及各类特征选择方法的实战技巧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/5 5:33:04

宝可梦30年画面进化史:从点阵到开放世界的技术突围

1. 先看这30年&#xff0c;宝可梦画面到底解决了什么问题聊宝可梦的画面进化&#xff0c;核心不是单纯看“画质变好了”&#xff0c;而是看它如何一次次解决游戏体验与硬件限制之间的矛盾。从Game Boy巴掌大的黑白点阵&#xff0c;到Switch上高清立体的开放世界&#xff0c;每一…

作者头像 李华
网站建设 2026/8/5 5:32:17

人工智能入门指南:从机器学习到AIGC的实战解析

1. 项目概述&#xff1a;从“智能”这个词说起每次听到“人工智能”这个词&#xff0c;你是不是觉得它特别高大上&#xff0c;好像离我们很远&#xff0c;是那些穿着白大褂的科学家在实验室里捣鼓的东西&#xff1f;其实&#xff0c;它早就悄悄溜进了我们的生活。你让手机助手帮…

作者头像 李华
网站建设 2026/8/5 5:30:46

UE5日志系统深度解析:Verbosity级别与C++模块日志优化实战

1. 项目概述&#xff1a;为什么UE5日志优化是C开发者的必修课在UE5项目开发的中后期&#xff0c;尤其是当你的游戏世界变得庞大、逻辑变得复杂时&#xff0c;调试信息的泛滥几乎是一个必然的痛点。你是否有过这样的经历&#xff1a;在编辑器输出日志&#xff08;Output Log&…

作者头像 李华
网站建设 2026/8/5 5:29:25

Windows软件RAID实战:存储空间与PowerShell创建RAID 1/5指南

1. 项目概述&#xff1a;为什么要在Windows下折腾软件RAID&#xff1f;在数据存储的世界里&#xff0c;RAID&#xff08;独立磁盘冗余阵列&#xff09;是个老生常谈但又至关重要的技术。提到它&#xff0c;很多人第一反应是服务器机房里的硬件RAID卡&#xff0c;指示灯闪烁&…

作者头像 李华
网站建设 2026/8/5 5:24:03

MS计算界面相互作用全流程解析:从建模、参数设置到结果分析

1. 项目概述&#xff1a;从“界面”到“相互作用”的计算探索在材料科学、化学和物理领域&#xff0c;我们常常会遇到一个核心问题&#xff1a;当两种不同的物质相遇时&#xff0c;它们之间会发生什么&#xff1f;这个相遇的“面”&#xff0c;就是我们所说的“界面”。无论是催…

作者头像 李华