学习引导:正则化是防止过拟合的一个重要方法,并且过拟合在神经网络也很重要。
简要说明什么是过拟合以及过拟合的危害。
Regularization
Solving the Problem of Overfitting
The Problem of Overfitting
如上图,这是一个单变量回归问题。通过使用高次项,我们可以的到不同的拟合曲线。
左 1 使用一次函数
y
=
θ
0
+
θ
1
x
y = \theta_0 + \theta_1x
y=θ0+θ1x 来拟合曲线。可以看到,效果并不好。这种情况称之为欠拟合(under-fitting)。
中间使用二次函数
y
=
θ
0
+
θ
1
x
+
θ
2
x
2
y = \theta_0 + \theta_1x + \theta_2x^2
y=θ0+θ1x+θ2x2 来拟合。效果不错。
右 1 使用五次函数
y
=
∑
j
=
0
5
θ
j
x
j
y = \sum_{j=0}^5\theta_jx^j
y=∑j=05θjxj 来拟合。 对于训练集的拟合效果极好,但是在测试集,很可能得到很差的结果。这种情况称为过拟合(over-fitting)
欠拟合,或高偏差(high-bias),指的是猜想函数 h 不能很好的映射模型。它一般是因为函数过于简单或使用了过少的特征。
过拟合,或高方差(high-variance),指的是函数很好得拟合了训练数据,但是不能很好地泛化来预测新数据。他是因为使用过于复杂的函数,产生了不必要的曲线和角度。
过拟合同时适用于 linear 和 logistic regression。
一般有2种方法来解决这个问题:
-
Reduce the number of features: 减少特征的数量
- Manually select which features to keep. 手动选择保留那些特征
- Use a model selection algorithm (studied later in the course). 使用模型选择算法
-
Regularization 正则化
- Keep all the features, but reduce the magnitude of parameters θ j \theta_j θj. 保留所有特征,但是减少参数的大小(权重)
- Regularization works well when we have a lot of slightly useful features. 正则化在使用很多稍微有点作用的特征时,能得到很好的效果
Cost function (regularized)
如果函数产生过拟合,可以通过增加项的代价来减少降低项的权重。
详细的说,假设现在猜想函数 h = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + θ 4 x 4 + θ 5 x 5 h = \theta_0 + \theta_1x + \theta_2x^2 + \theta_3x^3 + \theta_4x^4 + \theta_5x^5 h=θ0+θ1x+θ2x2+θ3x3+θ4x4+θ5x5
我们想要消除 θ 3 \theta_3 θ3 和 θ 4 \theta_4 θ4 的影响。我们可以对代价函数作出如下改变:
J ( θ ) = m i n θ 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 + 1000 ⋅ θ 3 2 + 1000 ⋅ θ 4 2 J(\theta) = min_\theta \frac{1}{2m}\sum_{i=1}^m(h(x^{(i)}) - y^{(i)})^2 + 1000 \cdot {\theta_3}^2 + 1000 \cdot {\theta_4}^2 J(θ)=minθ2m1∑i=1m(h(x(i))−y(i))2+1000⋅θ32+1000⋅θ42
可以看到, θ 3 \theta_3 θ3 和 θ 4 \theta_4 θ4 的成本极高。所以为了最小化 J ( θ ) J(\theta) J(θ), θ 3 , θ 4 ≈ 0 \theta_3,\ \theta_4\approx 0 θ3, θ4≈0。
因为不知道到底要消除哪一个特征的影响,我们可以同时减小所有权重:
J ( θ ) = m i n θ 1 2 m ∑ i = 1 m ( h ( x ( i ) ) − y ( i ) ) 2 + λ ∑ j = 0 n θ n 2 J(\theta) = min_\theta \frac{1}{2m}\sum_{i=1}^m(h(x^{(i)}) - y^{(i)})^2 + \lambda \sum_{j=0}^n{\theta_n}^2 J(θ)=minθ2m1∑i=1m(h(x(i))−y(i))2+λ∑j=0nθn2
λ \lambda λ 称作是正则化参数(regularization parameter)
通过减小权重,函数变得平滑,以此减小过拟合。如果 λ \lambda λ 过大,那么会变得过于平滑,从而导致欠拟合。如果 λ \lambda λ 过小,那就没什么效果。
Regularized Linear Regression
Gradient Descent
对代价函数偏微分得到:
KaTeX parse error: No such environment: align* at position 7: \begin{̲a̲l̲i̲g̲n̲*̲}̲ & \text{Repeat…
注意 λ m θ j \frac{\lambda}{m}\theta_j mλθj 项。
将公式整理后可以得到:
θ j : = θ j ( 1 − α λ m ) − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j(1-\alpha\frac{\lambda}{m}) - \alpha\frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} θj:=θj(1−αmλ)−αm1∑i=1m(hθ(x(i))−y(i))xj(i)
可以看到,第一项的系数 ( 1 − α λ m ) (1-\alpha\frac{\lambda}{m}) (1−αmλ) 总是稍微小于1,所以每次把 θ \theta θ 减小一点点。第二项则和正则化之前完全一样。
Normal Equation
KaTeX parse error: No such environment: align* at position 7: \begin{̲a̲l̲i̲g̲n̲*̲}̲& \theta = \lef…
之前提到,当 m < n m < n m<n 时, X T X X^TX XTX 是不可逆的。但是当添加这一项后, X T X + λ ⋅ L X^TX + \lambda \cdot L XTX+λ⋅L 可逆。
Regularized Logistic Regression
如上图,可以用类似的方法对对数几率回归模型进行正则化。
- 左上蓝线表示过拟合的曲线。紫线表示正则化之后的曲线
- 右上是高次猜想函数
- 下方是添加了正则项的代价函数
Cost Function
J ( θ ) = − 1 m ∑ i = 1 m [ y ( i ) log ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ( 1 − h θ ( x ( i ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[y^{(i)}\log(h_\theta(x^{(i)})) + (1-y^{(i)})\log(1-h_\theta(x^{(i)}))] + \frac{\lambda}{2m}\sum_{j=1}^n{\theta_j}^2 J(θ)=−m1∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]+2mλ∑j=1nθj2
注意 ∑ j = 1 n θ j 2 \sum_{j=1}^n{\theta_j}^2 ∑j=1nθj2 显式排除了 θ 0 \theta_0 θ0 的影响
Gradient Descent
回答章前问题
简要说明什么是过拟合以及过拟合的危害。
过拟合是使用了过高次幂的函数,导致函数出现不必要的曲线和角度。使得其虽然能很好的拟合训练数据,但不能拟合测试数据,也就无法很好的预测模型。