机器学习基石——VC维浅谈

VC维这个概念很重要,关于机器学习中预防过拟合的一些操作都可以用这个概念解释。http://www.flickering.cn/machine_learning/2015/04/vc%E7%BB%B4%E7%9A%84%E6%9D%A5%E9%BE%99%E5%8E%BB%E8%84%89/中对VC维有非常详细的介绍,本文是对其的一些整理与理解。


了解VC维之前,需要知道一个Heoffding不等式

P\left ( \left | \frac{1}{m}\sum_{i=1}^{m}Z_i-\mu \right |\geq \varepsilon \right )\leq 2 e^{\frac{-2m\varepsilon ^2}{\left ( b-a \right )^2}} ,或者P\left ( \left | \frac{1}{m}\sum_{i=1}^{m}Z_i-\mu \right |> \varepsilon \right )\leq 2e^{\frac{-2m\varepsilon ^2}{\left ( b-a \right )^2}}

大于等于和大于都可以这一点,是由Heoffding不等式推导中Morkov定理特性决定的。

其中,Z_1,Z_2,...Z_m是独立同分布的随机变量,E\left ( \bar{Z} \right )=\mu\bar{Z}=\frac{1}{m}\sum_{i=1}^{m}Z_i\varepsilon > 0,且对于所有Z_i,满足P\left [ a\leq Z_i\leq b \right ]=1。Heoffding不等式推导见:https://blog.csdn.net/qq_29508953/article/details/86666220


对于机器学习算法:H 是该机器学习算法的假设空间(参数空间); h属于H,h表示假设空间中的一种方案;f 表示理想方案;g属于H,g 表示我们在训练样本上利用某种算法求解的假设,这种算法的目标是使得g逼近理想方案f。

上图中

Eout(h):表示某个方案h在总体样本空间中损失的期望,称作expected loss。

Ein(h):表示某个方案h在N个训练样本上的平均损失,称作expirical loss。

(这里用的是0–1 loss,即对于某个样本判断正确记为0,判断错误记为1,所以Eout(h)和Ein(h)都介于0到1之间)

当假设h固定时,可以将Heoffding不等式写为:P\left ( \left | E_{in}\left ( h \right )- E_{out}\left ( h \right )\right | \geq \varepsilon \right )\leq 2e^{-2N\varepsilon ^2};由于Ein(h)分布在0-1之间,所以(b-a)^2=1。

对于参数空间H,当其中有M个假设时,那么可以推出下面不等式

\left ( 1 \right )

根据不等式(1)可得出:如果假设空间H的size M是有限的,当N足够大时,那么对假设空间中任意一个h,Eout(h)约等于Ein(h)。要使得到的模型可行,就只要令算法可以在假设空间H中,挑选出一个h,使得Ein(h)接近于0,那么Eout(h)也接近于0。Ein(h)接近于0相当于模型train loss接近0,而Eout(h)接近于0相当于模型预测loss接近于0,这样的模型意味着在训练集表现好,在真实环境里也表现好。

对于假设空间H的size M:如果M很小,会导致不容易找到一个g,使得Ein(g)约等于0(模型太简单拟合能力太弱);如果M太大,虽然相对容易在其中找到一个g,使得Ein(g)约等于0,但是不容易保证Ein和Eout比较接近。所以假设空间H的大小M很关键。


对于一个假设空间H,它的size M可能是无穷大的,但是在这些假设中有一些假设可以归为同一类,即对于固定的训练样本集这些假设产生了同样的结果。例如,我们要利用平面上的一条直线来划分一个点X1,假设空间H是所有的直线,它的size M是无限多的,但是实际上可以将这些直线分为两类,一类是把x1判断为正例的,另一类是把x1判断为负例的。如下图所示:

我们增加二维空间中点的个数,当空间中有两个点时,假设空间H中的直线可分为4类。

当空间中有三个点时,假设空间中的直线可分为7类。(为什么不是8类?因为要使x2在下面,x1,x3在上面只有曲线可以做到)

以此类推,可以发现一定的规律,当空间中有N个点时,假设空间中的直线可分为:N+1+N-1+N-2+...+1=0.5N^2+0.5N+1。同时也可发现,当假设空间H确定时,假设空间中假设种类数目与训练样本数N相关。

我们可以用m_H\left ( N \right )表示在固定假设空间H以及N个训练样本下,假设空间中假设种类的数目。那么不等式\left ( 1 \right )中一些同种类的假设就可以记为同一个。

基于以上观点,不等式(1)可以演化为不等式(2):

