机器怎样可以学得更好?

本文介绍了机器学习中常见的过拟合问题及其原因,包括噪声和目标函数复杂度的影响。文章详细阐述了正则化、验证集以及奥卡姆剃刀等原则在改善模型泛化能力上的作用。通过实例展示了不同复杂度模型在过拟合上的表现,并探讨了正则化、数据清洗、验证集划分等方法来处理过拟合。
摘要由CSDN通过智能技术生成

本系列是台湾大学资讯工程系林軒田(Hsuan-Tien Lin)教授开设的《机器学习基石》课程的梳理。重在梳理,而非详细的笔记,因此可能会略去一些细节。

该课程共16讲,分为4个部分:

  1. 机器什么时候能够学习?(When Can Machines Learn?)
  2. 机器为什么能够学习?(Why Can Machines Learn?)
  3. 机器怎样学习?(How Can Machines Learn?)
  4. 机器怎样可以学得更好?(How Can Machines Learn Better?)

本文是第4部分,对应原课程中的13-16讲。

本部分的主要内容:

  • 过拟合问题,过拟合与噪声、目标函数复杂度的关系;
  • 正则化,正则化与VC理论的联系;
  • 验证,留一交叉验证和V-折交叉验证;
  • 三个学习原则,即奥卡姆剃刀、抽样偏差和数据窥探。

1 过拟合问题

1.1 过拟合的发生

假设现在用带很小噪声的2次多项式生成了5个样本,对于这5个样本,其实用4次多项式就可以完美拟合它:

这样做可使 E in = 0 E_\text{in}=0 Ein=0,但 E out E_\text{out} Eout却会非常大。

如果出现 E in E_\text{in} Ein很小, E out E_\text{out} Eout很大的情况,就是出现了不好的泛化(bad generalization)。如果在训练的过程中, E in E_\text{in} Ein越来越小, E out E_\text{out} Eout越来越大,就称为过拟合(overfitting)。

噪声和数据规模都会影响过拟合。先来看以下两个数据集:

  • 数据由10次多项式生成,有一些噪声;
  • 数据由50次多项式生成,无噪声。

数据集图像如下:

如果我们用2次和10次多项式分别拟合以上两个数据集,那么在从 g 2 ∈ H 2 g_2 \in \mathcal{H}_2 g2H2 g 10 ∈ H 10 g_{10} \in \mathcal{H}_{10} g10H10的过程中,会发生过拟合吗?

拟合结果如下:

比较后发现,在两个数据集中,都发生了过拟合!

来看学习曲线,当 N → ∞ N\to \infty N时显然 H 10 \mathcal{H}_{10} H10会有更小的 E o u t ‾ \overline{E_{out}} Eout,但 N N N较小时它会有很大的泛化误差。灰色区域就是过拟合发生的区域。

其实对于由无噪声的50次多项式生成的数据,“目标函数的复杂度”本身就可以看作类似的噪声。

接下来做个更细节的实验。用

y = f ( x ) + ϵ ∼ Gaussian ( ∑ q = 0 Q f α q x q , σ 2 ) \begin{aligned} y &= f(x) + \epsilon\\ &\sim \text{Gaussian}\left(\sum_{q=0}^{Q_f} \alpha_q x^q, \sigma^2 \right) \end{aligned} y=f(x)+ϵGaussianq=0Qfαqxq,σ2
生成 N N N个数据,其中 ϵ \epsilon ϵ是独立同分布的高斯噪声,噪声水平为 σ 2 \sigma^2 σ2 f ( x ) f(x) f(x)关于复杂度水平 Q f Q_f Qf是均匀分布的。也就是说,目标函数有 Q f Q_f Qf σ 2 \sigma^2 σ2两个变量。

然后,分别固定 Q f = 20 Q_f=20 Qf=20 σ 2 = 0.1 \sigma^2=0.1 σ2=0.1,还是分别用2次和10次多项式拟合数据,并用 E out ( g 10 ) − E out ( g 2 ) E_\text{out}(g_{10})-E_\text{out}(g_{2}) Eout(g10)Eout(g2)度量过拟合水平。结果如下:

颜色偏红的区域,就是发生了过拟合。

加上去的 σ 2 \sigma^2 σ2高斯噪声可称为stochastic noise,而目标函数的次数 Q f Q_f Qf也有类似噪声的影响,因此可叫deterministic noise

