正则化

正则化旨在解决过拟合问题。

高偏差或者说欠拟合是指假设函数映射与数据的趋势相差很大。
这种现象可能会发生在当假设函数过于简单或者使用过少的特征数的情况。
比如说,我们的假设函数为$ h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2$,
我们希望这个线性模型将很好地拟合训练数据,且泛化能力较好(泛化能力:是指机器学习算法对新样本的适应能力。泛化能力好的算法能较好地预测新数据),但情况却并非如此。

而另一种极端情况,过拟合或高方差是指一个假设函数能很好的拟合数据,但不能很好地预测新数据。这种现象通常是由一个复杂的函数造成的,它会产生大量与数据无关的不必要的曲线和角度。

过拟合在线性和逻辑回归种都可能出现。解决过度拟合问题有两个主要方法:

  • 减少功能的数量
    a)手动选择要保留的功能。
    b)使用模型选择算法(后面将会提到)。
  • 正则化
    保留所有功能,但减小参数$\theta_j$。
    当我们有很多稍微有用的功能时,正则化是一个不错的方法。

成本函数

如果我们的假设函数过度拟合,那么我们可以通过增加成本来减少函数中某些项的权重。
比如说,我们希望下面这个函数更偏向二次函数:
$θ_0+θ_1x+θ_2x^2+θ_3x^3+θ_4x^4$
也就是说,我们想要减少$θ_3x^3$和$θ_4x^4$的影响。
我们可以这样更改成本函数,而不是直接删除这两个特征。
$min _θ \frac{1}{2m}$$\sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)})^2+1000⋅θ_3^2+1000⋅θ_4^2$

可以看到,我们加了两个额外的项在最后面来增大这两个项的成本。
而在成本函数中,我们想要最小化结果,使其靠近0,就不得不使得$\theta_3$和$\theta_4$接近0。
这将大大降低了假设函数中的$θ_3x^3$和$θ_4x^4$

我们也可以用一个总和来调整我们所有的θ参数:
$min _θ \frac{1}{2m}$$[\sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)})^2+λ\sum_{j=1}^n \theta^2_j]$

其中λ是正则化参数。它决定了我们theta参数的成本增加的幅度。
可以在交互式绘图中看看正则化的效果:https://www.desmos.com/calculator/1hexc8ntqp

使用上述成本函数和额外的正则项,我们可以使假设函数的输出更为平滑以减少过度拟合。
但如果选择的λ太大,可能会过多地消除该特征而导致欠拟合现象。

正则化线性回归

上面我们提到可以将正则化应用于线性回归和逻辑回归。
这里,我们先感受一下正则化线性回归。

梯度下降

修改梯度下降函数,把$\theta_0$和其余的参数分离,因为我们不想惩罚$\theta_0$项。
(正则项也被成为惩罚项,对某个参数正则化,也被称为惩罚某个参数。)
重复{
$\theta_0:=\theta_0 - \alpha \frac{1}{m} \sum_{i=1}^m(h_\theta(x^{(i)})-h^{(i)})x^{(i)}_0$
$\theta_j:=\theta_0 - \alpha [\frac{1}{m} \sum_{i=1}^m(h_\theta(x^{(i)})-h^{(i)})x^{(i)}_j+\frac{\lambda}{m}\theta_j] , j∈{1,2…n}$
}

显然,$\frac{\lambda}{m}\theta_j$的作用就是正则化。
稍微调整一下,上面的更新规则也可以这样表示:
$\theta_j:=θ_j(1-α\frac{λ}{m})-\theta_0 - \alpha \frac{1}{m} \sum_{i=1}^m(h_\theta(x^{(i)})-h^{(i)})x^{(i)}_j$

显然,这个式子中第一项$1-α\frac{λ}{m}$总是小于1。
直观上,你可以看得出每一次迭代都会按照一定程度减小$\theta_j$。
而第二项,显然和原始的梯度下降是一样的。

正规方程

现在我们把正则化应用到非迭代化的正规方程方法中。
增加正则化后,方程与我们的原始方程基本一直,除了我们在括号内添加了另一个项:
$θ=(X^TX+λ⋅L)^{-1}X^Ty$
其中 $L =\begin{bmatrix}
0 & 0 & \cdots\ &0\\
0 & 1 & \cdots\ & 0\\
\vdots & \vdots & \ddots & \vdots\\
0 & 0 & \cdots\ & 1
\end{bmatrix}$

L是一个左上角为0,对角线下方为1,其他位为0的矩阵。
其大小为$(n + 1)×(n + 1)$。直观可以看做一个单位阵(不包括$x_0$)乘以数λ。

如我们所知,如果$m≤n$,那么$X ^ TX$是不可逆的。
但当我们添加$λ⋅L$项之后,$X^TX+λ⋅L$则变成了可逆的。

正则化逻辑回归

逻辑回归的正则化实则和正则化线性回归类似。
让我们从成本函数开始。

成本函数

回顾逻辑回归的成本函数:
$J(θ)=-\frac{1}{m}\sum_{i=1}^m[y
^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))]$
同样的,我们把正则项加在成本函数的后面:
$J(θ)=-\frac{1}{m}\sum_{i=1}^m[y
^{(i)}log(h_θ(x^{(i)}))+(1-y^{(i)})log(1-h_θ(x^{(i)}))]+\frac{\lambda}{2m}\sum_{j=1}^n\theta^2_j$

注意:正则项中$\sum_{j=1}^n\theta^2_j$明确排除偏向项$\theta_0$。
(θ向量共n+1个值,下标从0到n,从$\theta_0$到$\theta_n$),只从$\theta_1$运行到$\theta_n$。

梯度下降

梯度下降的正则化也是和线性回归当中差不多的,我们将会把$\theta_0$和其他的参数分开来更新,因为我们不想正则化$\theta_0$项。
重复直到收敛: {
$θ_0 := θ_0 $ -$ α\frac{1}{m}\sum_{i=1}^m((h_θ(x^{(i)}) - y^{i})x^{(i)}_0)$
$θ_j := θ_j $ -$ α[\frac{1}{m}\sum_{i=1}^m((h_θ(x^{(i)}) - y^{i})x^{(i)}_j)+\frac{\lambda}{m}\theta_j] $, $j∈{1,2…n}$
}
显然,使用了正则化,其与用于线性回归的梯度下降函数在形式上仍是相同的。

初始化单位特征向量

常量特征

事实证明,在开始进行任何培训之前,为特征池添加一个不变的特征至关重要。
通常情况下,这个特征对于每个训练集都是1。
具体来说,如果X是你的特征矩阵,那么$X_0$是一个单位向量。

下面解释需要常量特征的原因。
这个常量特征也被称为“偏差”项,可以调整特征以更好地适应数据。

比如我们只考虑一个特征$X_1$,没有$X_0$的公式是$\theta_1 * X_1 = y$。
显然,这是一条始终穿过原点的线,斜率为$\frac{y}{\theta_1}$。
而添加了$X_0$项则使得这条线通过y轴上的不同点成为可能。
换句话说,有偏差项能更好地调整数据,毕竟并非所有最拟合数据的模型都通过原点$(0,0)$。

分享到