1、参数范数惩罚
正则化在深度学习的出现前就已经被使用了数十年。线性模型,如线性回归和逻辑回归可以使用简单、直接、有效的正则化策略。在探究不同范数的正则化表现之前,我们需要说明一下,在神经网络中,参数包括每一层仿射变换的权重和偏置,我们通常只对权重做惩罚而不对偏置做正则惩罚。精确拟合偏置所需的数据通常比拟合权重少得多。每个权重会指定两个变量如何相互作用。我们需要在各种条件下观察这两个变量才能良好地拟合权重。而每个偏置仅控制一个单变量。这意味着,我们不对其进行正则化也不会导致太大的方差。另外,正则化偏置参数可能会导致明显的欠拟合。
在神经网络的情况下,有时希望对网络的每一层使用单独的惩罚,并分配不同的系数。寻找合适的多个超参数的代价很大,因此为了减少搜索空间,我们会在所有层使用相同的权重衰减。
1.1、参数正则化
最简单而又最常见的参数范数惩罚,即通常被称为权重衰减(weight decay)的参数范数惩罚。这个正则化策略通过向目标函数添加一个正则项 ,使权重更加接近原点。
为了简单起见,我们假定其中没有偏置参数,因此就是。这样一个模型具有以下总的目标函数:
与之对应的梯度为:
使用单步梯度下降更新权重,即执行以下更新:
换种写法就是:
可以看到,加入权重衰减后会引起学习规则的修改,即在每步执行通常的梯度更新之前先收缩权重向量(将权重向量乘以一个常数因子)。
令为未正则化目标函数取得最小误差时的权重,即,在的邻域对目标函数做二次近似(泰勒公式),近似的如下:
是在处计算的矩阵(矩阵是由目标函数在处的二阶偏导数组成的对称矩阵)。因为被定义为最优,即梯度消失为0,所以该二次近似中没有一阶项。同样地,因为是的一个最优点,我们可以得出半正定。
当取得最小时,其梯度为0:
为了研究权重衰减带来的影响,我们在上式中添加权重衰减的梯度。现在我们探讨最小化正则化后的,我们使用变量表示此时的最优点:
当趋向于0时,正则化的解会趋向。当增加时会发生什么呢?因为是实对称的,所以我们可以将其分解为一个对角矩阵和一组特征向量的标准正交基,并且有:
我们可以看到权重衰减的效果是沿着由的特征向量所定义的轴缩放。具体来说,我们会根据因子缩放与第个特征向量对齐的的分量。
沿着特征值较大的方向 (如)正则化的影响较小。而的分量将会收缩到几乎为零。
实线椭圆表示没有正则化目标的等值线。虚线圆圈表示正则化项的等值线。在点,这两个竞争目标达到平衡。目标函数的的第一维特征值很小。当从水平移动时,目标函数不会增加得太多。因为目标函数对这个方向没有强烈的偏好,所以正则化项对该轴具有强烈的影响。正则化项将拉向零。而目标函数对沿着第二维远离的移动非常敏感。对应的特征值较大,表示高曲率。因此,权重衰减对的位置影响相对较小。
只有在显著减小目标函数方向上的参数会保留得相对完好。在无助于目标函数减小的方向(对应 Hessian 矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分量会在训练过程中因正则化而衰减掉。
1.2、参数正则化
正则化的目标函数如下所示:
对应的次梯度为(https://blog.csdn.net/qq_32742009/article/details/81704139):
由于惩罚项在完全一般化的Hessian的情况下,无法得到直接清晰的代数表达式,因此我们进一步简化假设Hessian是对角的,即,其中每个。若数据已被预处理(如可以使用 PCA),去除了输入特征之间的相关性,那么这一假设成立。
我们可以将正则化目标函数的二次近似分解成关于参数的求和:
如下列形式的解析解(对每一维 i)可以最小化这个近似代价函数:
对每个 i, 考虑的情形,会有两种可能结果:
:正则化后目标中的 wi 最优值是。
:在这种情况下,正则化不会将的最优值推至 0,而仅仅在那个方向上移动的距离。
的情况与之类似。
相比正则化,正则化会产生更稀疏(sparse)的解。此处稀疏性指的是最优值中的一些参数为 0。由正则化导出的稀疏性已经被广泛地用于特征选择(feature selection)机制。特征选择从可用特征子集选出有意义的特征,化简机器学习问题。
2、作为约束的范数惩罚
考虑经过参数范数正则化的代价函数:
我们可以构造一个广义 Lagrange 函数来最小化带约束的函数,即在原始目标函数上添加一系列惩罚项。每个惩罚是一个被称为 Karush–Kuhn–Tucker(Karusuhucker)乘子的系数以及一个表示约束是否满足的函数之间的乘积。如果我们想约束小于某个常数,我们可以构建广义 Lagrange 函数:
这个约束问题的解由下式给出:
解决这个问题我们需要对和都做出调整。为了洞察约束的影响,我们固定,把这个问题看成只跟有关的函数:
通常我们不知道权重衰减系数约束的区域大小,因为的值不直接告诉我们的值。原则上我们可以解得,但和之间的关系取决于的形式。虽然我们不知道约束区域的确切大小,但我们可以通过增加或者减小来大致扩大或收缩约束区域。较大的,将得到一个较小的约束区域。较小的,将得到一个较大的约束区域。
有时候,我们希望使用显式的限制,而不是惩罚。我们可以修改下降算法(如随机梯度下降算法),使其先计算的下降步,然后将投影到满足的最近点。如果我们知道什么样的是合适的,而不想花时间寻找对应于此处的值,这会非常有用。
3、正则化和欠约束问题
在某些情况下,为了正确定义机器学习问题,正则化是必要的。机器学习中许多线性模型,包括线性回归和 PCA,都依赖于对矩阵求逆。只要是奇异的,这些方法就会失效。当数据生成分布在一些方向上确实没有差异时,或因为例子较少(即相对输入特征的维数来说)而在一些方向上没有观察到方差时,这个矩阵就是奇异的。在这种情况下,正则化的许多形式对应求逆。这个正则化矩阵可以保证可逆。
没有闭式解的问题也可能是欠定的。一个例子是应用于线性可分问题的逻辑回归。如果权重向量能够实现完美分类,那么也会以更高似然实现完美分类。类似随机梯度下降的迭代优化算法将持续增加的大小,理论上永远不会停止。在实践中,数值实现的梯度下降最终会达到导致数值溢出的超大权重,此时的行为将取决于程序员如何处理这些不是真正数字的值。大多数形式的正则化能够保证应用于欠定问题的迭代方法收敛。例如,当似然的斜率等于权重衰减的系数时,权重衰减将阻止梯度下降继续增加权重的大小。
4、数据集增强
让机器学习模型泛化得更好的最好办法是使用更多的数据进行训练。当然,在实践中,我们拥有的数据量是很有限的。解决这个问题的一种方法是创建假数据并添加到训练集中。对于一些机器学习任务,创建新的假数据相当简单。
对分类来说这种方法是最简单的。分类器需要一个复杂的高维输入,并用单个类别标识概括。这意味着分类面临的一个主要任务是要对各种各样的变换保持不变。我们可以轻易通过转换训练集中的来生成新的 对。
数据集增强对一个具体的分类问题来说是特别有效的方法:对象识别。图像是高维的并包括各种巨大的变化因素,其中有许多可以轻易地模拟。即使模型已使用卷积和池化技术对部分平移保持不变,沿训练图像每个方向平移几个像素的操作通常可以大大改善泛化。许多其他操作如旋转图像或缩放图像也已被证明非常有效。
这种方法对于其他许多任务来说并不那么容易。例如,除非我们已经解决了密度估计问题,否则在密度估计任务中生成新的假数据是很困难的。
在神经网络的输入层注入噪声 (Sietsma and Dow, 1991) 也可以被看作是数据增强的一种方式。对于许多分类甚至一些回归任务而言,即使小的随机噪声被加到输入,任务仍应该是能够被解决的。然而,神经网络被证明对噪声不是非常健壮 (Tangand Eliasmith, 2010)。改善神经网络健壮性的方法之一是简单地将随机噪声添加到输入再进行训练。向隐藏单元施加噪声也是可行的,这可以被看作在多个抽象层上进行的数据集增强。
5、噪声鲁棒性
对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚 (Bishop, 1995a,b)。在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更加强大。之后要提到的Dropout 算法是这种做法的主要发展方向。
另一种正则化模型的噪声使用方式是将其加到权重。这项技术主要用于循环神经网络 (Jim et al., 1996; Graves, 2011)。这可以被解释为关于权重的贝叶斯推断的随机实现。
在某些假设下,施加于权重的噪声可以被解释为与更传统的正则化形式等同,鼓励要学习的函数保持稳定。我们研究回归的情形,也就是训练将一组特征映射成一个标量的函数,并使用最小二乘代价函数衡量模型预测值与真实值的误差:
现在我们假设对每个输入表示,网络权重添加随机扰动。想象我们有一个标准的层MLP。我们将扰动模型记为,尽管有噪声注入,我们仍然希望减少网络输出误差的平方。因此目标函数变为:
对于小的,最小化带权重噪声(方差为)的等同于最小化附加正则化项的。这种形式的正则化鼓励参数进入权重小扰动对输出相对影响较小的参数空间区域。换句话说,它推动模型进入对权重小的变化相对不敏感的区域,找到的点不只是极小点,还是由平坦区域所包围的极小点 (Hochreiter andSchmidhuber, 1995)。
另一种正则化方法是向输出目标注入噪声。大多数数据集的标签都有一定错误。错误的不利于最大化。避免这种情况的一种方法是显式地对标签上的噪声进行建模。例如,标签平滑(label smoothing)通过把确切分类目标从 0 和1 替换成和,正则化具有个输出的函数的模型。标准交叉熵损失可以用在这些非确切目标的输出上。使用函数和明确目标的最大似然学习可能永远不会收敛——函数永远无法真正预测0概率或1概率,因此它会继续学习越来越大的权重,使预测更极端。使用如权重衰减等其他正则化策略能够防止这种情况。标签平滑的优势是能够防止模型追求确切概率而不影响模型学习正确分类。
6、半监督学习
在半监督学习的框架下,产生的未标记样本和中的标记样本都用于估计或者根据预测。
在深度学习的背景下,半监督学习通常指的是学习一个表示。学习表示的目的是使相同类中的样本有类似的表示。无监督学习可以为如何在表示空间聚集样本提供有用线索。在输入空间紧密聚集的样本应该被映射到类似的表示。
7、多任务学习
多任务学习 (Caruana, 1993) 是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。正如额外的训练样本能够将模型参数推向具有更好泛化能力的值一样,当模型的一部分被多个额外的任务共享时,这部分将被约束为良好的值(如果共享合理),通常会带来更好的泛化能力。
下图展示了多任务学习中非常普遍的一种形式,不同的监督任务(给定x预测)共享相同的输入以及一些中间层表示,能学习共同的因素池。该模型通常可以分为两类相关的参数:
具体任务的参数(只能从各自任务的样本中实现良好的泛化)。如图中的上层。
所有任务共享的通用参数(从所有任务的汇集数据中获益)。如图中的下层。因为共享参数,其统计强度(共享参数的样本数量相对于单任务模式增加的比例)可大大提高,并能改善泛化和泛化误差的范围 (Baxter, 1995)。当然,仅当不同的任务之间存在某些统计关系的假设是合理(意味着某些参数能通过不同任务共享)时才会发生这种情况。
多任务学习在深度学习框架中可以以多种方式进行,该图说明了任务共享相同输入但涉及不同目标随机变量的常见情况。深度网络的较低层(无论是监督前馈的,还是包括向下箭头的生成组件)可以跨这样的任务共享,而任务特定的参数(分别与从和进入和发出的权重)可以在共享表示之上学习。这里的基本假设是存在解释输入变化的共同因素池,而每个任务与这些因素的子集相关联。在该示例中,额外假设顶层隐藏单元和专用于每个任务(分别预测和),而一些中间层表示在所有任务之间共享。
8、提前终止
当训练有足够的表示能力甚至会过拟合的大模型时,我们经常观察到,训练误差会随着时间的推移逐渐降低但验证集的误差会再次上升。
这意味着我们只要返回使验证集误差最低的参数设置,就可以获得验证集误差更低的模型(并且因此有希望获得更好的测试误差)。当验证集上的误差在事先指定的循环次数内没有进一步改善时,算法就会终止。这种策略被称为提前终止(early stopping)。这可能是深度学习中最常用的正则化形式。它的流行主要是因为有效性和简单性。
提前终止是一种非常不显眼的正则化形式,它几乎不需要改变基本训练过程、目标函数或一组允许的参数值。这意味着,无需破坏学习动态就能很容易地使用提前终止。
提前终止对减少训练过程的计算成本也是有用的。除了由于限制训练的迭代次数而明显减少的计算成本,还带来了正则化的益处(不需要添加惩罚项的代价函数或计算这种附加项的梯度)。
Bishop (1995a) 和 Sjöberg and Ljung(1995) 认为提前终止可以将优化过程的参数空间限制在初始参数值的小邻域内。更具体地,想象用学习率进行个优化步骤(对应于个训练迭代)。我们可以将作为有效容量的度量。假设梯度有界,限制迭代的次数和学习速率能够限制从到达的参数空间的大小。在这个意义上,的效果就好像是权重衰减系数的倒数。
事实上,在二次误差的简单线性模型和简单的梯度下降情况下,我们可以展示提前终止相当于正则化。我们在权重的经验最佳值附近以二次近似建模代价函数:
其中是关于在点的矩阵。鉴于假设是的最小点,我们知道为半正定。在局部泰勒级数逼近下,梯度由下式给出:
为简化起见,我们将参数向量初始化为原点,也就是。我们通过分析上的梯度下降来研究上近似的梯度下降的效果:
即:
现在让我们在特征向量的空间中改写表达式,利用的特征分解,其中是对角矩阵,是特征向量的一组标准正交基。
假定并且选择得足够小以保证,经过次参数更新后轨迹如下:
回忆正则化中有:
从而:
我们能够发现,如果超参数,和满足如下关系:
则正则化和提前终止可以被看作是等价的(至少在目标函数的二次近似下)。进一步取对数,使用的级数展开,我们可以得出结论:如果所有是小的(即且),那么:
也就是说,在这些假设下,训练迭代次数起着与参数成反比的作用,的倒数与权重衰减系数的作用类似。
9、参数绑定和参数共享
目前为止,本章讨论对参数添加约束或惩罚时,一直是相对于固定的区域或点。例如,正则化(或权重衰减)对参数偏离零的固定值进行惩罚。然而,有时我们可能需要其他的方式来表达我们对模型参数适当值的先验知识。有时候,我们可能无法准确地知道应该使用什么样的参数,但我们根据相关领域和模型结构方面的知识得知模型参数之间应该存在一些相关性。
我们经常想要表达的一种常见依赖是某些参数应当彼此接近。考虑以下情形:我们有两个模型执行相同的分类任务(具有相同类别),但输入分布稍有不同。形式地,我们有参数为的模型和参数为的模型。这两种模型将输入映射到两个不同但相关的输出:和。
们可以想象,这些任务会足够相似(或许具有相似的输入和输出分布),因此我们认为模型参数应彼此靠近:应与接近。我们可以通过正则化利用此信息。具体来说,我们可以使用以下形式的参数范数惩罚:
在这里我们使用惩罚,但也可以使用其他选择。
参数范数惩罚是正则化参数使其彼此接近的一种方式,而更流行的方法是使用约束:强迫某些参数相等。由于我们将各种模型或模型组件解释为共享唯一的一组参数,这种正则化方法通常被称为参数共享(parameter sharing)。目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络(CNN)中。
10、稀疏表示
前文所述的权重衰减直接惩罚模型参数。另一种策略是惩罚神经网络中的激活单元,稀疏化激活单元。这种策略间接地对模型参数施加了复杂惩罚。
表示的稀疏描述了许多元素是零(或接近零)的表示。我们可以在线性回归的情况下简单说明这种区别:
第一个表达式是参数稀疏的线性回归模型的例子。第二个表达式是数据具有稀疏表示的线性回归。也就是说是的一个函数,在某种意义上表示存在于中的信息,但只是用一个稀疏向量表示。
表示的范数惩罚正则化是通过向损失函数 J 添加对表示的范数惩罚来实现的。我们将这个惩罚记作。和以前一样,我们将正则化后的损失函数记作:
正如对参数的惩罚诱导参数稀疏性,对表示元素的惩罚诱导稀疏的表示:
其他方法还包括从表示上的Student-t先验导出的惩罚 (Olshausen and Field, 1996; Bergstra, 2011)和KL散度惩罚(Larochelle and Bengio, 2008b),这些方法对于将表示中的元素约束于单位区间上特别有用。
还有一些其他方法通过激活值的硬性约束来获得表示稀疏。例如,正交匹配追踪 (orthogonal matching pursuit)(Pati et al., 1993) 通过解决以下约束优化问题将输入值编码成表示:
其中是中非零项的个数。当被约束为正交时,我们可以高效地解决这个问题。这种方法通常被称为,通过指定允许的非零特征数量。Coates and Ng (2011) 证明可以成为深度架构中非常有效的特征提取器。
11、Bagging 和其他集成方法
Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。这是机器学习中常规策略的一个例子,被称为模型平均(model averaging)。采用这种策略的技术被称为集成方法。模型平均奏效的原因是不同的模型通常不会在测试集上产生完全相同的误差。
神经网络能找到足够多的不同的解,意味着他们可以从模型平均中受益 (即使所有模型都在同一数据集上训练)。神经网络中随机初始化的差异、小批量的随机选择、超参数的差异或不同输出的非确定性实现往往足以使得集成的不同成员具有部分独立的误差。
不是所有构建集成的技术都是为了让集成模型比单一模型更加正则化。例如,一种被称为Boosting的技术 (Freund and Schapire, 1996b,a) 构建比单个模型容量更高的集成模型。通过向集成逐步添加神经网络,Boosting已经被应用于构建神经网络的集成(Schwenk and Bengio, 1998)。通过逐渐增加神经网络的隐藏单元Boosting也可以将单个神经网络解释为一个集成。
12、Dropout
Dropout (Srivastava et al., 2014) 提供了正则化一大类模型的方法,计算方便但功能强大。在第一种近似下,Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。Bagging涉及训练多个模型,并在每个测试样本上评估多个模型。当每个模型都是一个很大的神经网络时,这似乎是不切实际的,因为训练和评估这样的网络需要花费很多运行时间和内存。通常我们只能集成五至十个神经网络,如Szegedy et al. (2014a)集成了六个神经网络赢得 ILSVRC,超过这个数量就会迅速变得难以处理。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。
具体而言,Dropout训练的集成包括所有从基础网络除去非输出单元后形成的子网络,如下图。最先进的神经网络基于一系列仿射变换和非线性变换,我们只需将一些单元的输出乘零就能有效地删除一个单元。这个过程需要对模型(如径向基函数网络,单元的状态和参考值之间存在一定区别)进行一些修改。
回想一下Bagging学习,我们定义个不同的模型,从训练集有放回采样构造个不同的数据集,然后在训练集上训练模型。Dropout的目标是在指数级数量的神经网络上近似这个过程。具体来说,在训练中使用Dropout时,我们会使用基于小批量产生较小步长的学习算法,如随机梯度下降等。我们每次在小批量中加载一个样本,然后随机抽样应用于网络中所有输入和隐藏单元的不同二值掩码。对于每个单元,掩码是独立采样的。掩码值为 1 的采样概率(导致包含一个单元)是训练开始前一个固定的超参数。它不是模型当前参数值或输入样本的函数。通常在每一个小批量训练的神经网络中,一个输入单元被包括的概率为0.8,一个隐藏单元被包括的概率为0.5。然后,我们运行和之前一样的前向传播、反向传播以及学习更新。
使用Dropout之后神经网络的训练流程如下:
(1)首先随机(临时)删掉网络中一部分(具体比例可通过超参数设定)的隐藏神经元,输入输出神经元保持不变(下图中虚线为部分临时被删除的神经元)。
(2)把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数。
(3)恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新),继续重复这一过程。
更正式地说,假设一个掩码向量指定被包括的单元,是由参数和掩码定义的模型代价。那么Dropout训练的目标是最小化。这个期望包含多达指数级的项,但我们可以通过抽样获得梯度的无偏估计。
Dropout训练与Bagging训练不太一样。在Bagging的情况下,所有模型都是独立的。在Dropout中,所有模型共享参数,其中每个模型继承父神经网络参数的不同子集。参数共享使得在有限可用的内存下表示指数级数量的模型变得可能。
在Bagging的情况下,每一个模型在其相应训练集上训练到收敛。在Dropout中,通常大部分模型都没有显式地被训练,因为通常父神经网络会很大,以致于到宇宙毁灭都不可能采样完所有的子网络。取而代之的是,在单个步骤中我们训练一小部分的子网络,参数共享会使得剩余的子网络也能有好的参数设定。这些是仅有的区别。除了这些,Dropout与Bagging算法一样。例如,每个子网络中遇到的训练集确实是有放回采样的原始训练集的一个子集。
们假定该模型的作用是输出一个概率分布。在Bagging的情况下,每个模型产生一个概率分布。集成的预测由这些分布的算术平均值给出:
在Dropout的情况下,通过掩码定义每个子模型的概率分布。集成的预测由关于的算术平均值由下式给出:
其中是训练时采样的概率分布。
这个求和包含多达指数级的项,除非该模型的结构允许某种形式的简化,否则是不可能计算的。我们可以通过采样近似推断,即平均许多掩码的输出。即使是10 − 20个掩码就足以获得不错的表现。
然而,一个更好的方法能不错地近似整个集成的预测,且只需一个前向传播的代价。要做到这一点,我们改用集成成员预测分布的几何平均而不是算术平均。通过几何平均直接定义的非标准化概率分布由下式给出:
其中是可被丢弃的单元数。
为了作出预测,我们必须重新标准化集成:
涉及Dropout的一个重要观点 (Hinton et al., 2012c) 是,我们可以通过评估模型中来近似:该模型具有所有单元,但我们将单元的输出的权重乘以单元的被包含概率。这个修改的动机是得到从该单元输出的正确期望值。我们把这种方法称为权重比例推断规则(weight scaling inference rule)。目前还没有在深度非线性网络上对这种近似推断规则的准确性作任何理论分析,但经验上表现得很好。
因为我们通常使用0.5的包含概率,权重比例规则一般相当于在训练结束后将权重除2,然后像平常一样使用模型。我们的目标是确保在测试时一个单元的期望总输入与在训练时该单元的期望总输入是大致相同的(即使近半单位在训练时丢失)。
总之,在训练时,每个神经单元以概率被保留;则在测试阶段,每个神经单元都是存在的,权重参数要乘以,成为。测试时需要乘上的原因:若隐藏层的一个神经元在dropout前输出是,则dropout后期望值是。而在测试时该神经元总是激活,为了保持同样的输出期望值并使下一层也得到同样的结果,需要调整。
一个关于Dropout的重要见解是,通过随机行为训练网络并平均多个随机决定进行预测,实现了一种参数共享的Bagging形式。早些时候,我们将Dropout描述为通过包括或排除单元形成模型集成的Bagging。然而,这种参数共享策略不一定要基于包括和排除。原则上,任何一种随机的修改都是可接受的。我们可以认为由向量参数化的任何形式的修改,是对所有可能的值训练的集成。例如可以是实值。Srivastava et al. (2014) 表明,权重乘以 比基于二值掩码Dropout表现得更好。由于,标准网络自动实现集成的近似推断,而不需要权重比例推断规则。
更进一步的Dropout观点认为,Dropout不仅仅是训练一个Bagging的集成模型,并且是共享隐藏单元的集成模型。这意味着无论其他隐藏单元是否在模型中,每个隐藏单元必须都能够表现良好。隐藏单元必须准备好进行模型之间的交换和互换。Hintonet al. (2012d) 由生物学的想法受到启发:有性繁殖涉及到两个不同生物体之间交换基因,进化产生的压力使得基因不仅是良好的而且要准备好不同有机体之间的交换。这样的基因和这些特点对环境的变化是非常稳健的,因为它们一定会正确适应任何一个有机体或模型不寻常的特性。因此Dropout正则化每个隐藏单元不仅是一个很好的特征,更要在许多情况下是良好的特征。
Dropout强大的大部分原因来自施加到隐藏单元的掩码噪声,了解这一事实是重要的。这可以看作是对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。例如,如果模型学得通过鼻检测脸的隐藏单元 ,那么丢失对应于擦除图像中有鼻子的信息。模型必须学习另一种 ,要么是鼻子存在的冗余编码,要么是像嘴这样的脸部的另一特征。传统的噪声注入技术,在输入端加非结构化的噪声不能够随机地从脸部图像中抹去关于鼻子的信息,除非噪声的幅度大到几乎能抹去图像中所有的信息。Dropout破坏提取的特征而不是原始值,让破坏过程充分利用该模型迄今获得的关于输入分布的所有知识。
13、对抗训练
在许多情况下,神经网络在独立同分布的测试集上进行评估已经达到了人类表现。因此,我们自然要怀疑这些模型在这些任务上是否获得了真正的人类层次的理解。为了探索网络对底层任务的理解层次,我们可以探索这个模型错误分类的例子。Szegedy et al. (2014b) 发现,在精度达到人类水平的神经网络上通过优化过程故意构造数据点,其上的误差率接近100%,模型在这个输入点的输出与附近的数据点非常不同。在许多情况下,与非常近似,人类观察者不会察觉原始样本和对抗样本(adversarial example)之间的差异,但是网络会作出非常不同的预测。它们在正则化的背景下很有意思,因为我们可以通过对抗训练(adversarial training)减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训练网络。
Goodfellow et al. (2014b) 表明,这些对抗样本的主要原因之一是过度线性。神经网络主要是基于线性块构建的。因此在一些实验中,它们实现的整体函数被证明是高度线性的。这些线性函数很容易优化。不幸的是,如果一个线性函数具有许多输入,那么它的值可以非常迅速地改变。如果我们用改变每个输入,那么权重为的线性函数可以改变之多,如果是高维的这会是一个非常大的数。对抗训练通过鼓励网络在训练数据附近的局部区域恒定来限制这一高度敏感的局部线性行为。这可以被看作是一种明确地向监督神经网络引入局部恒定先验的方法。
对抗样本也提供了一种实现半监督学习的方法。在与数据集中的标签不相关联的点处,模型本身为其分配一些标签。模型的标记未必是真正的标签,但如果模型是高品质的,那么提供正确标签的可能性很大。我们可以搜索一个对抗样本,导致分类器输出一个标签且。不使用真正的标签,而是由训练好的模型提供标签产生的对抗样本被称为虚拟对抗样本(virtual adversarial example)。我们可以训练分类器为和分配相同的标签。这鼓励分类器学习一个沿着未标签数据所在流形上任意微小变化都很鲁棒的函数。驱动这种方法的假设是,不同的类通常位于分离的流形上,并且小扰动不会使数据点从一个类的流形跳到另一个类的流形上。