如果 f ∉ H f\notin \mathcal{H} f/H,那么 f f f一定有某些部分就无法被 H \mathcal{H} H所捕捉到,最好的 h ∗ ∈ H h^*\in\mathcal{H} hH f f f的差就是deterministic noise,它的表现与随机噪声没什么不一样(与伪随机数生成器类似)。它与stochastic noise的不同之处在于,它与 H \mathcal{H} H有关,且对于每个 x x x,它的值是确定的:

1.2 过拟合的处理

一般来说,处理过拟合的思路有以下几种:

  • 从简单的模型开始;
  • 数据清洗(data cleaning),将错误的数据修正(如更正它的标签类别);
  • 数据剪枝(data pruning),删去离群点(outlier);
  • data hinting,当样本量不够时,可以对现有样本做些简单的处理,增加样本量,如在数字分类中,可以将数据微微旋转或平移而不改变它们的标签,这样就可增大样本量;
  • 正则化(regularization),见下节;
  • 验证(validation),见后文。

2 正则化(regularization)

2.1 正则化

正则化的思想是好比从 H 10 \mathcal{H}_{10} H10“逐步回退”到 H 2 \mathcal{H}_{2} H2。这个名字的由来是在早期做函数逼近(function approximation)时,有很多问题是ill-posed problems,即有很多函数都是满足问题的解,所以要加入一些限制条件。从某种意义上说,机器学习中的过拟合也是“正确的解太多”的问题。

H 10 \mathcal{H}_{10} H10中假设的一般形式为
w 0 + w 1 x + w 2 x 2 + w 3 x 3 + ⋯ + w 10 x 10 w_0+w_1 x+w_2 x^2+w_3 x^3+\cdots+w_{10} x^{10} w0+w1x+w2x2+w3x3++w10x10
H 2 \mathcal{H}_{2} H2中假设的一般形式为
w 0 + w 1 x + w 2 x 2 w_0+w_1 x+w_2 x^2 w0+w1x+w2x2
其实只要限制 w 3 = w 4 = ⋯ = w 10 = 0 w_3=w_4=\cdots=w_{10}=0 w3=w4==w10=0,就会有 H 10 = H 2 \mathcal{H}_{10}=\mathcal{H}_{2} H10=H2。如果在用 H 10 \mathcal{H}_{10} H10时加上这个限制,其实就是在用 H 2 \mathcal{H}_2 H2做机器学习。

H 2 \mathcal{H}_2 H2的灵活性有限,但 H 10 \mathcal{H}_{10} H10又很危险,那有没有折中一些的假设集呢?不妨把这个条件放松一些,变成 ∑ q = 0 10 1 [ w 1 ≠ 0 ] ≤ 3 \sum\limits_{q=0}^{10}\mathbf{1}_{[w_1\ne 0]}\le 3 q=0101[w1=0]3,记在该限制下的假设集为 H 2 ′ \mathcal{H}_2' H2,有 H 2 ⊂ H 2 ′ ⊂ H 10 \mathcal{H}_{2}\subset \mathcal{H}_{2}' \subset \mathcal{H}_{10} H2H2H10,即它比 H 2 \mathcal{H}_{2} H2更灵活,但又没有 H 10 \mathcal{H}_{10} H10那么危险。

H 2 ′ \mathcal{H}_{2}' H2下,求解的问题转化成了
min ⁡ w ∈ R 10 + 1 E in ( w ) s.t.  ∑ q = 0 10 1 [ w 1 ≠ 0 ] ≤ 3 \min\limits_{\mathbf{w}\in \mathbb{R}^{10+1}} E_\text{in}(\mathbf{w})\quad \text{s.t. } \sum\limits_{q=0}^{10}\mathbf{1}_{[w_1\ne 0]}\le 3 wR10+1minEin(w)s.t. q=0101[w1=0]3
这是个NP-hard问题,复杂度很高。不如再将它变为
min ⁡ w ∈ R 10 + 1 E in ( w ) s.t.  ∑ q = 0 10 w q 2 ≤ C \min\limits_{\mathbf{w}\in \mathbb{R}^{10+1}} E_\text{in}(\mathbf{w})\quad \text{s.t. } \sum\limits_{q=0}^{10}w^2_q \le C wR10+1minEin(w)s.t. q=010wq2C
记该假设集为 H ( C ) \mathcal{H}(C) H(C),它与 H 2 ′ \mathcal{H}_2' H2是有部分重叠的,并且对于 C C C有软的、光滑的结构:
H 0 ⊂ H 1 ⊂ ⋯ ⊂ H ∞ = H 10 \mathcal{H}_{0} \subset \mathcal{H}_{1} \subset \cdots \subset \mathcal{H}_{\infty} =\mathcal{H}_{10} H0H1H=H10
记在 H ( C ) \mathcal{H}(C) H(C)下找到的最优解为 w REG \mathbf{w}_\text{REG} wREG

