在稍早前的文章中(Bias/Variance(偏差/方差) - DeepLearning.ai Lesson2 #2)有提到过,使用正则化(regularization)可以在不增加偏差的前提下减少方差,所以本文将会解释正则化的原理。

为什么使用正则化

对于监督学习来说,其精髓在于:

W=Loss(y,y^)+λΩ(w)W^{*} = Loss(y, \hat{y}) + \lambda \Omega(w)

对于Loss函数来说,如果是log_loss就是逻辑回归,如果是hinge_loss就是svm…后面λΩ(w)\lambda \Omega(w)就是正则化函数。

一般模型越复杂越有可能导致“过拟合(over-fitting)”(也就是上图最右)的情况,具体下面会讲到,所以我们需要有一种机制保证模型“简单”,这样我们训练得到的模型才能具有较好的泛化能力,正则化就是这种机制之一。

上图就简单的描述了正则化的工作原理,通过减小一部分神经元的作用来提升泛化能力,我们可以理解为这些特征仅在本数据集(如训练集)中含有,但是在全局(测试集)中并没有的,所以这就导致正则化之后的网络变得很小但很深。

什么是范数

L1正则化使用了1范数,L2正则化使用了2范数,所以在看正则化之前我们有必要了解什么是范数。

0范数和1范数放在一起是因为他们都会使得矩阵边稀疏,也就是使矩阵大部分的区域都为0,由于L0范数很难优化求解(NP难问题),所以大家一般使用L1范数作为L0范数的最优凸近似。

0范数是指向量中非0的元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0。

1范数的定义为i=1Nxi\sum_{i = 1}^{N} \vert x_{i} \vert,指向量中各个元素绝对值之和。

2范数的定义为i=1Nxi2\sqrt{\sum_{i = 1}^{N} x_{i}^{2}},指向量中各个元素的平方和的根。

正则化的原理解释

由于在高维度下我们很难想象其空间,所以举例我们仅使用

假设带L1正则化的损失函数:

J=J0+λwi=1wiJ = J_{0} + \lambda \sum_{w}^{i = 1} \vert w_{i} \vert

其中λ\lambda是正则化系数。我们最终的优化目的是使J0J_{0}尽量的小。

现在我们考虑二维的情况,也就是只有两个权值w1w_{1}w2w_{2},此时wi=1wi=w1+w2\sum_{w}^{i = 1} \vert w_{i} \vert = \vert w_{1} \vert + \vert w_{2} \vert。以最小二乘法为例J0=min(yi(w1x+w2x))2J_{0} = min (y_{i} - (w_{1}x + w_{2} x))^{2},所以在(w1,w2)(w_{1}, w_{2})的空间中,平方误差相同的地方的点的连线是椭圆形的(蓝色的),也就是等值线。橙色的线是就是范数的俯视图,左边是2范数右边是1范数的俯视图,以2范数为例L=w12+w22L = w_{1}^{2} + w_{2}^{2}(w1,w2)(w_{1}, w_{2})空间上,L是z轴,三维图如下:

俯视图:

我们的目标函数(误差函数),是求J0J_{0}λwi=1wi\lambda \sum_{w}^{i = 1} \vert w_{i} \vert的最小值,一般来说最小值是蓝色圆圈与红色线相交的位置,在二维的L1正则化的情况中就有4个顶点,在多维中顶点将会更多,且有很大几率红线的焦点与蓝色圆圈相交,此时很多点将会被置为0。

对此直观的理解是:对此直观的理解是L1正则化使得权重更靠近某一个轴,L2正则化使权重更靠近原点。所以L1正则化相比于L2正则化的一个优势是使得矩阵稀疏,但是L1正则化有一部门是不可微的,所以L2正则化会应用的更广泛一些。

REFERENCES