深度学习 正则化原理

323 阅读4分钟

这是我参与8月更文挑战的第22天,活动详情查看:8月更文挑战

在某些回归问题中会遇到过度拟合的问题而导致他们的表现欠佳。

什么是过度拟合?

对于线性回归中的房价问题,我们给出一个数据集:

image.png

如果对其进行拟合:

image.png

可以明显看出这个的拟合效果并不好,我们称之为: underfit 欠拟合,或者被称为 high bias 高偏差。

image.png

使用二阶拟合良好。

image.png

但是如果使用一个四阶多项式,这似乎完美地拟合了数据,因为这条曲线通过了所有的数据点,但是我们主观上知道这并没有很好地拟合数据,这种情况就被称为 overfit 过度拟合,或者说 high variance 高方差。

逻辑回归也是如此:

image.png

Overfitting: If we have too many features, the learned hypothesis may fit the training set very well (J(θ)=12mi=1m(hθ(x(i))y(i))20)\left(J(\theta)=\frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2} \approx 0\right), but fail to generalize to new examples (predict prices on new examples).

过渡拟合的问题概括的说,将会在变量x多的时候出现,这是训练的假设能很好地拟合训练集,所以你的代价函数非常接近于0。但你是你可能会得到这样的曲线:它努力拟合样本数据导致其无法泛化到新样本当中。

所谓泛化就是一个假设模型应用到新样本中的能力。

对于过度拟合有两个办法来解决:

  1. Reduce number of features
    • Manually select which features to keep
    • Model selection algorithm (later in course)
  2. 减小选取变量的数量
    • 人工选择保留哪些变量
    • 模型选择算法,该算法会自动选择哪些特征需要保留,哪些特征要舍弃

这个方法的缺点是你需要放弃一些特征量,也就意味着你放弃了一些关于问题的信息。例如也许所有的特征变量都是有用的,我们就不能随意舍弃。

  1. Regularization

    • Keep all the features but reduce magnitude /values of parameters θj\theta_j
    • Works well when we have a lot of features, each of which contributes a bit to predicting y
  2. 正则化

    • 保留所有的特征变量,但是减少量级或者参数θj\theta_j的大小
    • 当我们特征量很多的时候这个方法非常有效,其中每一个变量都会对预测y值产生一点影响。

正则化

又回到这个问题:

image.png

二阶时候能对其进行拟合,效果良好。

image.png

但是更高阶却会出现过拟合现象。

image.png

对于这个例子我们知道θ3θ_3θ4θ_4是没必要的,那我们在θ0+θ1x+θ2x2+θ3x3+θ4x4\theta_{0}+\theta_{1} x+\theta_{2} x^{2}+\theta_{3} x^{3}+\theta_{4} x^{4}的代价函数中加入惩罚项,使θ3θ_3θ4θ_4变得非常小。

怎么让这两项变得特别小,怎么加一个“惩罚项”:在代价函数后边给这两项加上巨大的系数,比如加上1000。那这两项的代价函数就会变成:minθ12mi=1m(hθ(x(i))y(i))2+1000θ32+1000θ42\min _{\theta} \frac{1}{2 m} \sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+1000 \theta_{3}^{2}+1000 \theta_{4}^{2},后边多出来这一块就是“惩罚项”。

代价函数是干嘛用的?求最小值,将得到最小值时候θ的值作为预测函数h(x)h(x)的θ。

加上惩罚项以后,带着两个1000的系数,怎么才能让代价函数取得较小的值?那就需要θ3θ_3θ4θ_4变得特别小,甚至于接近于0。既然现在θ3θ_3θ4θ_4都是极小的数接近于0,那带回预测函数中,h(x)=θ0+θ1x+θ2x2+θ3x3+θ4x4θ0+θ1x+θ2x2h(x)=\theta_{0}+\theta_{1} x+\theta_{2} x^{2}+\theta_{3} x^{3}+\theta_{4} x^{4}≈\theta_{0}+\theta_{1} x+\theta_{2} x^{2},这样就变成了二阶函数加上一些也别小的项,那后两项特别小的就可以忽略不计,又回到了近似于二阶函数的样子。

image.png

参数值θ较小意味着一个更简单的假设模型。比如上边的例子中,加入惩罚项之后θ3θ_3θ4θ_4接近于0,我们得到了一个更简单的假设模型(四次变二次)。

正则化

Regularization.

Small values for parameters θ0,θ1,,θn\theta_{0}, \theta_{1}, \ldots, \theta_{n}.

  • "Simpler" hypothesis
  • Less prone to overfitting

正则化思想就是当我们为所有参数项都加上惩罚项,那么就相当于尽量去简化这个假设模型。因为越多的参数值接近于0,我们得到的预测模型就会越平滑、简单。

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2]J(\theta)=\frac{1}{2 m}\left[\sum_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{n} \theta_{j}^{2}\right]
  • λj=1nθj2\lambda \sum_{j=1}^{n} \theta_{j}^{2}就是正则化项,其作用是来缩小每个参数的值。从θ1\theta_1开始哦,因为测试证明不管你加不加θ0\theta_0,最后结果差别都不大,所以一般都从θ1\theta_1开始正则化。
  • λ\lambda是正则化参数,作用是控制两个不同目标之间的取舍。
    • 第一个目标:与目标函数的第一项有关,就是如何更好的拟合训练集
    • 第二个目标:尽量保持参数值较小,保持预测模型简单,与正则化有关
  • λ\lambda:注意选择,可以联想考虑一下之前的学习速率α
    • 如果太大:我们对这些参数惩罚程度太大,导致所有才参数值都有接近于0,那最后预测函数就会接近于一个常数函数h(x)θ0h(x)≈\theta_0,会造成欠拟合。
    image.png
    • 如果太小:惩罚了和没惩罚一个样。

之前举的例子只是借用了正则化的思想,告诉你如何缩小参数θ,现在举个正则化的例子:

Housing:

  • Features: x1,x2,,x100x_{1}, x_{2}, \ldots, x_{100}
  • Parameters: θ0,θ1,θ2,,θ100\theta_{0}, \theta_{1}, \theta_{2}, \ldots, \theta_{100}

还是预测房屋价格,假设现在有100个特征值,有101个参数θ,假设测试数据有70组。

正则化之后其代价函数写为: J(θ)=12×70[i=170(hθ(x(i))y(i))2+λj=1100θj2]J(\theta)=\frac{1}{2 ×70}\left[\sum_{i=1}^{70}\left(h_{\theta}\left(x^{(i)}\right)-y^{(i)}\right)^{2}+\lambda \sum_{j=1}^{100} \theta_{j}^{2}\right]