在没有正则化时,用梯度下降更新参数的方向是 − ∇ E in ( w ) -\nabla E_\text{in}(\mathbf{w}) Ein(w)。而在加入了正则化 w T w ≤ C \mathbf{w}^T \mathbf{w}\le C wTwC的限制时,必须在该限制下更新,如下图:

w T w = C \mathbf{w}^T \mathbf{w}= C wTw=C的法向量(normal vector)就是 w \mathbf{w} w,从图中可知,只要 − ∇ E in ( w ) -\nabla E_\text{in}(\mathbf{w}) Ein(w) w \mathbf{w} w不平行,就可继续在该限制下降低 E in ( w ) E_\text{in}(\mathbf{w}) Ein(w),因此,达到最优解时,一定有
− ∇ E in ( w ) ∝ w REG -\nabla E_\text{in}(\mathbf{w}) \propto \mathbf{w}_\text{REG} Ein(w)wREG
由此,问题可以转化为求解
∇ E in ( w REG ) + 2 λ N w REG = 0 \nabla E_\text{in}(\mathbf{w}_\text{REG}) +\dfrac{2 \lambda}{N} \mathbf{w}_\text{REG}=0 Ein(wREG)+N2λwREG=0
其中 λ \lambda λ是引入的拉格朗日乘子(Lagrange multiplier)。假设已知 λ > 0 \lambda>0 λ>0,只需要把梯度的式子写出来,即有:
2 N ( X T X w REG − X T y ) + 2 λ N w REG = 0 \dfrac{2}{N}(X^T X\mathbf{w}_\text{REG}-X^T \mathbf{y})+\dfrac{2 \lambda}{N} \mathbf{w}_\text{REG}=0 N2(XTXwREGXTy)+N2λwREG=0
直接求解即可得
w REG ← ( X T X + λ I ) − 1 X T y \mathbf{w}_\text{REG}\leftarrow (X^T X+\lambda I)^{-1} X^T\mathbf{y} wREG(XTX+λI)1XTy
只要 λ > 0 \lambda>0 λ>0 X T X + λ I X^T X+\lambda I XTX+λI就是正定矩阵,它一定可逆。

在统计学中,这通常叫岭回归(ridge regression)。

换一种视角来看,求解
∇ E in ( w REG ) + 2 λ N w REG = 0 \nabla E_\text{in}(\mathbf{w}_\text{REG}) +\dfrac{2 \lambda}{N} \mathbf{w}_\text{REG}=0 Ein(wREG)+N2λwREG=0
就等价于求解(相当于对上式两边取积分)
min ⁡ w E in ( w ) + λ N w T w \min\limits_{\mathbf{w}} E_\text{in}(\mathbf{w})+\dfrac{\lambda}{N}\mathbf{w}^T\mathbf{w} wminEin(w)+NλwTw
w T w \mathbf{w}^T\mathbf{w} wTw可叫regularizer,整个 E in ( w ) + λ N w T w E_\text{in}(\mathbf{w})+\dfrac{\lambda}{N}\mathbf{w}^T\mathbf{w} Ein(w)+NλwTw可叫作augmented error E aug ( w ) E_\text{aug}(\mathbf{w}) Eaug(w)

这样,原本是给定 C C C后解一个条件最值问题,现在转化成了一个给定 λ \lambda λ的无条件最值问题。

可将 + λ N w T w +\dfrac{\lambda}{N}\mathbf{w}^T\mathbf{w} +NλwTw称为weight-decay regulariztion,因为更大的 λ \lambda λ,就相当于让 w \mathbf{w} w更短一些,也相当于 C C C更小一点。

