深度学习中的正则化
0 简介
机器学习中的一个核心问题是设计不仅在训练数据上表现好,而且能在新输入上泛化好的算法。采用显式减少测试误差(可能会增加训练误差)的策略称为正则化。
在深度学习的背景下,大多数正则化策略都会对估计进行正则化(以偏差的增加换取方差的减小),我们的实现一个好的情境就是显著减少方差而不过度增加偏差。
模型族训练的三种情况:
①不管真实数据的生成过程—-欠拟合,高偏差;
②匹配真实数据的生成过程—-较好拟合;
③除了包括匹配真实的数据生成过程,还包括许多其他可能的生成过程—-方差主导过拟合
正则化的目标是使模型从第三种情况转化为第二种情况。
从最小化泛化误差的意义上,最好的拟合模型是一个适当正则化的大型模型。
1 参数范数的惩罚
其中α∈[0,∞)α∈[0,∞),αα越大,对应正则化惩罚越大
我们通常只对权重做惩罚而不对偏置做正则惩罚,每个权重会指定两个变量如何相互作用,而偏置只控制一个单变量,这意味着我们不对其进行正则化也不会导致太大的方差。此外,正则化偏置可能会导致明显的欠拟合。
在神经网络的情况下,有时希望对网络的每一层使用单独的惩罚,并分配不同的αα系数。寻找合适的多个超参数额代价很大,因此为了减小搜索空间,我们会在所有层使用相同的权重衰减,即L2参数正则化。
1.1 L2参数正则化
L2正则化是指权值向量w中各个元素的平方和让然后再求平方根
L2正则化可以理解为每次移除权重的x%
1.2 L1正则化
L1正则化是指权值向量w中,各个元素的绝对值之和
L1正则化可以理解为每次从权重中减去一个常数
L1正则化可以产生稀疏权值矩阵,即产生一个稀疏模型,可以用于特征选择
2 作为约束范数惩罚
我们可以把参数范数惩罚看做对权重强加的约束。如果ΩΩ是L2范数,那么权重就是被约束在一个L2球中,如果ΩΩ是L1范数,那么权重就是被约束在一个L1范数限制的区域中。较大的αα,将得到一个较小的约束区域,较大的αα,将得到一个较大的约束区域。此种方式为隐式地限制,即增加惩罚,所谓惩罚就是对损失函数中的某一些参数做一些限制。
通过重投影实现的显式约束只在权重变大并试图离开限制区域时产生作用,重投影的显式约束还对优化过程增加了一定稳定性。
分别限制每一列的范数可以防止某一隐藏单元有非常大的权重。在实践中,列范数的限制总是通过重投影的显式约束来实现。
3 正则化和欠约束问题
大多数形式的正则化能够保证应用于欠定问题(不可逆问题)的迭代方法收敛。
4 数据集增强
让机器学习模型泛化得更好的最好办法是使用最多的数据进行训练。但是由于现实生活中,数据量有限,解决这个问题的一种办法就是创建假数据并添加到训练集中。
数据集增强对语音识别任务也是有效的。
在神经网络的输入层注入噪声也可以看做数据增强的一种方式。但是,神经网络被证明对噪声不是非常健壮。改善神经网络健壮性的方法之一是简单地将随机噪声添加到输入再进行训练。(输入噪声注入是一些无监督学习算法的一部分)
通常情况下,人工设计的数据集增强方案可以大大减少机器学习技术的泛化误差。
5 噪声的鲁棒性
对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚。在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更强大(dropout)。
另一种正则化模型的噪声使用方式是将其加到权重。这项技术主要应用于循环神经网络。
向输出目标注入噪声
大多数数据集的y标签都有一定错误。错误的y不利于最大化logp(y|x)。避免这种情况的一种方法是显式地对标签上的噪声进行建模。
使用softmax函数和明确目标的最大似然学习可能永远不会收敛—-softmax函数永远无法真正预测0概率和1概率,因此他会继续学习越来越大的权重,使预测更极端。使用如权重衰减等其他正则化策略能够防止这种情况。
标签平滑的优势是能够防止模型追求确切概率而不影响模型学习非正确分类。
6 半监督学习
学习表示的目的是使相同类中的样本有类似的表示。
7 多任务学习
多任务学习是通过合并几个任务中的样例来提高泛化得一种方式。正如额外的训练样本能够将模型参数推向具有更好泛化能力的值一样,当模型的一部分被多个额外的任务共享是,这部分将被约束为良好的值(如果共享合理),通常会带来更好的泛化能力。
8 提前终止
当训练有足够的表示能力甚至会过拟合的大模型时,我们经常观察到,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。这种现象几乎一定会出现的。
提前终止即在每次验证集误差有所改善之后,我们存储模型参数的副本。这可能是深度学习中最常用的正则化形式,它的流行主要是因为它的有效性和简单性。
我们可以认为提前终止是非常高效的超参数选择算法。大多数超参数的选择必须使用高代价的猜测和检查过程,我们需要在训练开始时,猜测一个超参数,然后运行几个步骤来检查它的训练效果。通过提前终止自动选择超参数的唯一显著的代价是训练期间要定期评估验证集。另一个提前终止的额外代价是需要保持最佳的参数副本。
提前终止是一种非常不显眼的正则化形式,它几乎不需要改变基本训练过程、目标函数或一组允许的参数值。相对于权重衰减,必须小心不能使用太多的权重衰减,以防网络陷入不良局部极小点。
提前终止通常涉及监控验证集误差,以便在空间特别好的点处终止轨迹。因此提前终止比权重衰减更具有优势,提前终止能自动确定正则化的正确量,而权重衰减需要进行多个不同超参数的训练实验。
9 参数绑定和参数共享
L2正则化(权重衰减)对参数偏离零的固定值进行惩罚。参数范数惩罚是正则化参数使其彼此接近的一种方式,更流行的方法是使用约束,强迫某些参数相等。由于我们将各种模型或模型组件解释为共享唯一的一组参数,这种正则化方法通常被称为参数共享。
目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络中。
10 稀疏表示
前文所述的权重衰减直接惩罚模型参数。另一种策略是惩罚神经网络中的激活单元,稀疏化激活单元。这种策略间接地对模型参数施加了复杂惩罚。
L1惩罚是表示稀疏的方法之一。
11 Bagging和其他继承方法
Bagging是通过几种模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。
不同的集成方法以不同的方式构建集成模型。例如,集成的每个成员可以使用不同的算法和目标函数训练成完全不同的模型。Bagging是一种允许重复多次使用同一种模型、训练算法和目标函数的方法。
模型平均是一个减小泛化误差的非常强大可靠的方法。当然,不是所有构建集成的技术都是为了让集成模型比单一模型更加正则化。
12 Dropout
Dropout提供了正则化一大类模型的方法,计算方便但功能强大。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。
Dropout比其他标准的计算开销小的正则化方法(如权重衰减、过滤器范数约束和稀疏激活的正则化)更有效。Dropout也可以与其他形式的正则化合并,得到进一步的提升。
Dropout优点:①计算方便;②不怎么限制适用的模型和训练过程
因为Dropout是一个正则化技术,它减少了模型的有效容量,为了抵消这种影响,我们必须增大模型规模。使用Dropout时最佳验证集的误差会低很多,但这是以更大的模型和更多训练算法的迭代次数为代价换来的。对于非常大的数据集,正则化带来的泛化误差减少得很小。只有极少的训练样本可用时,Dropout不会很有效。
批处理化(深度学习的另一种算法)主要目的是改善优化,但噪声具有正则化的效果,有时没有必要再使用Dropout。