正则化常用于缓解模型过拟合。过拟合发生的原因是模型的容量过大,而正则化可以对模型施加某些限制,从而降低模型的有效容量。
目前有多种正则化策略。
正则化策略代表了某种先验知识,即:倾向于选择简单的模型。
在深度学习中,大多数正则化策略都是基于对参数进行正则化。正则化以偏差的增加来换取方差的减少,而一个有效的正则化能显著降低方差,并且不会过度增加偏差。
在深度学习的实际应用中,不要因为害怕过拟合而采用一个小模型,推荐采用一个大模型并使用正则化。
一些正则化方法通过对目标函数 添加一个参数范数正则化项 来限制模型的容量capacity
。
正则化之后的目标函数为 : 。
为正则化项的系数,它衡量正则化项 和标准目标函数 的比重。
如果最小化 ,则会同时降低 和参数 的规模。
参数范数正则化可以缓解过拟合。
如果 设置的足够大,则参数 就越接近零。这意味着模型变得更简单,简单的模型不容易过拟合(但是可能欠拟合)。
对于神经网络,这意味着很多隐单元的权重接近0,于是这些隐单元在网络中不起任何作用。此时大的神经网络会变成一个小的网络。
在 从 零逐渐增加的过程中存在一个中间值,使得参数 的大小合适,即一个合适的模型。
选择不同的 的形式会产生不同的解,常见的形式有 正则化和 正则化。
正则化通常被称作岭回归或者Tikhonov
正则化。
假设 参数就是权重 ,没有偏置参数,则: 。
对应的梯度为: 。
使用梯度下降法来更新权重,则权重的更新公式为: 。即:
正则化对于梯度更新的影响是:每一步执行梯度更新之前,会对权重向量乘以一个常数因子来收缩权重向量。因此L2
正则化也被称作“权重衰减”。
令 ,它就是无正则化项时使得目标函数最小的权重向量。
根据极小值的条件,有 。于是在 的邻域内泰勒展开 :
其中: 为 在 处的海森矩阵; 为 处的一个邻域。
则 的梯度为: 。
令 ,它就是有正则化项时使得目标函数最小的权重向量。
假设 , 即 在 的一个邻域内,则有: 。
根据极小值条件: ,则有:
当 时, 。
因为 是实对称矩阵,对其进行特征值分解:。 其中特征值组成对角矩阵 ,对应的特征向量组成正交矩阵 :
于是有:
其中:
正则化对模型整体的影响:沿着 的特征向量所定义的轴来缩放 。
如下所示:实线椭圆表示 的等值线,虚线圆表示正则化项 的等值线。
在 点, 取得最小值;在 点(也就是图中的 点), 和正则化项达到平衡(使得二者之和最小)。
沿着 方向(横向)的 的曲率半径较大;曲率半径越大,曲率越小,特征值越小。
曲率刻画曲线的弯曲程度。弯曲越厉害,则表示曲率半径越小、曲率越大。
直线的曲率半径为 ,曲率为0。
曲率半径是曲率的倒数。对于椭圆 :
在上图中:
的海森矩阵第一维 ( )的特征值很小。
所以当从 点水平移动时, 不会增加太多。因为 对这个方向没有强烈的偏好。所以正则化项对于该轴具有强烈的影响:正则化项将 拉向零。
的海森矩阵第二维的特征值较大。
对于 的变化非常敏感,因此正则化项对于该轴影响较小。
因为沿着水平方向,一个较大的偏移只会对 产生一个较小的变化。因此正则化项倾向于从 点水平向零点移动。
正则化表明:
考虑线性回归的 正则化,采用平方误差作为代价函数:
这里忽略了线性回归的 的影响,这是为了便于说明解的性质。
的解析解为: 。
的解析解为: 。
样本的协方差矩阵为 (这里已经将样本进行了标准化:减去了均值), 为样本数量。因此 的对角线对应于每个输入特征的方差, 在对角线上增加了 。
因此, 正则化使得:
模型参数 的 的正则化形式为: 。即各个参数的绝对值之和。
正则化后的目标函数 : 。
对应的梯度为 。其中 函数取自变量的符号:
如果自变量大于零,则取值为 1;如果自变量小于零,则取值为 -1;如果自变量为零,则取值为零。
使用梯度下降法来更新权重,给出权重的更新公式为:
正则化对于梯度更新的影响是:不再是线性地缩放每个 ( 正则化项的效果),而是减去与 同号的常数因子。
令 ,它就是无正则化项时使得目标函数最小的权重向量。
和 正则化中的推导相同,在 的邻域内泰勒展开:
其中: 为 在 处的海森矩阵; 在 的邻域 内。
由于 正则化项在一般的海森矩阵情况下无法得到直接的代数表达式。
因此我们进一步假设海森矩阵是对角矩阵。即:
其中
如果用于线性回归问题的数据已经被预处理(如使用
PCA
),去除了输入特征之间的相关性,则这一假设成立。
于是:
考虑定义式,有:
对于 来讲 , 为常量。因此 的最小值由 决定。
考虑每一个维度 ,可以考虑最优化目标:
得到解析解: 。
考虑 的情况。此时有两种可能:
考虑 的情况。此时有两种可能:
如果使用 正则化,则解为 。
如下所示:实线椭圆表示 的等值线,实线菱形表示正则化项 的等值线。
在 点, 取得最小值;在 点(也就是图中的 点), 和正则化项达到平衡(使得二者之和最小)。
可以看到 的等值线更容易与 正则化项的等值线在坐标轴相交从而取得整体极小值。
正则化项更容易产生稀疏(sparse
)解,而 正则化并不会导致稀疏解。
许多正则化策略可以被解释为最大后验估计MAP
:
最大化后验估计等价于最小化代价函数。
正则化项:参数的先验分布为高斯分布:
忽略 项,因为它们与 无关。
正则化项:参数的先验分布为各向同性拉普拉斯分布 :
忽略 项,因为它们与 无关。
更复杂的正则化项可以通过先验分布为混合高斯分布得到。
可以通过添加一个显式约束来实现正则化: 。其中 为一个常数。
可以通过构建广义拉格朗日函数来求解该约束最优化问题。
定义广义拉格朗日函数: 。则上述约束最优化问题的解由下式给出:
假设 的解为 ,固定 则: 。
这和参数范数正则化是相同的,因此可以将参数范数正则化视为对参数强加的约束:
也可以通过重投影来求解该约束最优化问题。此时需要修改梯度下降算法:首先计算 的下降步,然后将 投影到满足 的最近点。
使用显式约束,而不是使用范数正则化有两个好处:
采用范数正则化后,当 较小时容易使得非凸优化的过程陷入局部极小值。
使用显式约束对优化过程增加了一定的稳定性。
如:当使用了较高的学习率时,很可能进入了正反馈:较大的权重产生了较大的梯度,较大的梯度诱发权重的更大的更新。
如果这些更新持续增加了权重的大小,则 就会迅速增大直到溢出。显式约束可以防止这种反馈环引起的权重的无限制持续增加。
Srebro and Shraibman
提供了一种正则化策略:约束神经网络的权重矩阵每列的范数,而不是限制整个权重矩阵的Frobenius
范数。分别限制每一列的范数可以防止某一个隐单元有非常大的权重。
在实践中,列范数的限制总是通过重投影的显式约束来实现。
提高模型泛化能力的一个最直接的方法是采用更多的数据来训练。但是通常在现实任务中,我们拥有的数据量有限。
解决该问题的一种方法是:创建一些虚拟的数据用于训练。
数据集增强仅仅用于模型的训练,而不是用于模型的预测。即:不能对测试集、验证集执行数据集增强。
当比较机器学习算法基准测试的结果时,必须考虑是否采用了数据集增强。
通常情况下,人工设计的数据集增强方案可以大大减少模型的泛化误差。当两个模型的泛化性能比较时,应该确保这两个模型使用同一套人工设计的数据集增强方案。
注意数据集增强和预处理的区别:数据集增强会产生更多的输入数据,而数据预处理产生的输入数据数量不变。
对于某些任务来说,创建虚拟数据非常困难。如:在密度估计任务中,除非预先知道了密度函数,否则无法产生新的虚拟数据。
对于分类问题来说,创建虚拟数据非常简单。对于一个分类器,它将高维的输入 映射到类别 。这意味着这种映射规则是不随坐标系的改变而改变的。因此可以通过线性变换,将训练集中的 变换为 从而产生了新的数据 。
对图像分类问题,数据集增强特别有效。数据集增强也可以应用于语音识别任务。
常见的图片数据集增强方法:
将训练图像沿着每个方向平移几个像素产生新的图像。
对训练图像进行旋转、翻转或者缩放。
对训练图像进行随机裁剪。
实际上,随机裁剪图像的操作也可以被认为是预处理步骤,而不是数据集增强。
对训练图像进行颜色抖动:调整饱和度、调整亮度、调整对比度、调整锐度。
在使用线性变换执行数据集增强时需要注意:
某些线性变换会改变正确的类别。
如:字符识别任务中, b/d
以及6/9
的图像, 不能执行水平翻转变换和旋转 180 度变换。
某些线性变换难以执行。
如:平面外的绕轴旋转(类似于翻页)难以通过简单的几何运算在输入图片上实现。
在神经网络的输入层注入噪声也可以视作数据增强的一种形式。如:在图像识别任务中,对训练图像注入高斯噪声。
事实上输入噪声注入也可以用于无监督学习,如:降噪自动编码器。
通常一个训练好的神经网络对噪声鲁棒性较差,改善其噪声鲁棒性的常用方法是:简单地将随机噪声施加到输入上,再进行训练。
Poole et al.(2014)
表明:当仔细调整噪声的幅度之后,该方法非常高效。
噪声被添加到每层隐单元的输入(而不仅仅是整个网络的输入)也是可行的,这被视为在多个抽象层上进行数据集增强。
本章后面的dropout
正则化策略可以被看作是通过对隐单元的输入乘上噪声。
输入噪声注入:将噪声作用于输入的数据集,这也是前文介绍的一种数据集增强方法。
对于某些模型,在输入上注入方差极小的噪音等价于对权重施加参数范数正则化(Bishop,1995a,b
)。
但是输入噪声注入远比简单地收缩参数强大,尤其是噪声被添加到隐单元的输入上时。
权重噪声注入:将噪音作用于权重。这项技术主要用于循环神经网络。
权重噪声注入可以解释为:将权重视作不确定的随机变量(拥有某个概率分布),向权重注入噪声是对该随机变量采样得到的一个随机值。
在某些假设下,权重噪声注入等价于传统的参数正则化形式。
假设有一个 层的标准的深度前馈神经网络,我们将噪声注入到该网络的权重。
假设 ,则有:
常数项包含了高斯分布的方差(与 无关)。
于是目标函数重写为: 。
假设每个权重添加一个随机扰动 , 它是一个均值为0、方差为 的标准正态分布。
假设添加扰动之后的模型为 。
假设有 ,即:模型对于增加扰动之后的期望等于原来的模型。
于是:
根据:
于是有:
将 在 处泰勒展开,有: 。则有:
于是有: 。
这说明:权重噪声注入的代价函数等于非权重噪声注入的代价函数加上一个参数正则化项。
该正则化项就是 ,其中 为噪声的方差。
噪声方差越大,则正则化项越大。
该形式的正则化将鼓励参数进入对小扰动不敏感的区域。即:找到的点不仅是极小点,还是由平坦区域包围的极小点。
平坦区域意味着梯度很小,意味着对小扰动不敏感。
如果是简单的线性回归,即 ,则权重噪声注入等价的参数正则化项退化为 。
该正则化项与模型的参数无关,因此对 关于 的梯度没有贡献,因此目标函数可以重写为: 。
有些数据集存在少量的 标签是错误的,此时通过最大似然准则来最大化 是不正确的。
输出噪声注入显式地对标签上的噪音进行建模:假设某个很小的常数 , 标签 是正确的概率为 、是错误的概率为 。
基于 个输出的softmax
单元的标签平滑正则化label smoothing regularize
:将真实的标签从 替换为 。
原始的标签: 个为 0
, 一个为1
。注入噪声之后的标签: 个为 ,一个为 。
当训练一个容量较大的模型时会经常发现:训练误差逐渐降低,但是验证误差先下降后上升。
当验证误差没有进一步改善时,算法就提前终止。这种策略被称作早停early stopping
。
早停是深度学习中最常用的正则化形式,因为它简单、有效。
当训练终止时,返回的不是最新的模型参数,而是验证误差最小的模型参数,因此需要频繁存储模型参数。
早停算法:
输入:
输出:
算法步骤:
初始化:
循环,循环条件为: :
学习模型 步(每隔 步验证一次)
更新
记录最新的验证集误差
如果 ,则: 。
如果 ,则: 。
若当前验证集误差是最小的,则 清零。这意味着必须连续 次 ,才说明算法到达终止条件。
可以认为早停是一个非常高效的超参数选择算法:训练步数是一个超参数,该超参数在验证误差上具有 U
形曲线。
capacity
。早停策略的代价有两个:
需要在训练期间定期评估验证集。
需要保持最佳的参数的副本。
这种代价一般可以忽略不计。
早停是正则化的一种非常不起眼的形式,其优点有:
以泛化误差的偏差方差分解角度来看,早停试图同时解决偏差和方差,其结果很可能导致得到的模型并不是一个最优的模型。
如下图中所示的验证误差曲线。因为提前停止了训练,所以使得代价函数的值可能不够小,即:偏差可能还可以继续降低。方差(即:验证误差与训练误差之间的gap
) 虽然处于上升趋势,但是它们叠加的结果可能导致验证误差呈现波动走势。
早停需要验证集,这意味着某些样本不能用于模型的训练过程,这会造成数据的浪费。
为了更好地利用验证集的样本,可以在早停之后进行额外的训练。在第二轮额外的训练中,所有的训练数据都被包括在内(包括验证集)。
有两个基本的策略可以用于第二轮训练过程 :
保留迭代步:再次初始化模型,然后使用所有数据再次训练。此时使用第一轮早停确定的最佳步数作为第二轮的迭代步数。
该策略重新训练模型,成本较高,但是效果较好。
保留参数:保持从第一轮训练中获得的参数,然后使用全部的数据继续训练。此时观察原始验证集的损失函数,直到它低于第一轮停止时的原始训练集的损失函数值。
根据早停策略,第一轮结束时原始验证集的损失函数值是较大的
该策略避免了重新训练模型的高成本,但是表现一般。
这是因为一旦将 合并到训练集,则对它们评估的结果就是训练误差(而不再是验证误差)。新的训练误差小于原来的验证误差,并不能说明模型的泛化能力得到了提升。
保留迭代步二次训练算法:
输入:
步骤:
保留参数二次训练算法:
输入:
步骤:
将 和 分割为 和
随机选择参数的初始化值 ,将 作为训练集, 将 作为验证集,运行早停算法,返回算法停止时的目标函数的值
迭代:
早停将优化过程的参数空间限制在初始参数值 的一个小的邻域内。
假设参数 。令 ,它就是无正则化项时使得目标函数最小的权重向量。
和 正则化中的推导相同,有: 。
为 在 处的海森矩阵, 其中 在 的一个邻域内。
根据梯度下降法,参数的迭代过程为:
注意:这里并没有加入任何正则化项,而是使用
将 进行特征分解: ,其中 为对角矩阵, 为特征向量的一组标准正交基。则有:
令参数向量的初始值为原点: ,并且选择 使得 ( 为 的特征值)。则经过 次参数更新之后: 。
根据 正则化项中的推导结果,有:
通过直接写出逆矩阵的形式可以证明等式
如果超参数 满足: ,则 正则化等价于早停。
为了求得三个超参数满足的条件,求解:
则有: 。
两边取对数,然后使用 的级数展开有(假设 ,且 ): 。
由于 是 的最小点,因此海森矩阵 是半正定的,因此其特征值
则有: 。即: 的倒数与 正则化系数的作用类似。
在给定 的条件下:
假设用学习率 进行了 个优化步骤(对应于 个训练迭代), 可以视作模型的有效容量 effective capacity
的度量。
假设梯度有界,则限制迭代的次数和学习率,会限制 从 能够到达的范围。 的行为就像是 正则化项的系数的倒数。
早停比 正则化更有优势:
早停能够监控验证误差,从而自动在某个较好的参数解的位置终止。
训练一次就相当于得到了多个超参数 的结果。
采用 正则化需要多次训练,从而选择合适的超参数 的值。
这种方式的计算成本太高。
通常对参数添加约束时,是固定于相对的某个点。如 正则化:将参数对于偏离零点来进行惩罚。
如果需要表达两个模型之间参数的相对关系时,则使用参数的相对约束。
假设模型 A
的参数为 ,模型 B
的参数为 。如果两个模型非常相似,则给定下列形式的惩罚:
这里使用 惩罚,也可以使用其他形式的正则化形式。
这种方法由Lasserre et al.(2006)
提出,它使得一个有监督的分类模型的参数接近于另一个无监督的数据分布模型的参数。
还有一种方案:强迫 的某个子集相等,这称作参数共享parameter sharing
。
如:要求 ,即参数子集为: ,其剩余参数都与该子集相等。这就是卷积神经网络中使用的方案。
参数共享的优点:能显著降低参数的数量、减少模型占用的内存。
dropout
:在前向传播过程中,对网络中的每个隐层,每个隐单元都以一定的概率 被删除,最后得到一个规模更小的网络。在反向传播过程中,仅仅针对该小网络进行权重更新。
所谓的删除,即指定该该隐单元的输出都为 0。
一旦隐单元的权重为0,则该隐单元对后续神经元的影响均为 0 。
输入层和输出层的神经元不会被删除,因为这两个层的神经元的数量是固定的。
理论上可以对输入层应用dropout
,使得可以有机会删除一个或者多个输入特征。但实际工程中,通常不会这么做。
隐单元删除发生在一个训练样本的训练期间。
batch
之间的同一个训练样本,其删除的隐单元的集合也是不同的。在不同的梯度更新周期,会从完整的网络中随机删除不同的神经元,因此裁剪得到的小网络是不同的。
但是在这个过程中,隐单元被删除的概率是相同的。
可以指定某一个隐层或者某几个隐层执行dropout
,而没有必要针对所有的隐层执行dropout
。
可以对网络的每个隐单元指定不同的删除概率,但实际工程中,通常不会这么做。
定义一个掩码向量 ,它给出了哪些隐单元被保留哪些隐单元被删除:掩码为 0
的位置对应的隐单元被删除,掩码为1
的位置对应的隐单元被保留。
定义 为参数 和掩码 共同定义的模型代价,dropout
的目标是最小化 。
dropout
可以视作集成了非常多的神经网络的bagging
集成模型,这些网络包含了所有从基础网络中删除隐单元形成的子网络。
bagging
涉及训练多个模型,并且在每个测试样本上评估多个模型。当每个模型都是一个大型神经网络时,这种bagging
计算量非常庞大,实际不可行。
dropout
提供了一种方便的bagging
近似,它能够训练和评估指数级别的神经网络的集成。
dropout
训练与bagging
训练不同:
bagging
中,假设所有的子模型都是独立的。
dropout
中,所有的子模型是共享参数的,每个子模型继承了基础神经网络的不同子集。
参数共享使得在有限的内存下训练指数数量的子模型变得可能。
bagging
中,每个子模型在其相应的训练集上训练到收敛。
dropout
中,大部分子模型都没有显式的被训练(因为指数量级的神经网络不可能被训练完成)。
我们只是对子模型的某些部分训练单个step
,同时参数共享使得子模型的剩余部分能够有较好的参数值。
除此之外,二者相同。比如每个子模型使用的训练集是原始训练集的一个有放回重复采样而来。
dropout
仅仅用于神经网络的训练阶段,在网络的测试阶段并不会删除神经元,而是使用所有的神经元。因为在测试期间,不希望输出是随机的。
如果在测试阶段使用dropout
,则理论上需要运行多次dropout
测试过程,然后对输出结果取加权平均(或者几何平均)。这种做法的结果与不采用dropout
的测试结果相同,反而计算效率更低。
在dropout
情况下,每个子模型的输出为概率分布 ,不同的掩码 就定义了不同的子模型。
集成模型的输出由所有子模型输出的加权平均给出:
其中 是训练时 的概率分布。之所以不采用 这种代数平均(k
为子模型数量),是因为 掩码生成的概率不一定是均匀的。
上式包含了指数量级的项,不可能计算出来。但是可以通过采样来近似推断,即对多个掩码对应的输出进行平均。通常 10-20 个掩码就足以获取不错的表现。
除了子模型输出的加权平均之外,还可以采用几何平均:
其中 为所有的可以被丢弃的单元的数量,其丢弃/保留组合有 种。
这里采用的是均匀分布的 (也可以采用非均匀分布),设丢弃和保留的概率都是 。
多个概率分布的几何平均不一定是个概率分布,因此为了保证结果是一个概率分布,概率归一化为:
其中要求:没有任何一个子模型给出所有事件的概率为都为 0 (否则会导致 都为 0 )。
实际应用中,并不需要直接求解 。通常通过评估某个模型的 来近似 。该模型这样产生:该模型与dropout
的基础模型具有相同的单元;该模型单元 输出的权重需要乘以保留该单元 的概率。
这种策略叫做权重比例推断法则。目前这种做法在深度非线性网络上工作良好,但是没有任何理论上的证明。
考虑softmax
单元。假设 表示 个输入变量,则有: 。其中 表示分类的类别, 表示输出的第 个分量。
假设给定掩码 。其中 ,为二值随机变量:若它取值为 0
则表示输入 被遗忘;若它取值为 1
则表示输入 被保留。且假设 。
则: 。其中 表示逐元素的相乘。
softmax
单元的输出为: 。其中 :
化简上式:
其中 表示矩阵 的第 列; 表示向量点乘。
忽略对 不变的项,有:
考虑 ,它就是 。则有:
因此,softmax
单元采用dropout
的结果就是权重为 的softmax
单元。
权重比例推断法在softmax
以外的情况也是精确的,但是它对于非线性的深度模型仅仅是一个近似。
虽然尚未有理论上的分析,但是在实践中往往效果非常好。
dropout
不限制使用的模型或者训练过程,另外其计算非常方便。
训练过程中使用dropout
时,产生 个随机二进制数与每个权重相乘。
dropout
对于每个样本每次更新只需要 的计算复杂度。根据需要也可能需要 的存储空间来保存这些二进制数(直到反向传播阶段)。
在预测过程中,计算代价与不使用dropout
是一样的。
dropout
的缺点是:代价函数 不再被明确定义,因为每次迭代时都会随机移除一部分隐单元。
虽然dropout
在模型训练的每一步上所做的工作是微不足道的(仅仅是随机地保留某些单元),但是在完整的训练结果上,该策略的效果非常显著。
dropout
不仅是一种高效的近似bagging
的方法,它还是共享隐单元的集成模型,它通过参数共享来实现bagging
。
这种参数共享策略不一定必须是包括
和排除
(也就是二进制的 0 和1)。原则上任何一种随机的修改都可以接受。
随机向量 可以具有任何形式,而不一定要求它是掩码向量(取值为 0/1)。
Srivastava et al.(2014)
表明:将权重乘以 要比基于二值掩码dropout
表现的更好。
由于此时 ,则网络自动实现了集成方法的近似推断,因此不需要应用权重比例推断。
网络中的不同隐层的删除概率可以是变化的:
0
。对一个隐层设定一个删除概率
p
,意思是对该层中所有隐单元设定同一个删除概率p
使用dropout
有两点注意:
在训练期间如果对某个单元的输入神经元执行了dropout
,则推断期间该单元的输出要进行调整。
假设该单元的输出为 ,则需要调整为 ,从而保证不影响该单元的输出值。
在测试期间,不必使用dropout
。
由于针对每个训练样本,训练的都是一个规模极小的网络,因此dropout
也是一种正则化策略,它减少了模型的有效容量effective capacity
。
为了抵抗模型有效容量的降低,必须增大模型的规模,此时需要更多的训练迭代次数。
dropout
正则化带来的泛化误差减少得很小。此时使用dropout
带来的更大模型的计算代价可能超过了正则化带来的好处。dropout
不会很有效。除非模型发生过拟合,否则不要轻易使用dropout
。
因为计算机视觉领域通常缺少足够的数据,所以非常容易发生过拟合。因此dropout
在计算机视觉领域大量应用。
Srivastava et al.(2014)
显示:dropout
比其他标准的、计算开销较小的正则化项(如 正则化)更加有效。
dropout
也可以与其他形式的正则化合并,进一步提升模型的泛化能力。
dropout
训练时随机丢弃隐单元:
这种随机性并不是产生正则化效果的必要条件,它仅是近似所有可能的子模型总和的一种方法。
这种随机性也不是产生正则化效果的充分条件。
Warde-Farley et al.(2014)
使用 dropout boosting
策略(类似于boosting
)设计了一个对照试验,结果表明dropout boosting
几乎没有正则化的效果。
dropout
正则化效果主要来源于施加到隐单元的掩码噪声。这可以看作是对输入信息自适应破坏的一种形式。
dropout
是对输入内容的某个结构进行了修改,而不是传统的噪声注入。dropout
的噪声是乘性的,而传统的噪声注入是加性的。神经网络在预测过程中,可以故意人工构造这样的一种样本:对输入点 ,我们搜寻它的附近的一个人眼看起来没有区别、网络预测结果差异很大的样本 。
adversarial example
。adversarial training
。其中:对抗样本的真实标签要求和 相同,但是其预测结果要求和 不同。Goodfellow et al(2014b)
表明:存在这些对抗样本的主要原因是高度线性。
神经网络主要基于线性块构建的,因此模型是高度线性的。对于一个线性函数,如果它是高维的,那么其函数值可能对扰动非常敏感。
对抗训练通过鼓励网络在训练数据附近的局部区域保持稳定来限制函数对输入扰动的高度敏感性。它可以视作一种先验知识:模型是局部稳定的。
对抗训练也可以用于实现半监督学习:
这种策略鼓励模型沿着未监督样本所在流形上的任意微小变化都是稳定的。其基本假设是:不同的分类通常位于分离的流形上,并且小的扰动不能从一类的流形跳到另一个流形上。
切面距离算法是最近邻算法的一种,其中的度量使用的不是通用的欧几里得距离,而是流形距离。
假设分类样本有这样的性质:在同一个流形上的样本分类相同,不同流形上的样本分类不同。则分类器会有这样的特点:对于样本的局部变化不敏感。即:样本在流形上的移动时,分类器的输出不变。
假设样本 的流形为 ,样本 的流形为 。则这两个点的距离定义为:流形 到流形 的距离。
问题是计算两个流形的距离代价很高,因为它要求解两个集合的最近点。一个替代方案:用 点的切平面来近似 , 然后测量两个切平面的距离(或者一个切平面到一个点的距离)。
受切面距离算法的启发,正切传播算法训练神经网络分类器的策略是:使得神经网络的输出 沿着同样类别样本所在的流形上移动时,保持局部不变性。
正切传播算法的正则化惩罚项 要求 在 的 方向的导数是较小的:
这里并没有严格要求其为零,而是比较小即可。
是这样算出的:
正切传播有两个主要缺点:
模型的正则化只能抵抗无穷小的扰动。因为若扰动较大,则可能切平面变化较大。
作为对比:显式的数据集增强能够抵抗较大扰动。
梯度沿着切向方向分量很小的假设对于采用了relu
单元的模型是困难的。因为 relu
单元的导数与 无关,是个常数。
sigmoid
或者tanh
单元就没有这个问题,因为可以通过采用大权重在饱和区来收缩导数。
正切传播算法和人工数据集增强(如:沿着 轴的平移)都要求模型对于输入变化的某些特定的方向是不变的。
流形正切分类器:使用自编码器通过无监督学习来学习流形的结构,然后使用正切传播算法来正则化神经网络分类器。
稀疏表达:鼓励 的表达 为稀疏的,即:目标函数为: 。
它与普通正则化区别是:它对 的表达 进行限制,而不是参数 进行限制。
通常采用 正则化可以获取稀疏表达: 。
也有其他方法可以获取稀疏表达,如:正交匹配追踪orthogonal matching pursuit
:
其中 是 中非零项的个数。
当 被限定为正交矩阵时,该问题可以被高效解决。
在深度学习中,半监督学习指的是学习一个表达representation
: 。学习的目标是:使得同类中的样例有类似的表达。
通常可以构建两个模型:生成模型 (或者 ) 与判别模型 ,其中生成模型与判别模型共享参数。
生成模型 (或者 ) 表达了对于监督学习问题解的先验知识。
即: 的结构通过共享参数的方式连接到 。
不需要将无监督学习和监督学习部分进行分离,二者位于同一个网络结构中。
最终需要对监督准则 与无监督准则 (或者 ) 进行权衡。
这样可以得到比单纯的生成模型或者单纯的判别模型更好的模型,从而提高了泛化能力。
多任务学习是指几个任务共享相同的样本集。这可以视作一种参数上的软约束。
下图给出了多任务学习中的一个非常普遍的形式:有两个监督任务和一个无监督任务。所有的任务都共享相同的输入 和第一级中间层 ,具体的任务使用了具体的表示层。
因为共享参数,其统计强度大大提高因此能改进泛化能力。但是前提条件是:确实有某些信息在不同任务之间共享了。这要求不同任务之间存在某些统计关系。
多任务学习刻画了一个先验知识:这些不同的任务中,能解释数据变化的因子是跨任务共享的。
机器学习的许多线性问题(包括线性回归和PCA
),都依赖于求 的逆矩阵。
大多数形式的正则化能够用于欠定问题。
如:Moore-Penrose
求解欠定线性方程, 伪逆的一个定义: 。
使用正则化来解决欠定问题的思想超出了机器学习的范畴。