一个小细节:在做特征变换时,如果用 Φ ( x ) = ( 1 , x , x 2 , … , x Q ) \Phi(\mathbf{x})=(1,x,x^2,\ldots,x^Q) Φ(x)=(1,x,x2,,xQ),假设 x n ∈ [ − 1 , + 1 ] x_n \in [-1,+1] xn[1,+1],那么 x n q x^q_n xnq会非常小,这一项本来就需要很大的 w q w_q wq才能起到作用,如果此时再用正则化,就对高维的系数有些“过度惩罚”了,因为它本来就要比较大才行。因此,可在多项式的空间中找出一些正交的基函数(orthonormal basis function),这是一些比较特别的多项式,叫勒让德多项式(Legendre Polynomials),再用这些多项式这样做特征变换 ( 1 , L 1 ( x ) , L 2 ( x ) , … , L Q ( x ) ) (1,L_1(x),L_2(x),\ldots,L_Q(x)) (1,L1(x),L2(x),,LQ(x))即可。前5个勒让德多项式如下图:

2.2 正则化与VC理论

在最小化augmented error的时候,尽管它与带约束最值问题是等价的,但在计算时,其实并没有真正的将 w \mathbf{w} w限制在 H ( C ) \mathcal{H}(C) H(C)中。那么正则化究竟是怎么发生的?

可以从另一个角度看augmented error:
E aug ( w ) = E in ( w ) + λ N w T w E_\text{aug}(\mathbf{w})=E_\text{in}(\mathbf{w})+\dfrac{\lambda}{N}\mathbf{w}^T\mathbf{w} Eaug(w)=Ein(w)+NλwTw
若记 w T w \mathbf{w}^T\mathbf{w} wTw Ω ( w ) \Omega(\mathbf{w}) Ω(w),它度量的是某个假设 w \mathbf{w} w的复杂度。而在VC Bound中
E out ( w ) ≤ E in ( w ) + Ω ( H ) E_\text{out}(\mathbf{w})\le E_\text{in}(\mathbf{w})+\Omega(\mathcal{H}) Eout(w)Ein(w)+Ω(H)
Ω ( H ) \Omega(\mathcal{H}) Ω(H)度量的是整个 H \mathcal{H} H的复杂度。如果 λ N Ω ( w ) \dfrac{\lambda}{N}\Omega(\mathbf{w}) NλΩ(w) Ω ( H ) \Omega(\mathcal{H}) Ω(H)有某种关联, E aug E_\text{aug} Eaug就可以直接作为 E out E_\text{out} Eout的代理,不需要再通过做好 E in E_\text{in} Ein来做好 E out E_\text{out} Eout,而同时,又可以享受整个 H \mathcal{H} H的高度灵活性。

再换个角度,原本对于整个 H \mathcal{H} H d VC ( H ) = d ~ + 1 d_\text{VC}(\mathcal{H})=\tilde{d}+1 dVC(H)=d~+1,而现在相当于只考虑 H ( C ) \mathcal{H}(C) H(C)中的假设,也就是说VC维变成了 d VC ( H ( C ) ) d_\text{VC}(\mathcal{H}(C)) dVC(H(C))。可以定义一个“有效VC维” d EFF ( H , A ) d_\text{EFF}(\mathcal{H},\mathcal{A}) dEFF(H,A),只要 A \mathcal{A} A中做了正则化,有效VC维就会比较小。

2.3 更一般的正则项

有没有更一般的正则项 Ω ( w ) \Omega(\mathbf{w}) Ω(w)?该如何选择呢?有以下建议:

  • 与目标有关(target-dependent),如果知道目标函数的一些性质,就可以写出来,比如我们预先知道目标函数是接近于偶函数的,那就可以选取 ∑ 1 [ q  is odd ] w q 2 \sum \mathbf{1}_{[q \text{ is odd}]} w^2_q 1[q is odd]wq2
  • 合理的(plausible),可以选平滑的或简单的,如为了稀疏性而选L1正则项 ∑ ∣ w q ∣ \sum\vert w_q \vert wq,下文会说明;
  • 友好的(friendly),即容易优化,如L2正则项 ∑ w q 2 \sum w_q^2 wq2
  • 就算选的正则项不好,也没有关系,因为可以靠 λ \lambda λ来调节,最差也就是相当于没有加入正则项。

