深度学习中的正则化

来源:互联网 发布:js window.url 编辑:程序博客网 时间:2024/06/03 22:24

  正则化的定义为:对算法的修改旨在减少泛化误差而不是训练误差。其目标就是增加模型对于新输入数据的泛化能力。
一、参数范数惩罚
  策略描述:通过对目标函数J(损失函数/代价函数)添加一个参数范数惩罚Ω(θ),限制模型的学习能力,正则化之后的目标函数形式如下:
         J̃ (w;X,y)=J(θ;X,y)+αΩ(θ)
其中α[0,]
  作用:降低原始目标J关于训练数据的误差并且同时减小参数的规模。
  注意:在神经网络中我们通常只对每一层仿射变换的权重做惩罚而不对偏置做正则惩罚。精确拟合偏置所需的数据通常比拟合权重少得多。每个权重会指定两个变量如何相互作用。我们需要在各种条件下观察这两个变量才能良好地拟合权重。而每个偏置仅控制一个单变量。这意味着,我们不对其进行正则化也不会导致太大的方差。因此,下文中使用向量 w 表示所有应受范数惩罚影响的权重,而向量 θ 表示所有参数
 (1)L2参数正则化
 这种策略通常被称之为权重衰减(weight decay)的L2的参数范数惩罚。这个正则化策略通过向目标函数添加一个正则项Ω(θ)12||w||2是的权重更加接近原点。我们假定不对偏置进行正则化,所以这里θ变为了w。这样模型的目标函数就变为:
 J̃ =α2wTw+J(w;X,y)
 其对应的梯度为:
 wJ̃ =αw+J(w;X,y)
 使用单步梯度更新如下,其对应的梯度为:
 wwϵ(αw+J(w;X,y))
 整理之后如下:
  w1ϵα)w+ϵJ(w;X,y)
  ——-待续
(2)L1参数正则化
  我们还可以使用 L 1 正则化。形式地,对模型参数 w 的 L 1 正则化被定义为:
Ω(θ)=||w||1=i|wi|
此时目标函数表示为:
 J̃ =α||w||1+J(w;X,y)
  其对应的梯度为:
 wJ̃ =αsign(w)+J(w;X,y)
 ——-待续
 二、数据增强
  对于一些机器学习任务,创建新的假数据相当简单。对分类来说这种方法是最简单的。分类器需要一个复杂的高维输入 x,并用单个类别标识 y 概括 x。这意味着分类面临的一个主要任务是要对各种各样的变换保持不变。我们可以轻易通过转换训练集中的 x 来生成新的 (x, y) 对。这种方法对于其他许多任务来说并不那么容易。例如,除非我们已经解决了密度估计问题,否则在密度估计任务中生成新的假数据是很困难的。
  数据集增强对一个具体的分类问题来说是特别有效的方法:对象识别。图像是高维的并包括各种巨大的变化因素,其中有许多可以轻易地模拟。即使模型已使用卷积和池化技术对部分平移保持不变,沿训练图像每个方向平移几个像素的操作通常可以大大改善泛化。许多其他操作如旋转图像或缩放图像也已被证明非常有效。
  注意:不能使用会改变类别的转换。例如,光学字符识别任务需要认识到 “b’’ 和 “d’’ 以及 “6’’ 和 “9’’ 的区别,所以对这些任务来说,水平翻转和旋转180 ◦ 并不是合适的数据集增强方式。
能保持我们希望的分类不变,但不容易执行的转换也是存在的。例如,平面外绕轴转动难以通过简单的几何运算在输入像素上实现。数据集增强对语音识别任务也是有效的。
  在神经网络的输入层注入噪声也可以被看作是数据增强的一种方式。对于许多分类甚至一些回归任务而言,即使小的随机噪声被加到输入,任务仍应该是能够被解决的。然而,神经网络被证明对噪声不是非常健壮 ,改善神经网络健壮性的方法之一是简单地将随机噪声添加到输入再进行训练。输入噪声注入是一些无监督学习算法的一部分,如去噪自编码器。向隐藏单元施加噪声也是可行的,这可以被看作在多个抽象层上进行的数据集增强。
  ------待续
三、噪声鲁棒性
  对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚 。在一般情况下,噪声注入远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更加强大。
  另一种正则化模型的噪声使用方式是将其加到的权重。这项技术主要用于循环神经网络。这可以被解释为关于权重的贝叶斯推断的随机实现。贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。向权重添加噪声是反映这种不确定性的一种实用的随机方法。
  ------待续
四、多任务学习
  多任务学习 (Caruana, 1993) 是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。额外的训练样本以同样的方式将模型的参数推向泛化更好的方向,当模型的一部分在任务之间共享时,模型的这一部分更多地被约束为良好的值(假设共享是合理的),往往能更好地泛化。该模型通常可以分为两类相关的参数:
