深度学习中的正则化(一)、参数范数惩罚

参考 深度学习中的正则化 - 云+社区 - 腾讯云

一、正则化

没有免费午餐定理暗示我们必须在特定任务上设计性能良好的机器学习算法。我们建立一组学习算法的偏好来达到这个要求。当这些偏好和我们希望算法解决的学习问题吻合时,性能会更好。至此我们具体讨论修改学习算法的方法,只有通过增加或减少学习算法可选假设空间的函数来增加或减少模型的容量。所列举的一个具体示例是线性回归增加或减少多项式的次数。到目前为止讨论的观点都是过度简化的。

算法的效果不仅很大程度上受影响于假设空间的函数数量,也取决于这些函数的具体形式。我们已经讨论的算法(线性回归)具有包含其输入的线性函数集的假设空间。对于输入和输出确实接近线性相关的问题,这些线性函数是很有用的。对于完全非线性的问题它们不太有效。例如,我们用线性回归,从x预测sin(x),效果不会好。因此我们可以通过两种方式控制算法的性能,一是允许使用的函数种类,二是这些函数的数量。在假设空间中,相比于某一个学习算法,我们可能更偏好另一个学习算法。这意味着两个函数都是符合条件的,但是我们更偏好其中一个。只有非偏好函数比偏好函数在训练数据集上效果明显好很多时,我们才会考虑非偏好函数。

例如,可以加入权重衰减(weight decay)来修改线性回归的训练标准。带权重衰减的线性回归最小化训练集上的均方误差和正则项的和J(w)可以看作拟合训练数据和偏好小权重范数之间的权衡。这会使得解决方案的斜率最小,或是将权重放在较少的特征上。我们可以训练具有不同\large \lambda值的高次多项式回归模型。

更一般地,正则化一个学习函数\large f(x;\theta)的模型,我们可以给代价函数添加被称为正则化项(regularizer)的惩罚。在权重衰减的例子中,正则化项是\large \Omega(w)=w^Tw。表示对函数的偏好是比增减假设空间的成员函数更一般地控制模型容量的方法。我们可以将去掉假设空间中的某个函数看作对不赞成这个函数的无限偏好。在权重衰减的示例中,通过在最小化的空间中额外增加一项,我们明确地表示了偏好权重较小的线性函数。有很多其他方法隐式或显式地表示对不同解的偏好。总而言之,这些不同的方法都被称为正则化。正则化时指修改学习算法,使其降低泛化误差而非训练误差。正则化时机器学习领域的中心问题之一,只有优化能够与其重要性相提并论。没有免费午餐定理已经清楚地阐释了没有最优的学习算法,特别是没有最优的正则化形式。反之,我们必须挑选一个非常适合于我们所要解决的任务的正则形式。深度学习中普遍的理念是大量任务(例如所有人能做的只能任务)也许都可以使用非常通用的正则化形式来有效解决。

机器学习中的一个核心问题是设计不仅在训练数据上表现好,而且能在新输入上泛化的算法。在机器学习中,许多策略被显示地设计来减少测试误差(可能会增加训练误差为代价),这些策略被统称为正则化。在实践中,过于复杂的模型族不一定包括目标函数或真实数据生成的过程,甚至也不包括近似过程。我们几乎从未知晓真实数据的生成过程,所以我们永远不知道被估计的模型族是否包含生成过程。然而,深度学习算法的大多数应用都是针对这样的情况,其中真实数据的生成过程几乎肯定在模型族之外。深度学习算法通常应用于记为复杂的领域,如图像、音频序列和文本,本质上这些领域的真实生成过程涉及模拟整个宇宙。从某种程度上来说,我们总是持方枘(数据生成过程)而欲内圆凿(模型族)。

这意味着控制模型的复杂度不是找到合适规模的模型(带有正则的参数个数)这样一个简单的事情。相反,我们可能会发现,或者说在实际的深度学习场景中我们几乎总是会发现,最好的拟合模型(从最小泛化误差的意义上)是一个适当正则化的大型模型。