L1正则项如下图:

它是凸的,但不是处处可微,加入它之后,解具有稀疏性。如果在实际中需要有稀疏解,L1就会很有用。

λ \lambda λ要怎么选呢?可根据 E out E_\text{out} Eout的情况选出的最优 λ \lambda λ,示例如下(加粗点为最优 λ \lambda λ):

从图中可以看到,噪声越大,越需要增加regularization。

但一般情况下,噪声是未知的,该如何选择合适的 λ \lambda λ

3 验证(Validation)

3.1 验证集

λ \lambda λ该如何选择?我们完全不知道 E out E_\text{out} Eout,并且也不能直接通过 E in E_\text{in} Ein做选择。如果有一个从来没被使用过的测试集就好了,这样就可以根据测试集进行选择:
m ∗ = arg ⁡ min ⁡ 1 ≤ m ≤ M ( E m = E test ( A m ( D ) ) ) m^*=\mathop{\arg\min}\limits_{1\le m\le M} \left( E_m=E_\text{test}(\mathcal{A}_m(\mathcal{D})) \right) m=1mMargmin(Em=Etest(Am(D)))
并且,这样做是有泛化保证的(Hoeffding):
E out ( g m ∗ ) ≤ E test ( g m ∗ ) + O ( log ⁡ M N test ) E_\text{out}(g_{m^*})\le E_\text{test}(g_{m^*})+O(\sqrt{\dfrac{\log M}{N_\text{test}}}) Eout(gm)Etest(gm)+O(NtestlogM )
但哪里有真正测试集?只能折中地从 D \mathcal{D} D划分出一部分数据作为验证集 D val ⊂ D \mathcal{D}_\text{val}\subset \mathcal{D} DvalD了,当然,也要求它是在过去从未被 A m \mathcal{A}_m Am使用过的。

划分验证集 D val \mathcal{D}_\text{val} Dval的过程如下:

用训练集得到的 g m − g^-_m gm,也可以有泛化保证:
E out ( g m − ) ≤ E val ( g m − ) + O ( log ⁡ M K ) E_\text{out}(g_m^-)\le E_\text{val}(g_m^-)+O(\sqrt{\dfrac{\log M}{K}}) Eout(gm)Eval(gm)+O(KlogM )
做验证时的一般流程如下:

可以看到,在用验证集选出最好的模型 g m ∗ − g^-_{m^*} gm后,还是要用所有的数据再训练一个最好的模型 g m ∗ g_{m^*} gm出来,一般来说这次训练得到的 g m ∗ g_m^* gm会由于训练数据量的更大而有更低的 E out E_\text{out} Eout,见下图:

图中最下面的虚线为 E out E_\text{out} Eout。可以看到, K K K不能过大或过小,如果 K K K过小,虽然 g m − ≈ g m g_m^-\approx g_m gmgm,但 E val E_\text{val} Eval E out E_\text{out} Eout会差别很大,而如果 K K K过大,尽管 E val ≈ E out E_\text{val}\approx E_\text{out} EvalEout,但会使 g m − g_m^- gm g m g_m gm差很多。

我们真正想要做到的是

E out ( g ) ≈ E out ( g − ) ≈ E val ( g − ) E_\text{out}(g)\approx E_\text{out}(g^-)\approx E_\text{val}(g^-) Eout(g)Eout(g)Eval(g)

第一个约等号要求 K K K较小,第二个约等号要求 K K K较大,因此必须选一个合适的 K K K,按经验法则可选 K = N 5 K=\dfrac{N}{5} K=5N

3.2 留一交叉验证(LOOCV)

