谈一谈正则化

要理解正则化,首先需要了解过拟合的概念,关于过拟合,笔者在前面的博文中有专门提到,详情可参见博文:过拟合与欠拟合简要总结 以及 如何解决过拟合问题

下面结合 NG 的公开课、网络上资源解读以及自己的一些理解,对正则化做相关阐述:

以 NG 公开课中的房价预测问题为背景,展开讨论。
这里写图片描述

在机器学习中,过多的变量(特征),同时只有非常少的训练数据,会导致出现过度拟合的问题。因此为了解决过度拟合,有以下两个办法:

1.尽量减少选取变量的数量

具体而言,我们可以人工检查每一项变量,并以此来确定哪些变量更为重要,然后,保留那些更为重要的特征变量。这类做法非常有效,但是其缺点是当你舍弃一部分特征变量时,你也舍弃了问题中的一些信息。例如,也许所有的特征变量对于预测房价都是有用的,我们实际上并不想舍弃一些信息或者说舍弃这些特征变量。

2.正则化

正则化中我们将保留所有的特征变量,但是会减小特征变量的数量级。这个方法非常有效,当我们有很多特征变量时,其中每一个变量都能对预测产生一点影响。正如我们在房价预测的例子中看到的那样,我们可以有很多特征变量,其中每一个变量都是有用的,因此我们不希望把它们删掉,这就导致了正则化概念的发生。

函数惩罚项

在前面的介绍中,我们看到了如果用一个二次函数来拟合这些数据,那么它给了我们一个对数据很好的拟合。然而,如果我们用一个更高次的多项式去拟合,最终我们可能会得到一个曲线,它能很好地拟合训练集,但却并不是一个好的结果,因为它过度拟合了数据,因此,一般性并不是很好。

让我们来考虑下面的假设:

minθ12mi=1m(hθ(x(i))y(i))2

我们想要加上惩罚项,从而使参数 θ3 和 θ4 足够的小。意思就是,上图的式子是我们的优化目标,也就是说我们需要尽量减少代价函数的均方误差。
对于这个函数我们对它添加一些项,如下所示:

minθ12mi=1m(hθ(x(i))y(i))2+10000θ23+10000θ24

其中,10000只是我随便写的某个较大的数字而已,现在,如果我们要最小化这个函数,那么为了最小化这个新的代价函数,我们要让 θ3 和 θ4 尽可能小。因为,如果你在原有代价函数的基础上加上 1000 乘以 θ3 这一项 ,那么这个新的代价函数将变得很大,所以,当我们最小化这个新的代价函数时, 我们将使 θ3 的值接近于 0,同样 θ4 的值也接近于 0,就像我们忽略了这两个值一样。如果我们做到这一点( θ3 和 θ4 接近 0 ),那么我们将得到一个近似的二次函数。
这里写图片描述

因此,我们最终恰当地拟合了数据,我们所使用的正是二次函数加上一些非常小,贡献很小项(因为这些项的 θ3 θ4 非常接近于0)。显然,相比于方法1,这是一个更好的假设。

正则化操作

在我们上面的例子中,我们惩罚的只是 θ3 θ4 ,使这两个值均接近于零,从而我们得到了一个更简单的假设,实际上这个假设大抵上是一个二次函数。

但更一般地说,如果我们像惩罚 θ3 θ4 这样惩罚其它参数,那么我们往往可以得到一个相对较为简单的假设。

实际上,这些参数的值越小,通常对应于越光滑的函数,也就是更加简单的函数。因此就不易发生过拟合。

来让我们看看具体的例子,对于房屋价格预测我们可能有上百种特征,与刚刚所讲的多项式例子不同,我们并不知道 θ3 和 θ4 是高阶多项式的项。所以,如果我们有一百个特征,我们并不知道如何选择关联度更好的参数,如何缩小参数的数目等等。

因此在正则化里,我们要做的事情,就是把减小我们的代价函数(例子中是线性回归的代价函数)所有的参数值,因为我们并不知道是哪一个或哪几个要去缩小。

因此,我们需要修改代价函数,在这后面添加一项。当我们添加一个额外的正则化项的时候,我们收缩了每个参数。

minθ12m[i=1m(hθ(x(i))y(i))2+λj=1nθ2j]

按照惯例,我们没有去惩罚 θ0 ,因此 θ0 的值是大的。通常情况下我们还是只从 θ1 θn 进行正则化。

上式中, λnj=1θ2j 就是一个正则化项。
λ 在这里我们称做正则化参数。

为了使正则化运作良好,我们应当注意一些方面,应该去选择一个不错的正则化参数 λ 。当 λ 太大的时候,会使所有参数都趋于零,如果我们这么做,那么就是我们的假设中相当于去掉了这些项,并且使我们只是留下了一个简单的假设,这个假设只能表明房屋价格等于 θ0 的值,那就是类似于拟合了一条水平直线,对于数据来说这就是一个欠拟合。当 λ 太小的时候,有时候会对参数的惩罚力度不够,导致效果不明显。后面我们将在讲到多重选择时讨论一种方法来自动选择正则化参数 λ 。

L1 正则化以及特征选择

为了简便起见,此处的损失函数不再写全,而是以单字母替代,当然,这对理解不会产生障碍。

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

J=J0+λj=1n|θj|

其中 J0 是原始的损失函数,加号后面的一项是L1正则化项, λ 是正则化系数。注意到L1正则化是权值的绝对值之和, J 是带有绝对值符号的函数,因此J是不完全可微的。考虑二维的情况,即只有两个权值 w1 w2 ,此时L=| w1 |+| w2 |对于梯度下降法,求解 J0 的过程可以画出等值线,同时L1正则化的函数L也可以在 w1w2 的二维平面上画出来。如下图:
这里写图片描述

图中等值线是 J0 的等值线,黑色方形是 L 函数的图形。在图中,当 J0 等值线与L图形首次相交的地方就是最优解。上图中 J0 与 L 在 L 的一个顶点处相交,这个顶点就是最优解。注意到这个顶点的值是 (w1,w2)=(0,w)。可以直观想象,因为L函数有很多『突出的角』(二维情况下四个,多维情况下更多), J0 与这些角接触的机率会远大于与 L 其它部位接触的机率,而在这些角上,会有很多权值等于0,这就是为什么 L1 正则化可以产生稀疏模型,进而可以用于特征选择

而正则化前面的系数 λ ,可以控制L图形的大小。 λ 越小,L 的图形越大(上图中的黑色方框); λ 越大,L 的图形就越小,可以小到黑色方框只超出原点范围一点点,这是最优点的值 (w1,w2)=(0,w) 中的 w 可以取到很小的值。也就是说,在一定程度上,L1 正则化也能够防止过拟合,达到与 L2 正则化类似的效果。

L2正则化以及防止过拟合

有如下带L2正则化的损失函数:

J=J0+λj=1nθ2j

同样可以画出他们在二维平面上的图形,如下所示:
这里写图片描述
二维平面下 L2 正则化的函数图形是个圆,与方形相比,被磨去了棱角。因此 J0 与 L 相交时使得 w1 w2 等于零的几率小了许多,这就是为什么 L2 正则化不具有稀疏性的原因。

关于 L2 正则化能够有效防止过拟合问题的原因,在博客的正则化操作部分已有介绍,这里不再赘述。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页