NLP学习_吴恩达机器学习_6
正则化(Regularization)
过拟合问题
我们已经学习过几种算法,线性回归、逻辑回归。他们可以有效的解决很多问题,但在一些特殊的场景下,可能会出现欠拟合,或者是 过拟合 over-fitting 的情况,导致他们的效果很差。 正则化 regularization 就是解决此类问题的方法。
在正式介绍 正则化 regularization 之前,先来看几个例子,直观地理解一下 过拟合 over-fitting 是什么。
下面是一个回归问题的三种不同的模型。
首先,第一个图是一个线性模型,显然欠拟合;第二个模型比较适应我们的训练集;第三的集合看似经过了我们的每一个数据,好像是符合我们的要求,但是因为过于强调拟合原视数据而丢失了算法的本质:预测新数据,显然,如果让它预测新数据的话,它表现得很差,这就是过拟合。
下面是分类问题的三个不同的模型。
和分类问题出现了同样的问题。
过拟合的原因无非两种:
一、模型拥有大量的参数、表现力强
二、训练数据少
那么我们遇到过拟合的问题该怎么办?
一、丢弃一些我们不需要的数据,可以人工挑选,也可以使用一些模型算法来帮助。(不过我也不知道该使用什么模型算法就是了)
二、正则化。保留特征,但是减少参数的大小。
代价函数
在上面的问题中,我们的模型是:
明显是因为模型中的高次项导致过拟合的产生,我们的思路是:如果可以让高次项的系数都接近于0的话,就可以很好的拟合数据了。
也就是说我们需要一定程度上减少 θ3 和θ4 ,这就是正则化的基本方法。我们要做的就是修改代价函数,给 θ3 和 θ4 设置一点惩罚(此处的惩罚就是指在代价函数中增大θ3和θ4的占比,这样在使用算法尽量使代价函数降低时,就会起到减小θ3和θ4的作用,最终导致选择较小的 θ3 和 θ4 )。
这种方法是一直以来经常被使用的一种一直过拟合的方法,叫做权值衰减。
修改过后的代价函数是这样的:
但是这个例子比较简单,我们可以轻松的看出是 θ3 和 θ4 导致了过拟合,但是在一些问题中特征很多,我们没办法判断到底哪一个特征的相关性比较低,所以我们对所有的特征进行惩罚。
这样我们得到一个新的代价函数:
其中 λ 叫做正则化参数 regularization parameter,它越大,就代表对参数(权重)的惩罚就越重。此外,加上去的式子中的1/2是为了抵消平方求导之后多出的2,而加上的调整用常量。
这里使用的是L2范数,此外还有L1、L3……L∞(其中L∞也被称为MAX范数),它们都可以用来作为正则化项,各有各的特点,不过L2范数比较常用。
另外,可以注意到式子中的累加是从n = 1开始的,在习惯上我们不对 θ0 进行正则化,但实际上影响不大。
正则化前后的可能对比如下。
需要注意的是,如果 λ 过大的话,就会造成图中直线的情况,把所有的系数都最小化,导致hθ(x) = θ0,造成欠拟合。
所以要选择一个合理的 λ 的值才能更好的应用正则化。
线性回归模型的正则化
关于线性回归,我们学习了两种学习算法:梯度下降 和 正规方程。
正则化线性回归的代价函数:
梯度下降
因为我们没有对θ0正则化,所以在更新参数的时候需要把它单独拿出来讨论。
对上面的第二个式子稍微化简一下可以得到:
可以看出来,正则化使原有更新上减小了一点参数的值。
正规方程
正则化后的正规方程:
其中的矩阵尺寸为 (n + 1)*(n + 1)
逻辑回归模型的正则化
同样的我们也给代价函数添加一个正则化的式子。
通过求导之后:
值得注意的是,虽然在形式上和线性回归一样,但是 hθ(x) 的含义不同,所以两者并不相同。