如果让 K = 1 K=1 K=1,即只留一个样本 n n n作为验证集,记
E val ( n ) ( g n − ) = err ( g n − ( x n ) , y n ) = e n E_\text{val}^{(n)}(g_n^-)=\text{err}(g_n^-(\mathbf{x}_n),y_n)=e_n Eval(n)(gn)=err(gn(xn),yn)=en
但单个 e n e_n en无法告诉我们准确的信息,要想办法对所有可能的 E val ( n ) ( g n − ) E_\text{val}^{(n)}(g_n^-) Eval(n)(gn)取平均。可以用留一交叉验证(Leave-One-Out Cross Validation):
E loocv ( H , A ) = 1 N ∑ n = 1 N e n = 1 N ∑ n = 1 N err ( g n − ( x n ) , y n ) E_\text{loocv}(\mathcal{H},\mathcal{A})=\dfrac{1}{N}\sum\limits_{n=1}^{N} e_n=\dfrac{1}{N} \sum\limits_{n=1}^{N} \text{err}(g_n^- (\mathbf{x}_n),y_n) Eloocv(H,A)=N1n=1Nen=N1n=1Nerr(gn(xn),yn)
我们希望的是有 E loocv ( H , A ) ≈ E out ( g ) E_\text{loocv}(\mathcal{H},\mathcal{A})\approx E_\text{out}(g) Eloocv(H,A)Eout(g)。可作证明:
E D E loovc ( H , A ) = E D 1 N ∑ n = 1 N e n = 1 N ∑ n = 1 N E D e n = 1 N ∑ n = 1 N E D n E ( x n , y n ) err ( g n − ( x n ) , y n ) = 1 N ∑ n = 1 N E D n E out ( g n − ) = 1 N ∑ n = 1 N E out ‾ ( N − 1 ) = E out ‾ ( N − 1 ) \begin{aligned} &\mathop{\mathcal{E}}\limits_{\mathcal{D}} E_\text{loovc}(\mathcal{H},\mathcal{A})\\ =& \mathop{\mathcal{E}}\limits_{\mathcal{D}}\dfrac{1}{N}\sum\limits_{n=1}^{N} e_n\\ =&\dfrac{1}{N} \sum\limits_{n=1}^{N} \mathop{\mathcal{E}}\limits_{\mathcal{D}} e_n\\ =&\dfrac{1}{N} \sum\limits_{n=1}^{N} \mathop{\mathcal{E}}\limits_{\mathcal{D}_n} \mathop{\mathcal{E}}\limits_{(\mathbf{x}_n,y_n)} \text{err}(g_n^-(\mathbf{x}_n),y_n)\\ =&\dfrac{1}{N} \sum\limits_{n=1}^{N} \mathop{\mathcal{E}}\limits_{\mathcal{D}_n} E_\text{out}(g_n^-)\\ =&\dfrac{1}{N} \sum\limits_{n=1}^{N} \overline{E_\text{out}}(N-1)\\ =& \overline{E_\text{out}}(N-1) \end{aligned} ======DEEloovc(H,A)DEN1n=1NenN1n=1NDEenN1n=1NDnE(xn,yn)Eerr(gn(xn),yn)N1n=1NDnEEout(gn)N1n=1NEout(N1)Eout(N1)

由于 E loovc ( H , A ) E_\text{loovc}(\mathcal{H},\mathcal{A}) Eloovc(H,A)的期望会告诉我们一些关于 E out ( g − ) E_\text{out}(g^-) Eout(g)的期望的信息,因此也叫作 E out ( g ) E_\text{out}(g) Eout(g)的“几乎无偏估计”(almost unbiased estimate)。

用手写数字识别——对数字是否为1进行分类——看看效果,两个基础特征为对称性和平均强度(average intensity),对它们进行特征变换(增加特征数量),再分别用 E in E_\text{in} Ein E loocv E_\text{loocv} Eloocv进行参数选择(参数是变换后的特征个数),结果如下:

如果将 E out E_\text{out} Eout E in E_\text{in} Ein E loocv E_\text{loocv} Eloocv分别随特征数变化而变化的情况画出来,如图:

3.3 V V V-折交叉验证

如果有1000个点,做留一交叉验证就要计算1000次 e n e_n en,每次计算还要用999个样本做训练,除了少数算法(如线性回归,它有解析解),在大多数情况下会非常耗时间。另一方面,由上一节最后可看到,由于 E loocv E_\text{loocv} Eloocv是在单个点上做平均,结果会有跳动,不够稳定。因此,在实际中,loocv并不是很常用。

在实际中,更常用的是 V V V折交叉验证( V V V-Fold Cross Validation),即将 D \mathcal{D} D随机分为 V V V等分,轮流用每一份做验证,用剩下的 V − 1 V-1 V1份做训练,在实际中一般常取 V = 10 V=10 V=10,如下图:

