正则化常用于缓解模型过拟合。过拟合发生的原因是模型的容量过大,而正则化可以对模型施加某些限制,从而降低模型的有效容量。
目前有多种正则化策略。
正则化策略代表了某种先验知识,即:倾向于选择简单的模型。
在深度学习中,大多数正则化策略都是基于对参数进行正则化。正则化以偏差的增加来换取方差的减少,而一个有效的正则化能显著降低方差,并且不会过度增加偏差。
在深度学习的实际应用中,不要因为害怕过拟合而采用一个小模型,推荐采用一个大模型并使用正则化。
一些正则化方法通过对目标函数 添加一个参数范数正则化项 来限制模型的容量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、方差为 的标准正态分布。
假设添加扰动之后的模型为 。
假设有 ,即:模型对于增加扰动之后的期望等于原来的模型。
于是: