《深度学习》 第7章 深度学习中的正则化

《深度学习》 第7章 深度学习中的正则化

开发更有效的正则化策略已成为本领域的主要研究工作之一。

可将正则化定义为“对学习算法的修改——旨在减少泛化误差而不是训练误差”

  • 设计为编码特定类型的先验知识
  • 对简单模型的偏好
  • 集成方法,结合多个假说来解释训练模型

估计的正则化以偏差的增加换取方差的减少。讨论泛化时,主要侧重模型族的3个情形:

  1. 不包括真实的数据生成过程——对应于欠拟合和含有偏差的情况
  2. 匹配真是数据生成过程
  3. 除了包括真实的数据生成过程,还包括其他的生成过程——发差主导的过拟合

正则化的目标是将模型从第三种情况转化为第二种情况

深度学习算法的大多数应用针对于 真实数据的生成过程几乎肯定在模型族之外 的情况。这意味控制模型的复杂度不是找到合适规模的模型,而是找到一个恰当正则化的大型模型。

参数范数惩罚

正则化后的目标函数记为:
J ~ ( θ , X , y ) = J ( θ , X , y ) + α Ω ( θ ) \tilde J(\theta, X, y) = J(\theta, X, y) + \alpha \Omega(\theta)

我们通常只对权重而不是偏置作正则惩罚

L 2 L^2 参数正则化

权重衰减:向目标函数添加正则项 Ω ( θ ) = 1 2 w 2 2 \Omega(\theta)=\frac{1}{2}||w||^2_2 ,使得权重更加接近原点。
J ~ ( w ; X , y ) = α 2 w w + J ( w ; X , y ) \tilde J(w;X,y) = \frac{\alpha}{2}w^{\top}w+J(w;X,y)
J ~ ( w ; X , y ) = α w + w J ( w ; X , y ) \nabla \tilde J(w;X,y) = \alpha w + \nabla_w J(w;X, y)
w ( 1 ϵ α ) w ϵ w J ( w ; X , y ) w \leftarrow(1-\epsilon \alpha)w-\epsilon \nabla_wJ(w;X,y)
每步执行通常的梯度更新之前先收缩权重向量。

w w^* 为未正则化的目标函数取得最小训练误差时的权重向量,并在 w w^* 的领域对目标函数作二次近似。设 w ~ \tilde w 为最小正则化后的目标函数,则:
w ~ = ( H + α I ) 1 H w = Q ( Λ + α I ) 1 Λ Q w \tilde w = (H+\alpha I)^{-1}Hw^* = Q(\Lambda + \alpha I)^{-1}\Lambda Q^{\top}w^*
我们可以看出权重衰减的效果是沿着由 H H 的特征向量所定义的轴缩放 w w^* 。具体来说,会根据 λ i λ i + α \frac{\lambda_i}{\lambda_i+\alpha} 因子缩放于 H H i i 个特征向量对齐的 w w^* 的分量。沿着 H H 特征值较大的方向 ( λ i α ) (\lambda_i \gg \alpha) 正则化的影响较小,而 λ i α \lambda_i \ll \alpha 的分量将会收缩到几乎为零。

L 2 L^2 正则化能让学习算法“感知”到具有较高方差的输入 x x ,因此于输出目标的协方差较小的特征的权重会收缩。

L 1 L^1 参数正则化

J ~ ( w ; X , y ) = α w 1 + J ( w ; X , y ) \tilde J(w;X,y) = \alpha||w||_1 + J(w;X,y)
w J ~ ( w ; X , y ) = α sign ( w ) + w J ( w ; X , y ) \nabla_w \tilde J(w;X,y) = \alpha \text{sign}(w) + \nabla_w J(w;X,y)
L 1 L^1 正则化对梯度的影响不再是线性地缩放每个 w i w_i ;而是添加一项与 sign ( w i ) \text{sign}(w_i) 同号的常数。有可能通过足够大的 α \alpha 实现稀疏。

我们看到许多正则化策略可以被解释为MAP贝叶斯推断,特别是 L 2 L^2 正则化相当于权重是高斯先验的MAP贝叶斯推断。对于 L 1 L^1 正则化,用于正则化代价函数的惩罚项 α Ω ( w ) = i w i \alpha \Omega(w)= \sum_i |w_i| 与通过MAP贝叶斯推断最大化的对数先验项是等价的

作为约束的范数惩罚