二、深度学习中的正则化

1、参数范数惩罚

正则化在深度学习的出现前就已经被使用了数十年、线性模型,如线性回归和逻辑回归,可以使用简单、直接、有效的正则化策略。许多正则化方法通过对目标函数\large J添加一个参数范数惩罚\large \Omega (\theta),限制模型(如神经网络、线性回归或逻辑回归)的学习能力。我们将正则化后的目标函数记为\tiny \hat{J}

                                                       \large \hat{J}(\theta;X,y)=J(\theta;X,y)+\alpha\Omega(\theta)

其中\large \alpha\in[0,\infty)是权衡惩罚项\large \Omega和标准目标函数\large J(X;\theta)相对贡献的超参数。将\large \alpha设为0表示没有正则化。\large \alpha越大,对应正则化惩罚越大。当我们的训练算法最小化正则化后的目标函数\large \hat{J}时,它会降低原始目标函数\large \hat{J}关于训练数据的误差并同时减小在某些衡量标准下参数\large \theta(或参数子集)的规模。选择不同参数范数\large \Omega会偏好不同的解。在探究不同范数的正则化之前,需要说明一下,在神经网络中,参数包括每一层放射变换的权重和偏置,我们通常只对权重做惩罚而不对偏置做正则惩罚。精确拟合偏置所需的数据通常比拟合权重少得多,每个权重会指定两个变量如何互相作用。我们需要在各种条件下观察这两个变量才能良好地拟合权重。而每个偏置仅控制一个单变量。这意味着,我们不对其进行正则化也不会导致太大的方差。另外,正则化偏置参数可能会导致明显的欠拟合。因此,我们使用向量w表示所有应受范数惩罚影响的权重,而向量\large \theta表示所有参数(包括w和无须正则化的参数)。在神经网络的情况下,有时希望对网络的每一层使用单独的惩罚,并分配不同的\large \alpha系数。寻找合适的多个超参数的代价很大,因此为了减少搜索空间,我们会在所有层使用相同的权重衰减。

1、\large L^2参数正则化

这个正则化策略通过向目标函数添加一个正则项\large \Omega(\theta)=\frac{1}{2}||w||^2_2,使权重更加接近原点。\large L^2也被称为岭回归正则化。我们可以通过研究正则化后目标函数的梯度,洞察一些权重衰减的正则化表现。为了简单期间,我们假定其中没有偏置参数,因此\large \theta就是\large w。这样一个模型具有以下总的目标函数:

                                                    \large \hat{J}(w;X,y)=\frac{\alpha}{2}w^Tw+J(w;X,y)

与之对应的梯度为

                                                  \large \bigtriangledown _w\hat{J}(w;X,y)=\alpha w+\bigtriangledown _wJ(w;X,y)

使用单步梯度下降更新权重,即执行以下更新:

                                                  \large w\leftarrow w-\varepsilon (\alpha w + \bigtriangledown _w J(w;X,y))

换种写法就是

                                                 \large w\leftarrow (1-\varepsilon \alpha)w-\varepsilon\bigtriangledown _wJ(w;X,y)

我们可以看到,加入权重衰减后会引起学习规则的修改,即在每部执行通常的梯度更新之前先收缩权重向量(将权重向量乘以一个常数因子)。这是一个单个步骤发生的变化。但是在训练的整个过程会发生什么呢?

我么进一步简化分析,令\large w^*为为正则化的目标函数取得最小训练误差时的权重向量,即\large w^*=argmin_wJ(w),并在\large w^*的邻域对目标函数做二次近似。如果目标函数确实是二次的(如以均方误差拟合线性回归模型的情况),则该近似是完美的。近似的\large \hat{J}(\theta)如下

                                             \large \hat{J}(\theta)=J(w^*)+\frac{1}{2}(w-w^*)^TH(w-w^*)