\begin{align*} & P( \exists h \in H s.t. \left | E_{in}\left ( h\right )-E_{out}\left ( h \right ) \right |> \varepsilon ) \\ & = P\left ( \left | E_{in}\left ( h_1 \right )-E_{out}\left ( h_1 \right ) \right | > \varepsilon \cup \left | E_{in}\left ( h_2 \right )-E_{out}\left ( h_2 \right ) \right | > \varepsilon \cup \cdots \cup \left | E_{in}\left ( h_{m_H\left ( N \right )} \right )-E_{out}\left ( h_{m_H\left ( N \right )} \right ) \right | > \varepsilon \right )\\ &\leq P(\left | E_{in}\left ( h_1 \right )-E_{out}\left ( h_1 \right ) \right |> \varepsilon ) + P(\left | E_{in}\left ( h_2 \right )-E_{out}\left ( h_2 \right ) \right |> \varepsilon) + \cdots + P(\left | E_{in}\left ( h_{m_H\left ( N \right )} \right )-E_{out}\left ( h_{m_H\left ( N \right )} \right )\right | > \varepsilon )\\ &\leq 2m_H\left ( N \right )e^{-2\varepsilon ^2N} \end{align*}\left ( 2 \right )


Break Point与Shatter

Shatter:当假设空间H作用于N个input的样本集时,可以产生N个样本的每一种情况,就称:这N个inputs被H给shatter掉了;例如对于2分类,当m_H\left ( N \right )=2^N时,则称N个样本被H给shatter了。

Break point:令假设空间H作用于样本空间中任何N 个inputs,令N从1出发慢慢变大,当增大到k时,任何k个inputs的m_{H}\left ( k \right )< 2^k,则我们说k是假设空间H的break point。且对于任何N >= k个inputs而言,H都没有办法再shatter他们了。


我们将m_H\left ( N \right )的上界设为B\left ( N,k \right ),表示当break point = k时,m_H\left ( N \right )的最大值。

下面我们推导B\left ( N,k \right )

B(N,1)=1;当N < k,B(N,k)=2^N ;当N=k,B(N,k)<2^N-1

B(2,2)=3。因为break point=2,任意两个点都不能被shatter,m_H\left ( N \right )肯定小于4,所以B(2,2)=3。
B(3,2)=4。当(x1,x2)再加入一个点扩展为(x1,x2,x3)时,(x1,x2)的三种情况中有部分被复制了(x3可以取两个值),有部分没有被复制(x3只能取一个值),设被复制的数量为a,未被复制的数量为b,则B(3,2) = 2a + b,且a+b≤ B(2,2)。由于(x1,x2,x3)不能shatter任意2个样本,所以(x1,x2)不能shatter任意1个:因为如果(x1,x2)shatter了任意1个,那么对于被复制的那一部分(x3可以取两个值0或1),加入x3后就可以产生4种情况,这样(x1,x2,x3)就能shatter其中2个样本了,所以a必须小于等于B(2,1)。所以B(3,2)=2a+b≤ B(2,2)+B(2,1)
B(4,3)= 2a + b <= B(3,3) + B(3,2)。
对于任意N>k,类推可以得到,B(N,k) ≤ B(N−1,k)+B(N−1,k−1)

最后利用数学归纳法,可以证明得到下面的bounding function(N>k):

m_{H}\left ( N \right )\leq B\left ( N,k \right )\leq \sum_{i=0}^{k-1}C_{N}^{i}

https://www.cnblogs.com/ymingjingr/p/4290983.html中有具体证明,但是其中的公式6-11最后一个i应该改为i-1。

这个式子显然是多项式的,多项式的最高幂次项为:N^(k–1)。

带入公式(2)可得公式(3)

\begin{align*} & P(\exists h \in H s.t. \left | E_{in}\left ( h\right )-E_{out}\left ( h\right ) \right |> \varepsilon ) \\ &\leq 2m_H\left ( N \right )e^{-2\varepsilon ^2N} \\ & \leq 2\left (\sum_{i=0}^{k-1}C_{N}^{i} \right )e^{-2\varepsilon ^2N} \end{align*}\left ( 3 \right )


以上是为了简要理解推导思想,其实公式(2)和公式(3)是存在问题的。

在于公式(2)中

P( \exists h \in H s.t. \left | E_{in}\left ( h\right )-E_{out}\left ( h \right ) \right |> \varepsilon ) \\ & = P\left ( \left | E_{in}\left ( h_1 \right )-E_{out}\left ( h_1 \right ) \right | > \varepsilon \cup \left | E_{in}\left ( h_2 \right )-E_{out}\left ( h_2 \right ) \right | > \varepsilon \cup \cdots \cup \left | E_{in}\left ( h_{m_H\left ( N \right )} \right )-E_{out}\left ( h_{m_H\left ( N \right )} \right ) \right | > \varepsilon \right )

这一部分是不对的。

