深度学习 第七章深度学习中的正则化
本章中的某些章节涉及机器学习中的标准概念。如果你已经熟悉了这些概念,可以随意跳过相关章节。然而,本章的大多数内容是关于这些基本概念在特定神经
网络中的扩展概念。
深度学习的背景下,大多数正则化策略都会对估计进行正则化。估计的正则化以偏差的增加换取方差的减少。一个有效的正则化是有利的‘‘交易’’,也就是能显著减少方差而不过度增加偏差。我们在第五章中讨论泛化和过拟合时,主要侧重模型族训练的3 个情形:(1)不包括真实的数据生成过程——对应欠拟合和含有偏差的情况,(2)匹配真实数据生成过程,(3)除了包括真实的数据生成过程,还包括许多其他可能的生成过程——方差(而不是偏差)主导的过拟合。正则化的目标
是使模型从第三种情况转化为第二种情况。
在实践中,过于复杂的模型族不一定包括目标函数或真实数据生成过程,甚至也不包括近似过程。我们几乎从未知晓真实数据的生成过程,所以我们永远不知道
被估计的模型族是否包括生成过程。然而,深度学习算法的大多数应用都是针对这样的情况,其中真实数据的生成过程几乎肯定在模型族之外。深度学习算法通常应用于极为复杂的领域,如图像、音频序列和文本,本质上这些领域的真实生成过程涉及模拟整个宇宙。从某种程度上说,我们总是持方枘(数据生成过程)而欲内圆
凿(我们的模型族)。
这意味着控制模型的复杂度不是找到合适规模的模型(带有正确的参数个数)这样一个简单的事情。相反我们可能会发现,或者说在实际的深度学习场景中我们几乎总是会发现,最好的拟合模型(从最小化泛化误差的意义上)是一个适当正则化的大型模型。
参数范数惩罚
正则化在深度学习的出现前就已经被使用了数十年。线性模型,如线性回归和逻辑回归可以使用简单、直接、有效的正则化策略。
作为约束的范数惩罚
正则化和欠约束问题
大多数形式的正则化能够保证应用于欠定问题的迭代方法收敛。例如,当似然的斜率等于权重衰减的系数时,权重衰减将阻止梯度下降继续增加权重的大小。
数据集增强
让机器学习模型泛化得更好的最好办法是使用更多的数据进行训练。当然,在实践中,我们拥有的数据量是很有限的。解决这个问题的一种方法是创建假数据并添加到训练集中。对于一些机器学习任务,创建新的假数据相当简单。
噪声鲁棒性
半监督学习
多任务学习
提前终止
当训练有足够的表示能力甚至会过拟合的大模型时,我们经常观察到,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。图7.3 是这些现象的一个例子,这种现象几乎一定会出现。这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并且因此有希望获得更好的测试误差)。在每次验证集误差有所改善后,我们存储模型参数的副本。当训练算法终止时,我们返回这些参数而不是最新的参数。当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。这种策略被称为提前终止(early stopping)。这可能是深度学习中最常用的正则化形式。它的流行主要是因为有效性和简单性.
算法如下:
参数绑定和参数共享
参数范数惩罚是正则化参数使其彼此接近的一种方式,而更流行的方法是使用约束:强迫某些参数相等。由于我们将各种模型或模型组件解释为共享唯一的一组参数,这种正则化方法通常被称为参数共享(parameter sharing)。和正则化参数使其接近(通过范数惩罚)相比,参数共享的一个显著优点是,只有参数(唯一一个集合)的子集需要被存储在内存中。对于某些特定模型,如卷积神经网络,这可能可以显著减少模型所占用的内存。
目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络(CNN)中。
自然图像有许多统计属性是对转换不变的。例如,猫的照片即使向右边移了一个像素,仍保持猫的照片。CNN通过在图像多个位置共享参数来考虑这个特性。相同的特征(具有相同权重的隐藏单元)在输入的不同位置上计算获得。这意味着无论猫出现在图像中的第i 列或i + 1 列,我们都可以使用相同的猫探测器找到猫。
参数共享显著降低了CNN模型的参数数量,并显著提高了网络的大小而不需要相应地增加训练数据。它仍然是将领域知识有效地整合到网络架构的最佳范例之一。
Bagging 和其他集成方法
Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测
试样例的输出。这是机器学习中常规策略的一个例子,被称为模型平(modelaveraging)。采用这种策略的技术被称为集成方法。
模型平均(model averaging)奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。
同的集成方法以不同的方式构建集成模型。例如,集成的每个成员可以使用
不同的算法和目标函数训练成完全不同的模型。Bagging是一种允许重复多次使用同一种模型、训练算法和目标函数的方法。具体来说,Bagging涉及构造k 个不同的数据集。每个数据集从原始数据集中重复采样构成,和原始数据集具有相同数量的样例。这意味着,每个数据集以高概率缺少一些来自原始数据集的例子,还包含若干重复的例子(如果所得训练集与原始数据集大小相同,那所得数据集中大概有原始数据集2/3 的实例)。模型i 在数据集i 上训练。每个数据集所含样本的差异导致了训练模型之间的差异。图7.5 是一个例子。
Dropout
Dropout (Srivastava et al., 2014) 提供了正则化一大类模型的方法,计算方便但功能强大。在第一种近似下,Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。Bagging涉及训练多个模型,并在每个测试样本上评估多个模型。当每个模型都是一个很大的神经网络时,这似乎是不切实际的,因为训练和评估这样的网络需要花费很多运行时间和内存。通常我们只能集成五至十个神经网络,如Szegedy et al. (2014a)集成了六个神经网络赢得ILSVRC,超过这个数量就会迅速变得难以处理。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数
级数量的神经网络。
具体而言,Dropout训练的集成包括所有从基础网络除去非输出单元后形成的子网络,如图7.6 所示。最先进的神经网络基于一系列仿射变换和非线性变换,我们只需将一些单元的输出乘零就能有效地删除一个单元。这个过程需要对模型(如径向基函数网络,单元的状态和参考值之间存在一定区别)进行一些修改。为了简单起见,我们在这里提出乘零的简单Dropout算法,但是它被简单修改后,可以与从网络中移除单元的其他操作结合使用。
对抗训练
对抗样本在很多领域有很多影响,例如计算机安全,这超出了本章的范围。然而,它们在正则化的背景下很有意思,因为我们可以通过对抗训练(adversarialtraining)减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训练网络.
切面距离、正切传播和流形正切分类器
正切传播也和双反向传播(Drucker and LeCun, 1992) 以及对抗训练(Szegedyet al., 2014b; Goodfellow et al., 2014b) 有关联。双反向传播正则化使Jacobian矩阵偏小,而对抗训练找到原输入附近的点,训练模型在这些点上产生与原来输入相同的输出。正切传播和手动指定转换的数据集增强都要求模型在输入变化的某些特定的方向上保持不变。双反向传播和对抗训练都要求模型对输入所有方向中的变化(只要该变化较小)都应当保持不变。正如数据集增强是正切传播非无限小的版本,对抗训练是双反向传播非无限小的版本
。