其中\small H\small J\small w^*处计算的\small Hessian矩阵(关于\large w)。因为\large w^*被定义为最优,即梯度消失为0,所以该二次项近似中没有一阶项。同样地,因为\large w^*\large J的一个最优点,我们可以得出H是半正定的结论。

\hat{J}取得最小值时,其梯度

                                            \large \bigtriangledown _w\hat{J}{w}=H(w-w^*)

为0。

为了研究权重衰减带来的影响,我们在上式中添加权重衰减的梯度。现在我们探讨最小正则化后的\large \hat{J}。我们使用变量\large \hat{w}表示此时的最优点:

                                            \large \alpha\hat{w}+H(\hat{w}-w^*)=0

                                            \large (H+\alpha I)\hat{w}=Hw^*

                                            \large \hat{w}=(H+\alpha I)^{-1}Hw^*

\large \alpha趋向于0时,正则化的解\large \hat{w}会趋向\large w^*。那么当\large \alpha增加时会发生什么呢?因为H是实对称的,所以我们可以将其分级为一个对角矩阵\small \Lambda和一组特征向量的表征正交基\large Q,并且有\small H=Q\Lambda Q^T,将其应用到上式并分解可得,

                                        \hat{w}=[Q\Lambda Q^T + \alpha I]^{-1}Q \Lambda Q^T w^*=[Q(\Lambda+\alpha I)^{-1}]Q\Lambda Q^T w^*=Q(\Lambda+\alpha I)^{-1}\Lambda Q^T w^*