如果想约束 Ω ( θ ) \Omega(\theta) 小于某个常数 k k ,我们可以构建广义Lagrange函数:
L ( θ , α ; X , y ) = J ( θ ; X , y ) + α ( Ω ( θ ) k ) \mathcal L(\theta, \alpha; X, y) = J(\theta; X,y) + \alpha(\Omega(\theta)-k)
θ = arg min θ max α , α 0 L ( θ , α ) \theta^* = \underset{\theta}{\arg\min} \underset{\alpha,\alpha \ge 0}{\max} \mathcal L(\theta, \alpha)
所以正值的 α \alpha 都鼓励 Ω ( θ ) \Omega(\theta) 收缩。可以把参数范数惩罚看作对权重强加的约束。

重投影:先计算 J ( θ ) J(\theta) 的下降步,然后将 θ \theta 投影到满足 Ω ( θ ) < \Omega(\theta)< 的最近点。

  • 如何知道什么样的 k k 是合适的,可以使用显式的限制和重投影,而不是惩罚。
  • 另外使用惩罚可能会导致目标函数非凸而使算法陷入局部极小。
  • 最后使用重投影的显示约束还对优化过程增加了一定的稳定性。

Hinton推荐约束神经网络个的权重矩阵每列的范数,而不是限制整个权重矩阵的Frobenius范数

正则化和欠约束问题

数据集增强

分类面临的一个主要任务是要对各种各样的变换保持不变。可以轻易的转换训练集中的 x x 来生成新的 ( x , y ) (x,y)

在神经网络的输入层注入噪音也是数据增强的一种。

通常,人工设计的数据集增强方案可以大大减少机器学习技术的泛化误差。

噪音鲁棒性

对于某些模型而言,想输入添加方差极小的噪音等价于对权重施加范数惩罚。通常,注入噪音远比简单地收缩参数强大,特别是噪音被添加到隐藏单元时会更加强大。

另外一种正则化模型的噪音使用方式是将其加到权重。主要用于循环神经网络。可以被解释为关于权重的贝叶斯推断的随机实现。贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。向权重添加噪声是反映这种不确定性的一种实用的随机方法。

在某些假设下,施加于权重的噪声可以被解释为与更传统的正则化形式等同,鼓励要学习的函数保持稳定。它推动模型沮洳对权重小的变化相对不敏感的区域,找到的点不只是极小值,还是由平坦区域所包围的极小点。

向输出目标注入噪音

对于一些小常数 ϵ \epsilon ,训练集标记 y y 是正确的概率是 1 ϵ 1-\epsilon 标签平滑通过把确切目标从0和1替换为 ϵ k 1 \frac{\epsilon}{k-1} 1 ϵ 1-\epsilon ,正则化具有 k k 个输出的softmax函数的模型。标准交叉熵损失可以用在这些非确切目标的输出上。

半监督学习

在半监督学习的框架下, P ( x ) P(x) 产生的未标记样本和 P ( x , y ) P(x,y) 中的标记样本都用于估计 P ( y x ) P(y|x) 或者根据 x x 预测 y y

在深度学习的背景下,半监督学习通常指的是学习一个表示 h = f ( x ) h=f(x) 。学习表示的目的是使相同类中的样本有类似的表示。无监督学习可以为如何在表示空间聚集样本提供有用线索。在输入空间紧密聚集的样本应该被映射到类似的表示。

我们可以构建这样的一个模型,其中生成模型 P ( x ) P(x) 于判别模型 P ( y x ) P(y|x) 共享参数,而不用分离无监督和监督部分。生成模型准则表达了对监督学习问题解的特殊形式的先验知识,即 P ( x ) P(x) 的结构通过某种共享参数的方式连接到 P ( y x ) P(y|x)

多任务学习

多任务学习模型通常可以分为两类相关的参数:

  1. 具体任务的参数
  2. 所以任务共享的通用参数。

从深度学习的观点看,底层的先验知识如下:能解释数据变化的因素中,某些因素是跨两个或更多任务共享的。

提前终止

可以认为提前终止是非常高效的超参数选择算法。“训练时间”是唯一只要跑一次训练就能尝试很多值的超参数。通过提前终止自动选择超参数的唯一显著的代价是训练期间要定期评估验证集。另一个提前终止的额外代价是需要保持最佳的参数副本。

提前终止是一种非常不显眼的正则化形式

提前终止需要验证集,这意味着某些训练数据不能被馈送到模型。为了更好地利用这一额外的数据,我们可以在完成提前终止的首次训练之后,进行额外的训练。在第二轮,即额外的训练步骤中,所有的训练数据都被包括在内。有两个基本的策略都可以用于第二轮训练过程。