1. 具体任务的参数(只能从各自任务的样本中实现良好的泛化)。
2. 所有任务共享的通用参数(从所有任务的汇集数据中获益)。
从深度学习的观点看,底层的先验知识如下:能解释数据变化(在与之相关联的不同任务中观察到)的因素中,某些因素是跨两个或更多任务共享的。
  该种策略的最典型案例是faster-rcnn以及mask-rcnn。
------待续
六、参数绑定和参数共享
  考虑以下情形:我们有两个模型执行相同的分类任务(具有相同类别),但输入分布稍有不同,我们有参数为 w(A)的模型 A 和参数为 w(B)的模型 B。这两种模型将输入映射到两个不同但相关的输出:ŷ (A)=f(w(A),x)ŷ (B)=f(w(B),x)
  我们可以想象,这些任务会足够相似(或许具有相似的输入和输出分布),因此我们认为模型参数应彼此靠近:iw(A)i应该与 w(B)i接近。我们可以通过正则化利用此信息。具体来说,我们可以使用以下形式的参数范数惩罚: Ω(w(A),w(B))=||w(A)w(B)||22。参数范数惩罚是正则化参数使其彼此接近的一种方式,而更流行的方法是使用约束:强迫某些参数相等。由于我们将各种模型或模型组件解释为共享唯一的一组参数,这种正则化方法通常被称为 参数共享(parameter sharing)。和正则化参数使其接近(通过范数惩罚)相比,参数共享的一个显著优点是,只有参数(唯一一个集合)的子集需要被存储在内存中。参数共享典型的例子就是卷积神经网络。
卷积神经网络
  目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的 卷积神经网络(CNN)中。自然图像有许多统计属性是对转换不变的。例如,猫的照片即使向右边移了一个像素,仍保持猫的照片。CNN通过在图像多个位置共享参数来考虑这个特性。相同的特征(具有相同权重的隐藏单元)在输入的不同位置上计算获得。这意味着无论猫出现在图像中的第 i 列或 i + 1 列,我们都可以使用相同的猫探测器找到猫。参数共享显著降低了CNN模型的参数数量,并显著提高了网络的大小而不需要相应地增加训练数据。它仍然是将领域知识有效地整合到网络架构的最佳范例之一。
七、Bagging 以及其他集成方法
  Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。这是机器学习中常规策略的一个例子,被称为 模型平均(model averaging)。采用这种策略的技术被称为集成方法。
------待续
八、Dropout
Dropout(Dropout)提供了正则化一大类模型的方法,计算方便但功能强大。在第一种近似下,Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。Bagging涉及训练多个模型,并在每个测试样本上评估多个模型。当每个模型都是一个很大的神经网络时,这似乎是不切实际的,因为训练和评估这样的网络需要花费很多运行时间和内存。通常我们只能集成五至十个神经网络,如Szegedy et al. (2014a)集成了六个神经网络赢得 ILSVRC,超过这个数量就会迅速变得难以处理。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。
具体而言,Dropout训练的集成包括所有从基础网络除去非输出单元后形成的子网络。最先进的神经网络基于一系列仿射变换和非线性变换,我们只需将一些单元的输出乘零就能有效地删除一个单元。这个过程需要对模型(如径向基函数网络,单元的状态和参考值之间存在一定区别)进行一些修改。为了简单起见,我们在这里提出乘零的简单Dropout算法,但是它被简单修改后,可以与从网络中移除单元的其他操作结合使用。
Dropout训练由所有子网络组成的集成,其中子网络通过从基本网络中删除非输出单元构建。

------待续
九、对抗训练
在许多情况下,神经网络在独立同分布的测试集上进行评估已经达到了人类表现。因此,我们自然要怀疑这些模型在这些任务上是否获得了真正的人类层次的理解。为了探索网络对底层任务的理解层次,我们可以探索这个模型错误分类的例子。Szegedy et al. (2014b) 发现,在精度达到人类水平的神经网络上通过优化过程故意构造数据点,其上的误差率接近100%,模型在这个输入点 x ′ 的输出与附近的数据点 x 非常不同。在许多情况下,x ′ 与 x 非常近似,人类观察者不会察觉原始样本和 对抗样(adversarial example)之间的差异,但是网络会作出非常不同的预测。
  在与数据集中的标签不相关联的点 x 处,模型本身为其分配一些标签 ŷ。模型的标记 ŷ 未必是真正的标签,但如果模型是高品质的,那么 ŷ 提供正确标签的可能性很大。我们可以搜索一个对抗样本 x ′ ,导致分类器输出一个标签 y ′ 且yŷ。不使用真正的标签,而是由训练好的模型提供标签产生的对抗样本被称为 虚拟对抗样本(virtual adversarial example)(Miyato et al., 2015)。我们可以训练分类器为 x 和 x ′ 分配相同的标签。这鼓励分类器学习一个沿着未标签数据所在流形上任意微小变化都很鲁棒的函数。驱动这种方法的假设是,不同的类通常位于分离的流形上,并且小扰动不会使数据点从一个类的流形跳到另一个类的流形上。

原创粉丝点击