我们可以看到权重衰减的效果是沿着由\large H的特征向量所定义的轴缩放\large w^*。具体来说,我么会根据\large \lambda_i/(\lambda_i+\alpha)因子缩放与\large H\tiny i个特征向量对齐的\large w^*的分量。沿着\large H特征值较大的方向(如\large \lambda_i> > \alpha)正则化的影响较小,而\large \lambda_i<<\alpha的分量将会收缩到几乎为零。只有在显著减小目标函数方向上的参数会保留相对完好。在无助于目标函数减小的方向(对应Hessian矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分量会在训练过程中因正则话而衰减掉。

目前为止,我们讨论了权重衰减对优化一个抽象通用的二次代价函数的影响。这些影响具体是怎么和机器学习关联的呢?我们可以研究线性回归。它的真实代价函数时二次的,因此我们可以使用相同的方法分析。再次应用分析,我们会在这种情况下得到相同的结果,但这次我们使用训练数据的术语表达。线性回归的代价是平方误差之和:

                                    \large (Xw-y)^T(Xw-y)

我们添加L^2正则项后,目标函数变为

                                     \large (Xw-y)^T(Xw-y)+\frac{1}{2}\alpha w^Tw

这将正则方程的解从

                                    \large w=(X^TX)^{-1}X^Ty

变为

                                    \large w=(X^TX+\alpha I)^{-1}X^Ty

2、\large L^1正则化

 \large L^2权重衰减是权重衰减最常见的形式,我们还可以使用其他的方法限制模型参数的规模。一个选择是使用\large L_1正则化。形式地,对模型参数\large w\large L_1正则化被定义为:

                                    \large \Omega(\theta)=||w||_1=\sum_i |w_i|

即各个参数的绝对值之和。接着我们将讨论\large L_1正则化对简单线性回归模型的影响,与分析\large L^2正则化时一样不考虑偏置参数。我们尤其感兴趣的是找出\large L^1\large L^2正则化之间的差异。与\large L^2权重衰减类似,我们也可以通过缩放惩罚项\large \Omega的正超参数\large \alpha来控制\large L^1权重衰减的强度。因此,正则化的目标函数

                                   \large \hat{J}(w;X,y)=\alpha ||w||_1 + J(w;X,y)

对应的梯度(实际上是次梯度):

                                  \large \bigtriangledown _w\hat{J}(w;X,y)=\alpha sign(w)+\bigtriangledown _wJ(w;X,y)

其中sign(w)只是简单地取w各个元素的正负号。

观察上式,我么立刻发现\large L^1的正则化效果与\large L^2大不一样。具体来说,我们可以看到正则化对梯度的影响不再是线性地缩放每个\large w_i:而是添加了一项sign(w_i)同号的常数。使用这种形式的梯度之后,我们不一定能得到\large J(X,y;w)二次近似直接算术解(\large L^2正则化时可以)。简单线性模型具有二次代价函数,我们可以通过泰勒级数表示。或者我们可以假设。这是逼近更复杂模型的代价函数的截断泰勒级数,在这个设定下,梯度有下式给出

                               \large \bigtriangledown _w \hat{J}(w)=H(w-w^*)

同样,\large H\large J\large w^*处的Hessian矩阵。

由于\large L^1惩罚项在完全一般化的Hessian的情况下,无法得到直接清晰的代数表达式,因此我们将进一步简化假设Hessian是对角的,即\large H=diag([H_{1,1},...,H_{n,n}]),其中每个\large H_{i,i}>0。如果线性回归问题中的数据被预处理,除去了输入特征之间的相关性,那么这一假设成立。我们可以将\large L^1正则化目标函数的二次近似分解成关于参数的求和:

                             \large \hat{J}(w;X,y)=J(w^*;X,y)+\sum_i\left [ \frac{1}{2}H_{i,i}(w_i-w^*_i)^2 + \alpha\left | w_i \right | \right ]

如下列形式的解析解(对每一维\large i)可以最小化这个近似代价函数:

                           \large w_i=sign(w_i^*)max\left \{ |w^*_i|-\frac{1}{H_{i,i}},0 \right \}

 如下列形式的解析解(对每一维\tiny i)可以最小化这个近似代价函数:

                            \large w_i=sign(w_i^*)max\left \{ |w_i^*|-\frac{\alpha}{H_{i,1}},0 \right \}

最每个\large i,考虑\large w^*_i>0的情形,会有两种可能:

(1)\small w_i^*\leqslant \frac{\alpha}{H_{i,i}}得到情况。正则化后目标中的\large w_i最优值是\large w_i=0。这是因为在方向\large i\large J(w;X,y)\large \hat{J}(w;X,y)的贡献被抵消,\large L^1正则化项将\large w_i推至0。

(2)w^*_i> \frac{\alpha}{H_{i,i}}的情况。这这种情况下,正则化不会将\large w_i的最优值推至0,而仅仅在那个方向上移动\frac{\alpha}{H_{i,i}}的距离。

相比L^2正则化,L^1正则化会产生更稀疏的解。此处稀疏性指的是最优值中的一些参数为0。和\large L^2正则化相比,\large L^1正则化的稀疏性具有本质的不同。如果我们使用Hessian矩阵\large H为对角正定矩阵的假设(与\tiny L^1正则化分析时一样),重新考虑这个等式,会发现\large \hat{w}_i=\frac{H_{i,i}}{H_{i,i}+\alpha}w^*_i。如果\large w^*_i不是零,那么\large w^*_i也会保持非零。这表明\large L^2不会使参数变得稀疏,而\large L^1正则化可能有足够大的\large \alpha实现稀疏。由\large L^1正则化导出的稀疏性质不会使参数变得稀疏,而\large L^1有可能通过足够大的\large \alpha实现稀疏。由\large L^1正则化导出的稀疏性质已经被广泛应用于特征选择机制。特征选择从可用的特征子集选择出有意义的特征,简化机器学习问题。从著名的LASSO模型将\large L^1惩罚和线性模型结合,并使用最小二乘代价函数。\large L^1惩罚使部分子集的权重为零,表明相应的特征可以被安全地忽略。

你可能感兴趣的:(机器学习理论,深度学习,机器学习,算法)