原因是Ein只作用于N个样本,所以假设空间H的假设种类为有限的m_H\left ( N \right ),Ein种类也被限制在m_H\left ( N \right )内;而Eout作用的是无穷的样本空间,对于假设空间H来说,当假设h发生一点点变化时,Eout的值就改变了,所以Eout有无限种。

公式(2)等号后面这一部分实际上应该是各种\left | E_{in}\left ( h_i \right )-E_{out}\left ( h_i \right ) \right | > \varepsilon的并集,根据Ein和Eout种类个数分析,hi的数量应该也是无限的,而不是只有m_H\left ( N \right )种。

为了解决这个问题,我们将Eout 替换为验证集(verification set) 的Ein’,来评估这个机器学习的算法是否可行。 推导过程比较复杂,具体见https://blog.csdn.net/qq_29508953/article/details/86776670

下面才是正确版推导过程:

\left ( 4 \right )

针对公式4,可以看出当N足够大,并且N逐渐增大时,指数式的下降会比m_H\left ( 2N \right )多项式的增长速度更快,所以不等式右边可以趋向0。也就是说肯定存在一个假设h(h属于假设空间H)使得Ein(h)非常接近于Eout(h)。


VC维概念

一个假设空间H的VC 维指的是这个H最多能够shatter掉的点的数量,记为d_{vc}\left ( h \right )

明显d_{vc}\left ( h \right )+1=break point

VC维的大小只与模型和假设空间有关。

公式4可以进一步写为:

P\left [ \exists h\in H \ s.t. \ \left | E_{in}\left ( h \right )-E_{out}\left ( h \right ) \right |> \epsilon \right]\leq 4\left (\sum_{i=0}^{d_{vc}\left ( h \right )}C_{2N}^{i} \right )e^ {- \frac{1}{8}\varepsilon ^ 2 N}\left ( 5 \right )


根据公式5可以总结:

要想让机器学到东西,并且学得好,有2个条件:

  • H的VC维是有限的,这样不等式5右边才能有边界,(VC维的大小只与模型和假设空间有关,所以要挑一个合适的模型设定合适的参数空间);N足够大(对于特定的d_vc而言),这样才能保证不等式的边界不会太大,(数据集优秀)。这两个条件可以使得Ein接近Eout。
  • 算法A有办法在H中顺利的挑选一个使得Ein最小的g,(good A)。这个条件确保Ein在给定H下尽可能小。

同时,从上式可以看出拟合能力和泛化能力是互相制约的。

  • 当VC维较大时,说明H可以shatter较多数据,说明模型拟合能力较好;
  • 但是VC维过大又会导致不等式5右侧边界过大,导致Ein和Eout差距过大,造成过拟合现象。

深度学习与VC维

(这部分比较简单,直接摘录了)

对于神经网络,其VC维的公式为:d_{vc}=O\left ( D*V\right )

其中V表示神经网络中神经元的个数,D表示weight的个数。(注意:此式是一个较粗略的估计,深度神经网络目前没有明确的vc bound)

举例来说,一个普通的三层全连接神经网络:input layer是1000维,hidden layer有1000个nodes,output layer为1个node,则它的VC维大约为O(1000*1000*1000)。

可以看到,神经网络的VC维相对较高,因而它的表达能力非常强(可以shatter很多数据),可以用来处理任何复杂的分类问题。要充分训练该神经网络,所需样本量为10倍的VC维。如此大的训练数据量,是不可能达到的。所以在20世纪,复杂神经网络模型在out of sample的表现不是很好,容易overfit。

但现在为什么深度学习的表现越来越好。原因是多方面的,主要体现在:

  • 通过修改神经网络模型的结构,以及提出新的regularization方法,使得神经网络模型的VC维相对减小了。例如卷积神经网络,通过修改模型结构(局部感受野和权值共享),减少了参数个数,降低了VC维。2012年的AlexNet,8层网络,参数个数只有60M;而2014年的GoogLeNet,22层网络,参数个数只有7M。再例如dropout,drop connect,denosing等regularization方法的提出,也一定程度上增加了神经网络的泛化能力。
  • 训练数据变多了。随着互联网的越来越普及,相比于以前,训练数据的获取容易程度以及量和质都大大提升了。训练数据越多,Ein越容易接近于Eout。而且目前训练神经网络,还会用到很多data augmentation方法,例如在图像上,剪裁,平移,旋转,调亮度,调饱和度,调对比度等都使用上了。
  • 除此外,pre-training方法的提出,GPU的利用,都促进了深度学习。

但即便这样,深度学习的VC维和VC Bound依旧很大,其泛化控制方法依然没有强理论支撑。但是实践又一次次证明,深度学习是好用的。所以VC维对深度学习的指导意义,目前不好表述,有一种思想建议,深度学习应该抛弃对VC维之类概念的迷信,尝试从其他方面来解释其可学习型,例如使用泛函空间(如Banach Space)中的概率论。



 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值