第七章 深度学习中的正则化
机器学习中的一个核心问题是设计不仅在训练数据上表现好,并且能在新输入上泛化好的算法。
在机器学习中,许多策略显式地被设计来减少测试误差(可能会以增大训练误差为代价)。这些策略被统称为正则化。
++++++++++++++++【补充】+++++++++++++++++++++
前面使用多项式回归,如果多项式最高次项比较大,模型就容易出现过拟合。正则化是一种常见的防止过拟合的方法,一般原理是在代价函数后面加上一个对参数的约束项,这个约束项被叫做正则化项
(regularizer)。在线性回归模型中,通常有两种不同的正则化项:
- 加上所有参数(不包括θ0)的绝对值之和,即L1范数,此时叫做
Lasso回归
- 加上所有参数(不包括θ0)的平方和,即L2范数,此时叫做
岭回归
.
下面用代价函数的图像以及正则化项的图像来帮助解释正则化之所以起作用的原因。
0.1 代价函数的图像
为了可视化,选择直线方程进行优化。
假设一个直线方程:,该方程只有一个特征x,两个参数θ0和θ1
代价函数:,该代价函数为均方误差函数(MSE),其中m表示样本量。
为了保持简单,只取一个样本点(1,1)代入上面的代价函数方程中,可得J(θ)=(θ0+θ1−1)2。该式是一个二元一次方程,可以在3维空间中作图
上图(图1)是代入样本点(1,1)后的代价函数MSE的图像
由于多个样本点的代价函数是所有样本点代价函数之和,且不同的样本点只是相当于改变了代价函数中两个变量的参数(此时θ0和θ1是变量,样本点的取值是参数)。因此多样本的代价函数MSE的图像只会在图1上发生缩放和平移,而不会发生过大的形变。
对于坐标轴,表示如下:
- 使用J轴表示蓝色轴线,上方为正向
- 使用θ1表示红色轴线,左边为正向
- 使用θ0表示绿色轴线,指向屏幕外的方向为正向
此时的函数图像相当于一条抛物线沿着平面J=0上直线θ0=−θ1平移后形成的图像。
0.2 正则化项的图像
这里使用L1范数作为正则化项,加上正则化项之后MSE代价函数变成:
上式中λ是正则化项的参数,为了简化取λ=1。由于正则化项中始终不包含截距项θ0,此时的L1范数相当于参数θ1的绝对值,函数图像如下:
上图(图2)是L1正则化项的图像
此时的函数图像相当于一张对折后,半张开的纸。纸的折痕与平面J=0上θ0轴重叠。
0.3 代价函数与正则化项图像的叠加
直接将这两个图像放在一起的样子:
上图同时显示代价函数与正则化项的图像
将两个方程相加之后,即J(θ)=(θ0+θ1−1)2+|θ1|,做图可以得到下面的图像:
上图是加入正则化项之后代价函数的图像
此时的图像,就像是一个圆锥体被捏扁了之后,立在坐标原点上。观察添加正则化项前后的图像,我们会发现:
- 加上正则化项之后,此时损失函数就分成了两部分:第1项为原来的MSE函数,第2项为正则化项,最终的结果是这两部分的线性组合
- 在第1项的值非常小但在第2项的值非常大的区域,这些值会受到正则化项的巨大影响,从而使得这些区域的值变的与正则化项近似:例如原来的损失函数沿θ0=−θ1,J轴方向上的值始终为0,但是加入正则化项J=|θ1|后,该直线上原来为0的点,都变成了θ1的绝对值。这就像加权平均值一样,哪一项的权重越大,对最终结果产生的影响也越大
- 如果想象一种非常极端的情况:在参数的整个定义域上,第2项的取值都远远大于第一项的取值,那么最终的损失函数几乎100%都会由第2项决定,也就是整个代价函数的图像会非常类似于J=|θ1|(图2)而不是原来的MSE函数的图像(图1)。这时候就相当于λ的取值过大的情况,最终的全局最优解将会是坐标原点,这就是为什么在这种情况下最终得到的解全都为0.
++++++++++++++++++++++++++++++++++++++++++++
开发更有效的正则化策略已成为本领域的主要研究工作之一。
目前有许多正则化策略。
- 有些策略向机器学习模型添加限制参数值的额外约束。
- 有些策略向目标函数增加额外项来对参数值进行软约束。
这些额外的约束和惩罚可以改善模型在测试集上的表现。有时候,这些约束和惩罚被设计为编码特定
类型的先验知识;其他时候,这些约束和惩罚被设计为偏好简单模型,以便提高泛化能力。
在深度学习的背景下,大多数正则化策略都会对估计进行正则化。估计的正则化以偏差的增加换取方差的减少。一个有效的正则化是有利的“交易”,也就是能显著减少方差而不过度增加偏差。
控制模型的复杂度不是找到合适规模的模型(带有正确的参数个数)这样一个简单的事情。相反,我们可能会发现,或者说在实际的深度学习场景中我们几乎总是会发现,最好的拟合模型(从最小化泛化误差的意义上)是一个适当正则化的大型模型。
常见正则化方法
- 参数范数惩罚,参见
- 作为约束的范数惩罚
- 数据集增强
- 提前终止
- Dropout
1-参数范数惩罚
线性模型,如线性回归和逻辑回归可以使用简单、直接、有效的正则化策略。
许多正则化方法通过对目标函数 添加一个参数范数惩罚
,限制模型(如神经网络、线性回归或逻辑回归)的学习能力(拖住学习的节奏)。
我们将正则化后的目标函数记为:
其中是权衡范数惩罚项和标准目标函数 相对贡献的超参数。将设为0表示没有正则化。越大,对应正则化惩罚越大。
当我们的训练算法最小化正则化后的目标函数时,它会降低原始目标关于训练数据的误差并同时减小在某些衡量标准下参数θ(或参数子集)的规模。
在神经网络中,参数包括每一层仿射变换的权重和偏置,我们通常 只对权重做惩罚而不对偏置做正则惩罚。精确拟合偏置所需的数据通常比拟合权重少得多。另外,正则化偏置参数可能会导致明显的欠拟合。
我们使用向量w表示所有应受范数惩罚影响的权重,而向量θ表示所有参数(包括w和无须正则化的参数)。
在神经网络的情况下,有时希望对网络的每一层使用单独的惩罚,并分配不同的α系数。寻找合适的多个超参数的代价很大,因此为了减少搜索空间,我们会在所有层使用相同的权重衰减。
1-1.L2参数正则化
过最简单而又最常见的参数范数惩罚,即通常被称为权重衰减(weight decay )的L2参数范数惩罚。这个正则化策略通过向目标函数添加一个正则项,使权重更加接近原点。
L2也被称为岭回归
或Tikhonov正则
。
+++++++++++++++++++++++++【补充】++++++++++++++++++++++++
岭回归与多项式回归唯一的不同在于代价函数上的差别。岭回归的代价函数如下:
为了方便计算导数,通常也写成下面的形式:
上式中
- w是长度为n的向量,不包括截距项的系数θ0
- θ是长度为n+1的向量,包括截距项的系数θ0
- m为样本数
- n为特征数.
岭回归的代价函数仍然是一个凸函数
【局部极小值就是全局最小值。这也意味着我们求得的模型是全局最优的,不会陷入到局部最优值。】,因此可以利用梯度等于0的方式求得全局最优解(正规方程
):
上述正规方程与一般线性回归的正规方程相比,多了一项λI,其中I表示单位矩阵。假如XTX是一个奇异矩阵(不满秩),添加这一项后可以保证该项可逆。由于单位矩阵的形状是对角线上为1其他地方都为0,看起来像一条山岭,因此而得名。
除了上述正规方程之外,还可以使用梯度下降的方式求解。这里采用式子1−2来求导:
因为式子1−2中和式第二项不包含θ0,因此求梯度后,上式第二项中的w本来也不包含θ0。为了计算方便,添加θ0=0到w.
因此在梯度下降的过程中,参数的更新可以表示成下面的公式:
其中α为学习率,λ为正则化项的参数
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
L2正则化能让学习算法“感知”到具有较高方差的输入x,因此与输出目标的协方差较小(相对增加方差)的特征的权重将会收缩。
1-2.L1正则化
L2权重衰减是权重衰减最常见的形式,我们还可以使用其他的方法限制模型参数的规
模。一个选择是使用L1正则化。
形式地,对模型参数w的L1正则化被定义为即各个参数的绝对值之和。与L2权重衰减类似,我们也可以通过缩放惩罚项Ω的正超参数α来控制L1权重衰减的强度。
+++++++++++++++++++++++++【补充】++++++++++++++++++++++++
Lasso回归于岭回归非常相似,它们的差别在于使用了不同的正则化项。最终都实现了约束参数从而防止过拟合的效果。
但是Lasso之所以重要,还有另一个原因是:Lasso能够将一些作用比较小的特征的参数训练为0,从而获得稀疏解。也就是说用这种方法,在训练模型的过程中实现了降维(特征筛选)的目的。
Lasso回归的代价函数为:
上式中
- w是长度为n的向量,不包括截距项的系数θ0,
- θ是长度为n+1的向量,包括截距项的系数θ0
- m为样本数
- n为特征数。
||w||1表示参数w的L1范数,也是一种表示距离的函数。
加入w表示3维空间中的一个点(x,y,z),那么||w||1=|x|+|y|+|z|,即各个方向上的绝对值(长度)之和。
式子2−1的梯度为:
其中sign(θi)由θi的符号决定:
- θ_i>0,sign(θi)=1;
- θ_i=0,sign(θi)=0;
- θ_i<0,sign(θi)=−1.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
相比L2正则化,L1正则化会产生更稀疏(sparse)的解。此处稀疏性指的是最优值中的一些参数为0。
由L1正则化导出的稀疏性质已经被广泛地用于特征选择(feature selection)机制。特征选择从可用的特征子集选择出有意义的特征,化简机器学习问题。L1惩罚使部分子集的权重为零,表明相应的
特征可以被安全地忽略。(降维)
2-作为约束的范数惩罚
考虑经过参数范数正则化的代价函数:
我们可以构造一个广义Lagrange函数来最小化带约束的函数,即在原始目标函数上添加一系列惩罚项
。每个惩罚是一个被称为Karush–Kuhn–Tucker乘子的系数以及一个表示约束是否满足的函数之间的乘积。如果我们想约束小于某个常数,我们可以构建广义Lagrange函数
我们可以把参数范数惩罚看作对权重强加的约束。如果Ω是L2范数,那么权重就是被约束在一个L2球中。如果Ω是L1范数,那么权重就是被约束在一个L1范数限制的区域中。
有时候,我们希望使用显式的限制,而不是惩罚。
使用显示约束(相比于惩罚约束)的优点:
- 可以先用梯度下降法计算的下降步,再投影到区域的最近点。当知道什么合适时,不需要寻找对应的值。
- 惩罚可能导致目标函数非凸,而使得算法陷入局部极小。
- 重投影的显示约束对优化过程增加了一定的稳定性。例如当学习率较高时,很可能进入正反馈,即大的权重诱导大的梯度,使权重获得较大的更新。如果持续更新增加权重大小,则会使迅速增大而远离原点发生溢出。