一个策略是再次初始化模型,然后使用所有数据再次训练。在这个第二轮训练过程中,我们使用第一轮提前终止训练确定的最佳步数。此过程有一些细微之处。例如,我们没有办法知道重新训练时,对参数进行相同次数的更新和对数据集进行相同次数的遍历哪一个更好。由于训练集变大了,在第二轮训练时,每一次遍历数据集将会更多次地更新参数。

另一个策略是保持从第一轮训练获得的参数,然后使用全部的数据继续训练。在这个阶段,已经没有验证集指导我们需要在训练多少步后终止。取而代之,我们可以监控验证集的平均损失函数,并继续训练,直到它低于提前终止过程终止时的目标值。此策略避免了重新训练模型的高成本,但表现并没有那么好。例如,验证集的目标不一定能达到之前的目标值,所以这种策略甚至不能保证终止。

提前终止为何具有正则化效果:认为提前终止可以将优化过程的参数空间限制在初试参数值 θ 0 \theta_0 的小邻域内。事实上,在二次误差的简单线性模型和简单的梯度下降情况下,我们可以认为提前终止相当于 L 2 L^2 正则化。

推导表明长度为 τ \tau (训练迭代次数)的轨迹结束于 L 2 L^2 的正则化目标的极小点。提前终止比权重衰减更具有优势,提前终止能自动确定正则化的正确量,而权重衰减需要进行多个不同超参数值的训练实验。

参数绑定和参数共享

正则化一个模型(监督模式下训练的分类器)的参数,使其接近另外一个无监督模式下训练的模型(捕捉观察到的输入数据的分布)的参数。可以通过正则化 Ω ( w ( A ) , w ( B ) ) = w ( A ) w ( B ) 2 2 \Omega(w^{(A)},w^{(B)})=||w^{(A)}-w^{(B)}||^2_2 进行参数范数惩罚。构造的这种框架使得分类模型的许多参数能与无监督模型中对应的参数匹配。

参数共享:强迫某些参数相等。

卷积神经网络

稀疏表示

惩罚神经网络中的激活单元,稀疏化激活单元。

正交匹配追踪中的OMP-1可以成为深度架构中非常有效的特征提取器。

含有隐藏单元的模型在本质上都能变得稀疏。

Bagging和其他集成方法

模型平均奏效的原因是不同的模型通常不会在测试集生产生完全相同的误差。

集成平方误差的期望会随着集成规模增大而线性减少,如果各个模型(数量为 k k )的误差完全不相关,该集成平方误差的期望为单个模型平方误差 1 k \frac 1k

Bagging涉及构造 k k 个不同的数据集。每个数据集从原始数据集中重复采样构成,和原始数据集具有相同数量的样例。这意味着,每个数据集以高概率缺少一些来自原始数据集的例子,还包含若干重复的例子(如果所得训练集与原始数据集大小相同,那所得数据集中大概有原始数据集 2 / 3 2/3 的实例)。模型 i i 在数据集 i i 上训练。每个数据集所含样本的差异导致了训练模型之间的差异。

Dropout

Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。

在训练中使用Dropout时,我们会使用基于小批量产生较小步长的学习算法,如随机梯度下降等。我们每次在小批量中加载一个样本,然后随机抽样应用于网络中所有输入和隐藏单元的不同二值掩码。

Dropout训练与Bagging训练不太一样。在Bagging的情况下,所有模型都是独立的。在Dropout的情况下,所有模型共享参数,其中每个模型继承父神经网络参数的不同子集。参数共享使得在有限可用的内存下表示指数级数量的模型变得可能

Bagging集成必须根据所有成员的累积投票做一个预测。在这种背景下,我们将这个过程称为推断(inference)。

我们可以通过评估模型中 p ( y x ) p(y | x) 来近似 p e n s e m b l e p_{ensemble} :该模型具有所有单元,但我们将单元 i i 的输出的权重乘以单元 i i 的被包含概率。这个修改的动机是得到从该单元输出的正确期望值。我们把这种方法称为权重比例推断规则

计算方便是Dropout的一个优点。训练过程中使用Dropout产生 n n 个随机二进制数与状态相乘,每个样本每次更新只需 O ( n ) \mathcal O(n) 的计算复杂度。

Dropout的另一个显著优点是不怎么限制适用的模型或训练过程。几乎在所有使用分布式表示且可以用随机梯度下降训练的模型上都表现很好。

使用Dropout训练时的随机性不是这个方法成功的必要条件。它仅仅是近似所有子模型总和的一个方法。

随机性对实现Dropout的正则化效果不是必要的,同时也不是充分的。这表明,使用Bagging解释Dropout比使用稳健性噪声解释Dropout更好。只有当随机抽样的集成成员相互独立地训练好后,才能达到Bagging集成的正则化效果。

一个关于Dropout的重要见解是,通过随机行为训练网络并平均多个随机决定进行预测,实现了一种参数共享的Bagging形式。这种参数共享策略不一定要基于包括和排除。原则上,任何一种随机的修改都是可接受的。在实践中,我们必须选择让神经网络能够学习对抗的修改类型。

Dropout不仅仅是训练一个Bagging的集成模型,并且是共享隐藏单元的集成模型。这意味着无论其他隐藏单元是否在模型中,每个隐藏单元必须都能够表现良好。隐藏单元必须准备好进行模型之间的交换和互换。相比独立模型集成获得泛化误差改进,Dropout会带来额外的改进。

Dropout强大的大部分原因来自施加到隐藏单元的掩码噪声,了解这一事实是重要的。这可以看作是对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。破坏提取的特征而不是原始值,让破坏过程充分利用该模型迄今获得的关于输入分布的所有知识。

Dropout的另一个重要方面是噪声是乘性的。

对抗训练

型在这个输入点 x x' 的输出与附近的数据点 x x 非常不同。在许多情况下, x x' x x 非常近似,人类观察者不会察觉原始样本和对抗样本之间的差异,但是网络会作出非常不同的预测。

我们可以通过对抗训练减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训 练网络

这些对抗样本的主要原因之一是过度线性。对抗训练通过鼓励网络在训练数据附近的局部区域恒定来限制这一高度敏感的局部线性行为。这可以被看作是一种明确地向监督神经网络引入局部恒定先验的方法。

鼓励分类器学习一个沿着未标签数据所在流形上任意微小变化都很鲁棒的函数。驱动这种方法的假设是,不同的类通常位于分离的流形上,并且小扰动不会使数据点从一个类的流形跳到另一个类的流形上。

切面距离、正切传播和流形正切分类器

一个利用流形假设的早期尝试是切面距离(tangent distance)算法。它是一种非参数的最近邻算法,其中使用的度量不是通用的欧几里德距离,而是根据邻近流形关于聚集概率的知识导出的。这个算法假设我们尝试分类的样本和同一流形上的样本具有相同的类别。由于分类器应该对局部因素(对应于流形上的移动)的变化保持不变,一种合理的度量是将点 x 1 x_1 x 2 x_2 各自所在流形 M 1 M_1 M 2 M_2 的距离作为点 x 1 x_1 x 2 x_2 之间的最近邻距离。

正切传播(tangent prop)算法训练带有额外惩罚的神经网络分类器,使神经网络的每个输出 f ( x ) f(x) 对已知的变化因素是局部不变的。

正切传播与数据集增强密切相关。不同的是在数据集增强的情况下,网络显式地训练正确分类这些施加大量变换后产生的不同输入。正切传播不需要显式访问一个新的输入点。取而代之,它解析地对模型正则化从而在指定转换的方向抵抗扰动。虽然这种解析方法是聪明优雅的,但是它有两个主要的缺点。首先,模型的正则化只能抵抗无穷小的扰动。显式的数据集增强能抵抗较大的扰动。其次,我们很难在基于整流线性单元的模型上使用无限小的方法。这些模型只能通过关闭单元或缩小它们的权重才能缩小它们的导数。

双反向传播正则化使Jacobian矩阵偏小,而对抗训练找到原输入附近的点,训练模型在这些点上产生与原来输入相同的输出。正切传播和手动指定转换的数据集增强都要求模型在输入变化的某些特定的方向上保持不变。双反向传播和对抗训练都要求模型对输入所有方向中的变化(只要该变化较小)都应当保持不变。正如数据集增强是正切传播非无限小的版本,对抗训练是双反向传播非无限小的版本。

流形正切分类器无需知道切线向量的先验。根据流形正切分类器提出的算法相当简单:(1)使用自编码器通过无监督学习来学习流形的结构,以及(2)如正切传播一样使用这些切面正则化神经网络分类器。

猜你喜欢

转载自blog.csdn.net/Tifa_Best/article/details/85238177