date: 2018/04/11

update: 2020/03/24

ほろよい - 辻詩音:hey yeah! hey yeah!


正则化指的是为模型引入一些约束,一定程度上限制模型的拟合能力,减缓收敛速度,从而缓解过拟合现象的一系列方法。


参考:

  1. Hands-On Machine Learning with Scikit-Learn and TensorFlow(2017)》Chap11
  2. 卷积神经网络——深度学习实践手册(2017.05)


常见的正则化技术:

  1. 提前终止(Early Stop)
  2. 权重正则化(Weights Regularization)
  3. 随机失活(Dropout)
  4. 数据增广(Data Augmentation)
  5. 批归一化(Batch Normalization, BN)
  6. 重叠池化(Overlapping Pooling)
  7. 随机池化(Stochastic Pooling)
  8. 平滑标签(Label Smoothing Regularization, LSR)


欠拟合&过拟合

参考:


欠拟合:模型拟合能力不足,存在高偏差问题,不能很好地从训练数据拟合出预测模型;

过拟合:模型拟合能力太强,存在高方差问题,过分拟合于训练集,甚至直接把训练集记了下来(就像是学生只会刷题,而且记性很好,甚至逐渐把答案背了下来,却没有掌握真正的知识,没法做到举一反三)

image.png

(分类任务:欠拟合、恰当拟合、过拟合)


在训练曲线上,过拟合表现为,随着迭代次数的增加,

因素

损失曲线/准确率曲线

训练集大小

image.png

模型复杂度

image.png

正则化程度

image.png

迭代次数

over_fitting.png


如何解决欠拟合问题?


如何解决过拟合问题?


提前终止

每经过一定迭代次数之后将模型用于验证集上的评估,暂存、更新最近几次在验证集上有一定loss下降的模型(称为快照snapshot或检查点checkpoint);

当连续几次在验证集上没有出现明显的loss下降(甚至有可能回升)时终止训练;

提前终止简单有效,通常都能表现的很好,如果和其他正则化技术共同使用可以获得更好的表现


权重正则化

L2范数

又称权重衰减(weight decay)、岭回归(ridge regression)、Tikhonov正则化(Tikhonov regularization)。

其中 控制正则项大小,取值越大对模型复杂度的约束程度越大;

一般将该L2惩罚项加入到目标函数中,通过目标函数的误差反向传播


L1范数

又称Elastic正则化。

L1正则化不仅能够约束参数量级,还可以使参数稀疏化,使优化后部分参数置为0,并且也有去除噪声的效果;



最大范数

L2正则化、L1正则化将L2范数、L1范数加入到损失函数中对权重的大小进行约束,而最大范数的正则化方式不同,它是对更新后的权重直接进行缩放来达到约束权重大小的目的。

在每步训练之后,对权重进行一定约束

其中,为超参数max-norm,的L2范数;

减小将增加惩罚的力度,这将有助于抑制过拟合。

同时,最大范数也有抑制梯度消失与爆炸的作用,通常跟Dropout结合使用;但随着BN层的广泛使用,通常也不需要最大范数来抑制梯度消失与梯度爆炸。


数据增广

Data Augmentation,也可以称为“数据扩充”,指人为地对训练集原始数据进行变换或加噪,达到扩充数据集的目的,可以有效地减少过拟合现象的发生。

但这种修改必须是“可学习的”,比如添加白噪声是没意义的,因为白噪声不可学习;

比如做图片分类的时候,可以平移、旋转、缩放图片甚至改变亮度来做到对图像进行加噪处理,使得模型对图片的位置、角度、大小不那么敏感。


训练过程中的数据增广通常是带有随机性的,以保证每个生成的样本略有不同,用这些假数据来“扩充”实际的训练数据集;而在预测过程中这种随机性是没有必要,甚至有害的(难以在验证集上复现相同结果)。

由于这样的数据增广带有随机性,不得不在训练的时候在线对数据进行处理,会占用部分CPU/GPU资源。有时候为了更快的训练,会减弱一部分随机性,比如预先将数据集扩增5-10倍放在硬盘上备用(当然,这需要占用更多硬盘空间),训练时直接读取即可,甚至可以预先制作出IO效率更高的专门的数据文件。


简单的图像增广


常见图像增广Python库:


特殊的数据增广

Fancy PCA可以近似捕获自然图像的一个重要特性——物体特质与光照强度和颜色变化无关

    1. 对整个数据集的R、G、B进行PCA操作,得到特征向量 和特征值 ,其中
    2. 计算一组随机值,将其作为扰动加到原像素值中;
      其中, 为0均值0.1标准差的高斯分布随机值
    3. 每一个epoch之后,重新选取一次进行扰动
    1. 根据原数据训练一个分类的初始模型
    2. 利用该模型对每张图生成激活图(activation map)或热力图(heat map)
      可以直接将最后一层卷积层特征按深度方向加和得到,也可以参照论文《Learning Deep Features for Discriminative Localization (2015)》生成分类激活图(class activation map);
      该热力图可以指示图像区域与场景标记之间的相关概率
    3. 根据上述概率映射回原图选择较强相关的图像区域作为抠取的图像块