NO.50.tip: 深度神经网络的正则化
背景
我们引入了正则化的概念,其通过防止模型参数取值 过大来减少过拟合。这涉及向误差函数中添加一个简单的惩罚项,从而 得到正则化的误差函数,形式如下:
其中 是模型参数向量, 是未正则化的误差函数,正则化超参数 则控制正则化效应的强度。
任何给定的神经网络都只是对真实数据生成器的一种近似。更大的网络可以提供更接近的近似,但这会带来过拟合的风险。实践中我们发现,最佳的泛化结果几乎总是通过使用较大的网络结合某种形式的正则化来获得的。下面,我们将探索几种可替代的正则化技术,包括早停法、dropout、数据增强和参数共享。如果需要,也可以结合使用多种正则化技术。例如,正则化的误差函数[式(1)]通常可以与 dropout 一起使用。
归纳偏置
模型选择问题是机器学习的核心,可以追溯到大多数机器学习任务都是逆问题(inverse problem)的事实。给定条件分布 以及一组有限的输入点 ,原则上至少可以从该分布中抽样相应的值 。然而,在机器学习中,我们必须解决这个问题的逆问题,即只给定有限数量的样本就推断整个分布。这本质上是不适定的(ill-posed),因为有无限多的分布可能生成我们所观测到的训练数据。实际上,任何在观测目标值上具有非零概率密度的分布都是候选分布。
然而,为了使机器学习有实用价值,我们需要对新的 值进行预测,因此需要一种方法来从无限多可能分布中选择一个特定的分布。选择这个特定分布而非其他分布的偏好称为归纳偏置(inductive bias)或先验知识(prior knowledge),其在机器学习中起着核心作用。先验知识可能来自有助于约束解空间的背景信息。对于许多应用,输入值的微小变化应该导致输出值的微小变化,因此应该使解偏向于那些具有平滑变化函数的解决方案。形如式(1)的正则化项鼓励模型权重取值较小,因此引入了对输入变化较慢的函数的偏好。同样,当我们在图像中检测对象时,可以利用对象本体通常与对象在图像中的位置无关的先验知识。这称为平移不变性,将其纳入我们的解可以显著简化构建具有良好泛化能力的系统的任务。
源与流
对称性和不变性
在机器学习的许多应用中,预测应该在输入变量经过一种或多种变换时保持不变,称为具有不变性。例如,在对二维图像中的对象进行分类时,如猫或狗,无论对象在图像中的位置如何,都应赋予对象相同的分类,称为平移不变性(translation invariance)。同样,图像中对象大小的变化也不应改变对象的分类,称为尺度不变性(scale invariance)。利用这种对称性来创建归纳偏置可以大大提高机器学习模型的性能,这是几何深度学习(geometric deep learning)(Bronstein et al., 2021)所要研究的主题。
平移或缩放等变换保持特定属性不变的现象称为对称性。所有对应于特定对称性的变换的集合构成了一个称为群(group)的数学结构。群由一组元素 ,以及一个用于组合元素对的二元运算(使用符号 表示)组成。以下4个公理对于群是成立的。
- 封闭性:对于集合中的任何两个元素 和 , 也必须在集合中。
- 结合性:对于集合中的任何三个元素 和 ,有 。
- 单位元:集合中存在一个称为单位元的元素 ,满足对于集合中的每个元素 ,有 。
- 逆元:对于集合中的每个元素 ,存在集合中的另一个元素,用 表示,称为逆元,满足 。
简单的群如以 的倍数旋转正方形或在二维平面上连续平移对象的变换的集合。
原则上,神经网络对输入空间变换做出预测的不变性可以从数据中学习,而无须对网络或训练程序进行特殊修改。然而,实际上这可能极其具有挑战性,因为这样的变换可以在原始数据中产生显著改变。例如,图像中对象的相对较小的平移,即使只有几个像素,也可以导致像素值发生显著变化。此外,多种不变性通常需要同时保持,例如同时要求对二维空间中的平移、缩放、旋转、强度变化、色彩平衡变化等保持不变。这样的变换组合的数量是指数级的,这使得学习所有这些不变性所需的训练集大得难以承受。
因此,我们需要寻求更有效的方法来促使自适应模型展现出所需的不变性。这些方法大致可以分为4类。
- 预处理。通过在预处理阶段计算在所需变换下保持不变的数据特征来构建不变性。任何后续使用这些特征作为输入的回归或分类系统必然也保持了这些不变性。
- 正则化的误差函数。向误差函数中添加一个正则化项,以惩罚输入仅受不变性变换改变时模型输出的变化。
- 数据增强。通过使用所需的不变性对训练数据点进行变换,从而扩展训练集,同时保持它们的目标值与变换前相同。
- 网络架构。通过适当选择网络架构,将不变性融入神经网络的结构中。
上述第1类方法面临的一个挑战是设计呈现所需不变性的特征,同时不丢弃可能有助于确定网络输出的信息。我们已经看到,固定的、手工提取的特征表示能力有限,并且已被使用深度神经网络习得的表示所取代。
第2类方法的一个例子是在训练过程中添加正则化项到误差函数中的切线传播(tangent propagation)技术(Simard et al., 1992),旨在直接惩罚由某种不变性变换下输入变量的变化引起的输出变化。除了训练的额外复杂性外,这种技术的一个局限性是只能处理小的变换(例如少于一个像素的平移)。
第3类方法又称数据集增强(data set augmentation)。它通常相对容易实现,并且在实践中被证明非常有效。它通常应用在图像分析场景中,因为创建变换的训练数据非常直接。对于软组织的医疗图像,数据增强也可以包含连续的“橡皮布”变形(Ronneberger, Fischer, and Brox, 2015)。
等变性
不变性的一个重要推广称为等变性(equivariance)。在这种情况下,当输入变换时,网络的输出以特定的方式变换,而不是保持不变。例如,考虑一个接收图像作为输入并返回图像分割结果的网络,其中每个像素分类为属于前景对象或背景。此时,如果图像中对象的位置发生平移,那么我们希望对象的相应分割结果也类似地发生平移。假设我们用 表示图像,用 表示分割网络的操作,那么对于一个平移操作 ,我们有
这表明被平移图像的分割结果是通过对原始图像的分割结果进行平移得到的。
更一般地,当应用于输出的变换与应用于输入的变换不同时,等变性也成立:
例如,假设分割后的图像的分辨率低于原始图像, 代表原始图像空间中的平移, 代表较低维度分割空间中相应的平移。同样,如果 代表计算图像中对象方向的操作,而 代表旋转(这是图像中所有像素值的复杂非线性变换),那么 将依据 生成的标量方向值增大或减小。
我们还看到,不变性是等变性的一种特殊情况,其中输出变换是简单的恒等变换。例如,如果 是一个神经网络,用于分类图像中的一个对象,而 是一个平移操作,则有
这表明对象的类别不依赖于该对象在图像中的位置。
权重衰减
式(1)中的平方和正则化项在机器学习文献中称为权重衰减(weight decay),因为在序贯学习算法中,它鼓励权重值向零衰减(除非数据支持其不衰减)。这种正则化项的一个优点是,它的导数很容易计算,可用于梯度下降训练。具体来说,对于式(1),梯度由下式给出:
对于 ,所有参数都被推向 ,有效参数的数量因此为 。随着 的减小,有效参数的数量开始增加,直至 时,有效参数的数量等于模型中实际参数的总数。我们发现,通过正则化控制模型复杂性与通过限制参数数量控制模型复杂性有相似之处。
一致性正则化项
简单权重衰减形式[式(1)]的一个缺陷是,它破坏了网络映射的某些我们想要的变换特性。为了说明这一点,考虑一个有两层权重和线性输出单元的多层感知机网络,该网络从一组输入变量 映射到一组输出变量 。第一隐藏层(简称隐层)的隐藏单元的激活由下式给出:
而输出单元的激活由下式给出:
假设我们对输入数据进行如下线性变换:
然后,我们可以通过对从输入到隐藏层单元的权重和偏置进行相应的线性变换,来保证网络执行的映射不变:
类似地,网络输出变量的如下线性变换:
可以通过用以下形式变换第二隐藏层的权重和偏置来实现:
如果我们使用原始数据训练一个网络,并使用输入和/或目标变量经过上述某种线性变换的数据训练另一个网络,那么一致性要求我们应该得到等价网络,它们的区别仅仅在于是否对权重做了线性变换。任何正则化项都应该与这种性质一致,否则就会任意地偏好一种解而不是另一种等价的解。显然,简单权重衰减形式[式(1)]因为平等地惩罚所有权重和偏置,所以不满足这一性质。
为此,我们需要寻找一个在线性变换[式(9)、式(10)、式(12)和式(13)]下不变的正则化项。这要求正则化项对权重的重新缩放和偏置的移动保持不变。这样的正则化项由下式给出:
其中 表示第一层的权重集合, 表示第二层的权重集合,且偏置被排除在求和之外。只要使用 和 来重新缩放正则化参数,这个正则化项在权重变换下就会保持不变。
正则化项[式(14)]对应于参数的先验分布形式:
注意,这种形式的先验是反常的(它们不能被规范化),因为偏置参数是不受约束的。使用反常的先验可能会对选择正则化系数,以及在贝叶斯框架内进行模型比较造成困难。因此,我们通常会为偏置设置单独的先验(从而打破平移不变性),这些先验都有自己的超参数。
更一般地,考虑将权重分成任意多组 的正则化项,使得
其中:
例如,我们可以为多层网络中的每一层使用不同的正则化项。
广义权重衰减
我们有时使用简单的二次正则化项的一般形式:
其中 对应于式(1)中的二次正则化项。
当 时,形如式(18)的正则化项在统计学领域称为 lasso(Tibshirani, 1996)。对于二次误差函数,它的性质是,如果 足够大,系数 将趋于零,从而得到一个稀疏的模型,对应的基函数不起作用。为了说明这一点,考虑最小化下式给出的正则化误差函数:
这等介于在约束条件
下最小化未正则化的误差函数 ,其中 有一个合适的取值。这两种方法可以通过拉格朗日乘子法关联起来。随着 的增大,更多参数将趋于零。相比之下,二次正则项不会要求权重参数为零。
早停法
除正则化外,控制网络有效复杂度的一种替代方法是早停法(early stopping)。深度学习模型的训练涉及迭代下降定义在一组训练数据上的误差函数。虽然在训练集上计算的误差通常首先下降,然后由于网络开始过拟合而增加。因此,为了获得具有良好泛化能力的网络,应在验证集上的最小误差点处停止训练。
学习曲线的这种现象有时可以从网络中有效参数数量的角度进行定性解释。这个数量开始时很少,然后在训练过程中增长,对应模型有效复杂度的稳定增加。在训练误差达到最小值之前,停止训练是限制网络有效复杂度的一种方法。
参数共享
一种降低网络复杂度的方法是对权值施加硬约束。该方法将权重分组,要求每组内的所有权重共享相同的值,其中共享的值是从数据中学习得到的。这称为权重共享(weight sharing),又称参数共享(parameter sharing)或参数捆绑(parameter tying)。这意味着有权值共享相同的值,其中共享的值是从数据中学习的。这是一种将归纳偏置编码到网络中的方法,从而表达一些已知不变性。评估此类网络误差函数的梯度可以通过稍微修改反向传播来完成,虽然在实践中这是通过自动微分隐式处理的。我们讨论卷积神经网络时,将广泛使用参数共享。然而,参数共享只适用于可以预先指定约束形式的特定问题。
软权重共享
Nowlan and Hinton(1992)并未使用强制模型参数集相等的硬约束,而是引入了一种称为软权重共享(soft weight sharing)的形式,其中正则化项促使权重重组具有相似取值。此外,权重的分组、每组的平均权值以及组内权值的传播都是作为学习过程的一部分来确定的。
前面曾提到,式(1)中的简单权重衰减正则化项可以看作权重高斯先验分布的负对数。这促使所有的权重都收敛到 。但我们可以通过考虑高斯混合概率分布来使权重重形成几个组,而非仅仅一个组。高斯分量的均值 和方差 ,以及混合系数 ,则视为学习过程中需要确定的可调参数。这样我们就有了如下概率密度形式:
其中 是高斯分量的数量。对式(21)的右侧取负对数就会得到如下形式的正则化函数:
总误差函数由下式给出:
其中 为正则化系数。
该误差关于混合模型的权重 和参数 被联合最小化。这可以使用梯度下降来完成,但需要我们计算 对所有可学习参数的导数。为此,我们将 视为已经生成权值的每个分量 的先验概率,并引入相应的后验概率。后验概率由贝叶斯定理给出:
总误差函数关于权重的导数由下式给出:
因此,正则化项的作用是将每个权值拉向第 个高斯分布的中心,其力度与给定权重的高斯分布的后验概率成正比。这正是我们想要的结果。
关于高斯分布中心的误差导数也很容易计算得出:
为了确保方差 为正,我们引入下式定义的新变量 :
并且对 进行无约束最小化。相关导数为:
这个过程会驱使 趋向于相应中心 周围的权重偏差平方的加权平均值,其中权重系数由每个权重的分量 生成的后验概率给出。
关于混合系数 的导数,我们需要考虑如下约束条件:
以上约束条件源于对 作为一组辅助变量 来实现对它的约束:
可以看到,采用以下形式的正则化误差函数关于 的导数:
软权重共享的另一种应用(Lasserre, Bishop and Minka, 2006)介绍了一种原则性方法:将生成式模型的无监督训练与相应判别模型的有监督训练相结合。这在有大量未标记数据而标记数据短缺的情况下是有用的。生成式模型的优势在于,所有的数据都可以用来确定模型参数,而判别模型只有标记数据直接为其提供参数。当存在模型设定误差时,也就是当模型没能准确描述所生成数据的真实分布时(通常情况下是这样),判别模型具备更好的泛化能力。通过引入两个模型参数的软捆绑,我们得到了一个良性的生成式和判别式的混合方法,从而可以鲁棒地对模型设定误差进行建模,还能够从对模型在未标记数据上进行训练中受益。
残差连接
深度神经网络(简称深度网络)的表征能力(也称表示能力)在很大程度上源于模型的多层处理。据观察,增加网络层数可以显著提高泛化能力。我们也看到了批量归一化,以及对权重和偏置进行初始化,可以帮助解决深度神经网络中梯度消失或梯度爆炸的问题。然而,即使使用批量归一化,训练难度也仍然会随着网络层数的增多而增加。
我们已经看到,神经网络的表征能力随着网络深度呈指数级增长。使用 ReLU 激活函数网络可以表示的线性区域的数量呈指数级增长。然而,这样做的一个后果是误差函数梯度中的不连续现象激增。在这里,输出变量对输入变量的导数(网络的雅可比矩阵)是输入变量的函数。从微积分的链式法则来看,这些导数决定了误差表面的梯度。
这种现象的一种解释称为破碎梯度(shattered gradient)(Balduzzi et al., 2017)。我们已经看到,神经网络的表征能力随着网络深度呈指数级增长。然而,这样做的一个后果是误差函数梯度中的不连续现象激增。在这里,输出变量对输入变量的导数(网络的雅可比矩阵)是输入变量的函数。从微积分的链式法则来看,这些导数决定了误差表面的梯度。我们看〔…〕。
到,对于深度神经网络,网络浅层的权重参数即便发生极其微小的变化,也会产生显著的梯度变化。基于梯度的迭代式优化算法假设梯度在参数空间中平滑变化,因此这种“破碎梯度”效应会使训练对非常深的网络无效。残差连接(residual connection)(He et al., 2015a)是对神经网络架构的一个重要修改,它对训练极深的网络有很大帮助。残差连接是一种特殊形式的跨层连接(skip-layer connection)。考虑一个包含如下三层的神经网络:
这里的函数 可能仅由一个线性变换和一个 ReLU 激活函数组成,也可能很复杂,比如包含多个线性层、激活函数和归一化层。残差连接会将每个函数的输入添加到函数的输出,从而有
每个函数和残差连接的组合,如 ,称为残差块(residual block)。残差网络(residual network),也称 ResNet,由多层这样的块按顺序组成。如果非线性函数中的参数足够小,使函数输出接近于零,则残差块可以很容易地生成恒等变换。
“残差”一词指的是,在每个块中,函数学习恒等映射和期望输出之间的残差,我们可以通过整理残差变换的等式得到:
与标准的深度网络相比,具有残差连接的网络中的梯度对输入值的敏感度要低得多。Li et al. (2017) 开发了一种直接可视化误差表面的方法,结果表明,残差连接的作用是创建更平滑的误差表面。残差网络中通常包含批量归一化层,它们一同显著地减少了梯度消失和梯度爆炸的问题。He et al. (2015a) 证明了残差连接可以使非常深的网络(可能有数百层)得到有效的训练。
如果我们结合式(35)~式(37)给出整个网络的统一方程,就可以进一步深入了解残差连接使误差表面变得平滑的方式:
现在我们可以代入中间变量 和 ,从而给出将网络输出作为输入 的函数表达式:
从残差网络的这种扩展形式,可以看到,函数整体由多个并行的网络组成,每个网络层数较少。该网络具有深度网络的表征能力,因为深度网络是它的一个特例。误差表面被浅层和深层子网络的组合所平滑。
到目前为止,我们还没有指定可学习非线性函数 的具体形式。最简单的选择是使用一个标准的前馈网络,它由可学习的线性变换层和固定的非线性激活函数(如 ReLU 函数)层交替构成。
将残差连接加入标准前馈网络的两种可选方法,该网络由可学习的线性变换层和非线性激活函数(如 ReLU 函数)层交替构成。
dropout
dropout(Srivastava et al., 2014)是一种使用广泛且非常有效的正则化形式,它可以视为一种在不需要单独训练多个模型的情况下,对指数级数量规模的模型隐式地进行模型平均的方法。它具有广泛的适用性,并且计算开销低。
dropout 的核心思想是在训练过程中随机删除网络中的节点,包括它们之间的连接。每当一个新的数据点进入网络,模型就会随机选择一些节点并忽略它们。
dropout 可以同时应用于隐藏节点和输入节点,但不能应用于输出节点,这相当于将被删节点的输出设置为零。它可以通过定义一个掩码向量 来实现。对于数据点 ,该掩码将被乘以非输出节点 ,其值以概率 设置为 。对于隐藏节点,通常使 很有效;而对于输入节点,通常使 。
在训练过程中,当每个数据点进入网络时,就会创建一个新的掩码,并在该训练网络上应用前向和反向传播步骤来创建误差函数梯度,然后用于更新权重。在对每个小批次使用随机梯度下降法时,会在训练期间只考虑这些网络中的一部分。这与传统的集成方法不同,在传统的集成方法中,集成中的每个网络都是独立训练至收敛的。它们之间的另一个区别是,指数级数量规模的网络隐式地用 dropout 进行训练,它们不是独立的,而是与完整网络共享它们的参数值,因此剪枝网络间的参数也是彼此共享的。需要注意的是,使用 dropout 训练后,单个参数更新包含较大噪声,因此训练可能需要花费更长的时间。此外,由于误差函数本身是有噪声的,仅通过在训练过程中减小误差函数,很难确保优化算法正常工作。
一旦训练完成,原则上就可以通过应用集成规则[式(38)]来进行预测,这种(情况)下的集成规则如下:
其中,求和是在掩码的指数级空间上进行的, 是来自具有掩码 的网络的预测分布。因为这种求和难以处理,所以可以通过对少量掩码进行采样来近似。在实践中,只需要10或20个掩码就足以获得良好的结果。这一过程称为蒙特卡洛 dropout。
一种更简单的方法是在不掩盖训练好的网络的情况下进行预测,并重新缩放网络中的权重,使每个节点在测试期间的预期输入与训练期间的输入大致相同,以补偿在训练中会忽略一部分节点的事实。因此,如果一个节点在训练期间以概率 的形式存在,那么在测试期间,在使用网络进行预测之前,需要对来自该节点的输出权重乘以 。
应用 dropout 的另一种动机来自贝叶斯学派。在按照贝叶斯学派的观点处理问题时,我们将通过对所有的 个网络模型进行平均来预测,其中的每个网络模型都由其后验概率加权。这样做的计算成本很高,无论是在评估后验概率的测试期间,还是在计算加权预测的训练期间。dropout 通过给每个可能的模型赋予相同的权重来近似这个模型平均。
dropout 具有良好表现背后的更深层原因,在于 dropout 在减少过拟合方面发挥了重要作用。在一个标准的神经网络中,每个节点以一种可能无法泛化到新数据的方式调整和特化。给定其他节点的输出,每个节点会调整为错误适应单个数据点,其性能依赖于其他特定节点的存在,而必须在广泛的场景下做出有用的贡献。使用 dropout,每个节点不能依赖其他节点的存在,而必须与其他节点共同调整和特化。对于使用最小二乘法训练的简单线性回归模型,dropout 是正则化的一种修改形式。