一、正则化的概念
我们使用机器学习方法训练一个模型,其最终目的是得到一个能够最大程度概括整体空间内的数据特征。然而由于训练数据往往是整体空间数据一个样本,因此在使用训练样本训练模型的时候有可能出现过拟合的情况。这里以一个简单的回归模型来说明一个模型的拟合程度。
图1
图1 就是三种模型的拟合程度,图1左表示欠拟合,也就是得到的模型并没有足够的拟合样本数据的特征;图1右则是过拟合的情况,模型被设计的过于复杂,或者在训练集上进行了过度的训练,使得模型能够完全的贴合样本空间。
但是,我们希望得到的模型是图1中间的情况,因为这样的模型泛化程度更好,更能够贴近真实的数据分布情况。而过拟合的情况下,虽然能够在训练样本中得到更好的拟合程度,但是在整体数据的预测上表现往往更差。
为了避免这样的情况发生,许多方法策略被用来减小整体损失,而一定程度上舍弃训练数据上的精确度。这些方法被统称为正则化(regularization)。
二、正则化的方法
常见的正则化方法大致分为:L1/L2正则化、Dropout正则化、数据增强、早停。
2.1 L1/L2正则化
对于给定了损失函数L ( )的模型,没有正则化的损失为:
其训练结果就是得到最小的损失,从而会得到在训练样本中损失最小的模型,也就有过拟合的可能。
而L1/L2的正则化方法就是在损失方程J中添加带权重的对于参数的惩罚,从而使计算结果在一定的权重下趋向于参数更小的函数,让最终的模型更加简洁泛化。
L1与L2的区别就在于损失函数中添加的参数惩罚项的不同。
L1正则化为:
L2正则化为:
他们的整体思路都是使神经网络中的权重w趋向更小的数。
2.2 Dropout方法
Dropout方法也是常用的一类正则化方法,在每个不同批次的训练时,每个神经元节点都会以概率p的方式继续向下传递数据,简单理解Dropout就是在概率意义上随机删除神经网络中的节点。做法是通过掩码来关闭一些神经元,在反向传播时同样根据掩码计算导数和更新参数。
这样不同的训练批次时我们就在一定程度上改变了神经网络的结构,如图2。
图2
从逻辑上可以把Dropout方法理解为同时训练了多个异构的神经网络,然后将他们综合为一个模型,从而减小了过拟合和样本噪音对于模型的影响。
2.3 数据增强方法
由于过拟合在本质上是由于样本空间数据无法完全的代表数据空间的特征,我们可以通过对样本进行一些处理使得样本更加贴近真实的数据分布。
一个简单的例子是手写数字识别模型,其样本是一些手写数字图片,但是实际情况下可能由于书写的原因或者拍摄的原因数据会发生变形。这种情况下为了样本能够更好的代表真实数据特征,可以在训练时手动的对样本进行变形,这就是数据增强(图3)。
图3
2.4 早停方法
另一种情况也会导致过拟合,那就是在样本训练集上进行了太多批次的训练。生活中简单是例子就是一个学生反复做一本练习册无数遍,但是并没有去学习这些相关的知识,结果在考试时遇到练习册上没有的题就完全不会做了。
朴素的想法是不要训练那么多轮次,也就是早停。
图4
图4 是一个比较典型的训练精确度随着训练批次的变化情况,蓝线表示实际情况中的预测精确度,红线表示在样本训练集上的精确度。可以看到随着训练的进行,在训练集上的精确度是不断上升的,说明模型更加拟合训练集的数据。然而在过多批次的训练后,在实际数据上的精确度却降低了,也就是出现了过拟合的情况。
因此我们应该在更加贴近测试集最大精确度的地方停止训练,这个批次就称为早停批次(Early Stopping Epoch)。
三、几种正则化方法的比较
L1正则化由于直接的使得权重w趋向0,最后会得到一个稀疏的权重矩阵,也就是大部分参数为0的神经网络模型。因此L1正则化还可以用于特征选择,留下来的输入特征往往就是对模型结果影响最大的那些特征。
L2正则化则极大的受惩罚权重λ的影响,因此找到合理的惩罚因子可能需要进行多次的实验建模。
Dropout方法由于每次训练都没有影响到某些神经元,因此想要得到拟合程度更好的模型就需要比普通训练更多的训练数据。
数据增强方法并不能使得样本数据完全代表真实数据,其仅仅是一种模拟的方法,效果并不稳定。
早停方法更L2方法一样,极大地受到停止训练点的影响,过早则会导致欠拟合,过晚则会出现一定程度的过拟合。