这样能计算出
E cv ( H , A ) = 1 V ∑ v = 1 V E val ( v ) ( g v − ) E_\text{cv}(\mathcal{H}, \mathcal{A})=\dfrac{1}{V}\sum\limits_{v=1}^{V} E_\text{val}^{(v)}(g_v^-) Ecv(H,A)=V1v=1VEval(v)(gv)
再用它对参数做选择:
m ∗ = arg ⁡ min ⁡ 1 ≤ m ≤ M ( E m = E cv ( H m , A m ) ) m^*=\mathop{\arg\min}\limits_{1\le m\le M} \left( E_m=E_\text{cv}(\mathcal{H}_m, \mathcal{A}_m) \right) m=1mMargmin(Em=Ecv(Hm,Am))
值得注意的是,由于验证过程也是在做选择,它的结果依旧会比最后的测试结果乐观一些。因此,最后重要的是测试的结果,而非找出来的最好的验证的结果。

4 三个学习的原则

这里介绍三个学习的原则。

4.1 奥卡姆剃刀

首先是奥卡姆剃刀(Occam’s Razor)。

An explanation of the data should be made as simple as possible, but no simpler.

–Albert Einsterin (?)

这句话传说是爱因斯坦所说,但没有证据。最早可追溯到奥卡姆的话:

entia non sunt multiplicanda praeter necessitatem (entities must not be multiplied beyond necessity)

–William of Occam (1287-1347)

在机器学习中,这是说能拟合数据的最简单的模型往往是最合理的。

什么叫简单的模型呢?对于单个假设 h h h来说,要求 Ω ( h ) \Omega(h) Ω(h)较小即参数较少,对于一个模型(假设集) H \mathcal{H} H来说,要求 Ω ( H ) \Omega(\mathcal{H}) Ω(H)较小即它没包含太多可能的假设。这两者是相关的,比如 ∣ H ∣ \vert \mathcal{H} \vert H规模是 2 ℓ 2^\ell 2,那么其实只需要 ℓ \ell 个参数就可以描述所有的 h h h,因此小的 Ω ( H ) \Omega(\mathcal{H}) Ω(H)也就意味着小的 Ω ( h ) \Omega(h) Ω(h)

从哲学意义上说,越简单的模型,“拟合”发生的概率越小,如果真的发生了,那就说明数据中可能真的有一些比较重要的规律。

4.2 抽样偏差

第二个是要注意抽样偏差(Sampling Bias)。

如果数据的抽样过程存在偏差,那么机器学习也会产生一个有偏差的结果。

在讲解VC维时,提到过一个前提条件,就是训练数据和测试数据需要来自同一个分布。当无法满足时,经验法则是,尽可能让测试环境和训练环境尽可能匹配。

4.3 数据窥探

第三是要注意数据窥探(Data Snooping)。

如果你通过观察,发现数据比较符合某个模型,进而选用该模型,这是比较危险的,因为相当于加入了你大脑中的模型的复杂度。

在任何使用数据的过程中,其实都是间接窥探到了数据。在窥探了数据的表现后,做任何决策,都会引入“大脑”复杂度。

比如在做scaling时,不能把训练集和测试集放在一起做scaling,而只能对训练集做。

其实在机器学习的前沿研究中,也存在类似的情况。比如第一篇论文发现了 H 1 \mathcal{H}_1 H1会在 D \mathcal{D} D上表现较好,而第二篇论文提出了 H 2 \mathcal{H}_2 H2,它在 D \mathcal{D} D上比 H 1 \mathcal{H}_1 H1表现得更好(否则就不会发表),第三篇也如此……如果将所有论文看作一篇最终版的论文,那么真正的VC维其实是 d vc ( ∪ m H m ) d_\text{vc}(\cup_m \mathcal{H}_m) dvc(mHm),它会非常大,泛化会非常差。这是因为其实在每一步过程中,作者都通过阅读前人的文献而窥探了数据。

因此在做机器学习时,要审慎地处理数据。要避免用数据来做一些决策,即最好事先就将领域知识加入到模型中,而不是在观察了数据后再把一些特性加入模型中。另外,无论是在实际操作中,还是在看论文过程中,或者是在对待自己的结果时,都要时刻保持怀疑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值