机器为何可以学习?

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

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

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

本文是第2部分,对应原课程中的4-8讲机器学习

本部分的主要内容:ide

  • 用案例引出学习可行性的疑问;
  • 详细介绍VC维理论,它给出了机器学习的可靠性保证;
  • 介绍偏差的度量,以及对偏差权重不一样的状况的处理方法。

1 学习可行性的疑问

先来一个小学奥数题/公务员考试题:函数

其实这个题没有标准答案,如下两种解答都是对的:学习

  • 对称为\(+1\),非对称为\(-1\),所以答案是\(+1\)
  • 最左上角的格子白色为\(+1\),黑色为\(-1\),所以答案是\(-1\)

所以,选择不一样的规则,你会得到不一样的答案。那么,若是给你一些历史数据,机器学习出某种规则,是否也会遇到这样的状况呢?优化

2 机器学习的可靠性保证

2.1 Hoeffding不等式

来看另外一个问题:有一个罐子,里面装有许许多多黄色和绿色的小球,该如何估计黄球的比例?spa

很简单,抽样就好了。抽出一部分样本,计算获得样本中的黄球比例\(\nu\),用这个比例做为罐子中的黄球比例\(\mu\)的估计便可。这样的估计准不许呢?在统计学中,有Hoeffding不等式给出准确率的界限:设计

\[\mathbb{P}[\vert\nu-\mu\vert>\epsilon]\le 2\exp{(-2\epsilon^2 N)} \]

其中\(N\)为抽样的样本个数。这个式子的意思是,\(\nu\)\(\mu\)相差较远的几率会有一个上限,在大样本下,这个上限会比较小,所以\(\nu=\mu\)能够叫作几率近似正确(PAC,probably approximately correct)。3d

2.2 机器学习中的Hoeffding不等式

如今将这个过程类比到机器学习中。罐子中的小球对应于\(\mathcal{X}\)中的单个数据\(\mathbf{x}\),给定假设集中的一个假设\(h\),罐子中黄球的比例就对应于\(\mathcal{X}\)中使得\(h(\mathbf{x})=f(\mathbf{x})\)\(\mathbf{x}\)的比例。如今抽取出一部分样本,这个样本对应于现有的数据集\(\mathcal{D}\),咱们能够很容易地知道对\(\mathcal{D}\)中每个数据\((\mathbf{x}_n,y_n)\)是否有\(h(\mathbf{x}_n)=y_n\),若相等,对应的小球为黄色,反之为绿色。咱们的目的,是要知道在整个\(\mathcal{X}\)中知足\(h(\mathbf{x})=f(\mathbf{x})\)\(\mathbf{x}\)的比例有多少。

\(N\)足够大,且\(\mathbf{x}_n\)为i.i.d.,对于某个固定的\(h\)来讲,就能够用已知的\(E_{\text{in}}(h)=\dfrac{1}{N}\sum\limits_{n=1}^{N} \mathbf{1}_{[h(\mathbf{x}_n)\ne y_n]}\)去推断\(E_{\text{out}}(h)=\mathop{\mathcal{E}}\limits_{\mathbf{x}\sim P}\mathbf{1}_{[h(\mathbf{x})\ne f(\mathbf{x})]}\),从而判断该\(h\)的表现如何,以下图:

根据Hoeffding不等式,就是

\[\mathbb{P}[\vert E_{\text{in}}(h)-E_{\text{out}}(h)\vert>\epsilon]\le 2\exp{(-2\epsilon^2 N)} \]

若是\(E_{\text{in}}(h)\)\(E_{\text{out}}(h)\)足够接近,而且\(E_{\text{in}}(h)\)足够小,这就能保证\(E_{\text{out}}(h)\)足够小,也就能判断出对于抽样过程\(P\),有\(h\approx f\)

可是,这只能用来判断某个\(h\)是否足够好。若是如今是用算法\(\mathcal{A}\)从假设集\(\mathcal{H}\)中选出一个\(h\),再套用上面的不等式,就会有问题。试想一下,假设有150我的,每人丢5次硬币,就有超过99%的几率会出现有某个丢5次硬币都是正面的人,这能说明他的丢硬币技术比其余人高吗?若是选择他做为咱们的“\(g\)”,能保证他之后再去丢硬币,获得正面的几率也比其余人更大吗?

同理,若是是从\(\mathcal{H}\)中选出一个在样本\(\mathcal{D}\)内偏差最小的\(g\),能保证它在\(\mathcal{D}\)外也是更好的吗?想要获得这样的保证,还需对不等式作一些修正。

对每一个\(h\),均可能会有一些\(\mathcal{D}\),使得\(h\)在它上面的\(E_{\text{in}}(h)\)和真正的\(E_{\text{out}}(h)\)相差很大,把这种\(\mathcal{D}\)称做“坏的”,Hoeffding不等式本质上是保证抽到坏的\(\mathcal{D}\)的几率有一个上限。记\(\vert\mathcal{H}\vert=M\),即共有\(M\)\(h\),咱们想要保证的是无论最后\(\mathcal{A}\)选出了哪一个,\(\mathcal{D}\)是“坏的”的几率都有较小的上限,所以,要计算的应该是对至少一个\(h\)来讲\(\mathcal{D}\)是“坏的”的几率:

\[\begin{aligned} &\mathbb{P}_{\mathcal{D}}[(\textbf{BAD } \mathcal{D} \text{ for } h_1) \textbf{ or } (\textbf{BAD } \mathcal{D} \text{ for } h_2) \textbf{ or } \ldots \textbf{ or } (\textbf{BAD } \mathcal{D} \text{ for } h_M) ]\\ \le& \mathbb{P}_{\mathcal{D}}[\textbf{BAD } \mathcal{D} \text{ for } h_1] + \mathbb{P}_{\mathcal{D}}[\textbf{BAD } \mathcal{D} \text{ for } h_2] +\ldots+\mathbb{P}_{\mathcal{D}}[\textbf{BAD } \mathcal{D} \text{ for } h_M]\\ \le& 2\exp{(-2\epsilon^2 N)}+2\exp{(-2\epsilon^2 N)}+\ldots+2\exp{(-2\epsilon^2 N)}\\ =& 2M\exp{(-2\epsilon^2 N)} \end{aligned} \]

这才是\(\mathcal{A}\)选出来的\(h\)\(E_{\text{in}}(h)\)\(E_{\text{out}}(h)\)距离的上限。但在上面的过程当中,由于对事件的并集直接用了加的运算,这个上限被放得太大了,因为不一样的\(h\)对应的“坏的”\(\mathcal{D}\)极可能有很大重叠,所以真实的上限应该要小得多。如图:

另外,\(M\)若是是有限的,根据上式,咱们仍是能够经过增大\(N\)来保证\(E_{\text{in}}(h)\)\(E_{\text{out}}(h)\)足够接近,但若是\(M\)是无限的呢?如在PLA中,系数的取值就能够是无限多个,所以PLA的\(M\)是无穷大的。

2.3 VC维

\(M\)为无穷大时,仍是有办法的。尽管PLA的\(M\)是无穷大,但其实,咱们能够对它的\(\mathcal{H}\)中的元素进行分类,只要样本个数是有限的,它的类别就是有限的。好比在只有一个样本的状况中,二维PLA的\(\mathcal{H}\)中的元素(就是二维平面上的全部直线)能够简单分为两类,一类是把该样本点分为正的,一类是把该样本点分为负的:

而在两个样本的状况中,\(\mathcal{H}\)中的元素能够分为4类:

三个样本时可分为8类:

但若3个点共线,那么只有6类:

而当有4个样本时,\(\mathcal{H}\)中的元素最多只能分红14类:

这说明,在PLA中,有\(N\)个样本时,有效的\(M\)会小于等于\(2^N\)

接下来,引入几个概念:

  • 二分(Dichotomies):对\(N\)个样本,每一个样本都有正负两种可能,将全部样本组成的每一种可能称为一个dichotomy,dichotomies的集合可记为\(\mathcal{H}(\mathbf{x}_1, \mathbf{x}_2, \ldots,\mathbf{x}_N)\),显然,集合中元素个数的上限是\(2^N\)
  • 成长函数(Growth Function):定义成长函数\(m_{\mathcal{H}}(N)=\max\limits_{\mathbf{x}_1, \mathbf{x}_2, \ldots,\mathbf{x}_N \in \mathcal{X}} \vert \mathcal{H}(\mathbf{x}_1, \mathbf{x}_2, \ldots,\mathbf{x}_N) \vert\),它的上限是\(2^N\),对于大多数模型(如二维感知机)的\(\mathcal{H}\)来讲,\(m_{\mathcal{H}}(N)\)\(2^N\)小,仅为多项式大小;
  • 打散(Shatter):若是\(\mathcal{H}\)能够彻底实现\(N\)个样本的\(2^N\)种dichotomies,则称\(N\)个点可被\(\mathcal{H}\)打散;
  • 突破点(Break Point):若\(k\)个点不管如何也没法被\(\mathcal{H}\)打散,则称\(k\)\(\mathcal{H}\)的break point,根据定义,全部比\(k\)大的整数也都会成为break points,对于二维感知机来讲,从4开始就是它的break point。

接下来就是要找到,break point和\(m_{\mathcal{H}}(N)\)的关系。

咱们继续引入界限函数(Bounding Function)的概念:\(B(N,k)\),它是当最小的break point为\(k\)时的最大可能\(m_{\mathcal{H}}(N)\)。那么,该如何计算它或者它的上限?

首先,当\(k=2\)时,表示任意两个点都不能被打散,所以当\(N=2\)时有\(B(2,2)=3\),即最多能列举出3种dichotomies(4种就是这两个点被打散了),当\(N=3\)时有\(B(3,2)=4\)(穷举法可知)。而当\(k=1\)时,因为任何一个点都不能被打散,所以只能有一种dichotomy,即\(B(N,1)=1\)。另外,若是\(k>N\),因为小于\(k\)个样本点都能被打散,所以会有\(B(N,k)=2^N\)。而若是\(N=k\),那么只需在\(2^N\)个被打散的点中拿掉一种dichotomy,就能知足这\(N\)个点不被打散的概念了,所以有\(B(N,k)=2^N-1\)

到目前为止,在下面这张函数表中还有一部分没有计算:

不妨先来看\(B(4,3)\)该如何计算。若是用穷举法,能够得出\(B(4,3)=11\)

观察这11种dichotomies发现,它们能够分红两组,其中一组的前3个点是有重复的,它们成为不一样的dichotomies仅仅是由于\(\mathbf{x}_4\)不一样,而另外一组的前3个点没有重复。

若是把前3个点有重复的8种dichotomies记为\(2\alpha\)(只看前3个点就是\(\alpha\)种),后3种记为\(\beta\),那么就有\(2\alpha+\beta=11\)。而其实,\(B(4,3)\)无非就是比\(B(3,\cdot)\)多了一个点,假设如今把最后一个点去掉,那么前3个点只可能有\(\alpha+\beta\)种dichotomies(由于第一组\(2\alpha\)种是前面3个点各重复两次,所以须要剔除一半),因为\(B(4,3)\)中任意3个点都不能被打散,所以前3个点也必须不能被打散,因此有\(\alpha+\beta\le B(3,3)\)

另外一方面,因为\(2\alpha\)组中的4个点中,任意3个点都不能被打散,而第4个点是在每一组前3个点固定的状况下取正/负,所以前3个点中的任意2个点都不能被打散(不然在加入第4个点后就会有3个点被打散)。所以,必需要保证\(\alpha\le B(3,2)\)

由此可知,\(B(4,3)=2\alpha+\beta \le B(3,3)+B(3,2)\),以此类推,有\(B(N,k)\le B(N-1,k)+B(N-1,k-1)\),最终结果如图:

用数学概括法便可证实:\(B(N,k)\le \sum\limits_{i=0}^{k-1}\binom{N}{i}\),具体过程在此略过。事实上,能够证实得\(B(N,k)=\sum\limits_{i=0}^{k-1}\binom{N}{i}\),具体的数学过程较复杂,课程中也略过了。该式说明,\(B(N,k)\)中成长最快的一项最多就是\(N^{k-1}\)的成长速度。

\(B(N,k)\)的定义,只要break point \(k\)存在,那么\(m_{\mathcal{H}}(N)\)的上限就是\(B(N,k)\),也所以,\(m_{\mathcal{H}}(N)\)中成长最快的一项最多就是\(N^{k-1}\)的成长速度。

在有了\(m_{\mathcal{H}}(N)\)后,想用它取代\(M\),还须要作一些处理,具体在此略过。最后能够获得的是Vapnik-Chervonenkis(VC) bound:

\[\mathbb{P}[\exists h \in \mathcal{H} \text{ s.t. }\vert E_{\text{in}}(h)-E_{\text{out}}(h)\vert>\epsilon]\le 4 m_{\mathcal{H}}(2N)\exp{(-\dfrac{1}{8}\epsilon^2 N)} \]

定义VC维(VC dimension)\(d_{\text{vc}}(\mathcal{H})\)为知足\(m_{\mathcal{H}}(N)=2^N\)的最大的\(N\),也即\(\mathcal{H}\)能打散的最大的点的个数,或最小的break point减1。当\(N\ge2\)\(d_{\text{vc}}\ge 2\)时,有\(m_{\mathcal{H}}(N)\le N^{d_{\text{vc}}}\)

对于\(d\)维感知机模型来讲,有\(d_{\text{vc}}=d+1\)(证实略)。只要\(d_{\text{vc}}\)是有限的,就能够完成泛化。\(d_{\text{vc}}(\mathcal{H})\)就至关因而\(\mathcal{H}\)的powerfulness。

2.4 VC Bound与模型复杂度惩罚

对于\(g=\mathcal{A}(\mathcal{D})\in \mathcal{H}\),若是\(\mathcal{D}\)在统计上足够大,有

\[\mathbb{P}[\vert E_{\text{in}}(g)-E_{\text{out}}(g)\vert>\epsilon]\le 4 (2N)^{d_{\text{vc}}} \exp{(-\dfrac{1}{8}\epsilon^2 N)} \]

不等式左侧表示“坏的”的概率。若将不等式右边记为\(\delta\),可将\(\epsilon\)反表示为\(\epsilon=\sqrt{\dfrac{8}{N}\ln{\dfrac{4(2N)^{d_{\text{vc}}}}{\delta}}}=\Omega(N,\mathcal{H},\delta)\)\(\Omega(N,\mathcal{H},\delta)\)就表明了对模型复杂度的惩罚。

能够看出,至少有\(1-\delta\)的几率,能知足

\[E_{\text{out}}(g)\le E_{\text{in}}(g)+\Omega(N,\mathcal{H},\delta) \]

\(d_{\text{vc}}\)和error的关系以下图:

要找到最优的\(d_{\text{vc}}\),才能使error最小。

VC Bound只是一个很是宽松的理论界限。好比设定\(\epsilon=0.1\)\(\delta=0.1\)\(d_{\text{vc}}=3\),那么根据前式,可获得\(N\approx 10,000 d_{\text{vc}}\),但在实践中,每每只须要\(N\approx 10 d_{\text{vc}}\)的数据量就够了。

2.5 有噪声时的VC Bound

若是标签被打错了,或是同一我的被打了不一样标签,又或是\(\mathbf{x}\)的信息不许确,都会引入噪声。在有噪声时,VC Bound依旧有效吗?

回到以前小球的例子,以前的小球,每一个小球的颜色都是肯定的,这种状况叫作是“deterministic”的,在有噪声的状况中,能够认为每一个小球的颜色服从某种几率,即\(y\sim P(y|\mathbf{x})\),这叫作是“probabilistic”的。能够证实若是\((\mathbf{x},y)\mathop{\sim}^{i.i.d.}P(\mathbf{x},y)\),那么VC理论依旧是有效的。

有噪声时,学习的目标是在常见的样本\(P(\mathbf{x})\)上,学习\(P(y|\mathbf{x})\)。新的学习流程以下:

VC理论依旧有效,pocket算法就是个很好的例子。

3 偏差度量

在这里介绍一种逐点的偏差度量(pointwise error measure),能够表达成\(\text{err}(g(\mathbf{x}), f(\mathbf{x}))\)\(g(\mathbf{x})\)可记为\(\tilde{y}\)\(f(\mathbf{x})\)可记为y。

有两种比较重要的pointwise error measure:

  • \(\text{err}(\tilde{y}, y)=\mathbb{1}_{[\tilde{y} \ne y]}\),这通常用在分类问题中;
  • \(\text{err}(\tilde{y}, y)=(\tilde{y} - y)^2\),这通常用在回归问题中。

在有了偏差度量后,学习流程以下:

在分类问题中,错误可分为两类,以下图所示:

根据这两类错误的重要性不一样,能够对它们赋予不一样的权重。所以,不一样的应用能够有不一样的\(\text{err}\)。在算法中考虑偏差度量时(记用在算法中的错误度量为\(\widehat{\text{err}}\)),最好的状况固然是直接令\(\widehat{\text{err}}=\text{err}\),但这可能会致使很难计算,好比会带来NP-hard问题等,通常来讲,最好要设计一个对于\(\mathcal{A}\)来讲能比较容易进行最优化的\(\widehat{\text{err}}\),最好要有闭式解(closed-form solution)或有凸的目标函数。

\(\mathcal{A}\)中加入偏差度量的设计后,学习流程以下:

对于两类错误权重不一样的状况,能够用“virtual copying”的策略去学习。以pocket算法为例,假设false reject错误的权重为1,false accept错误的权重为1000,在计算时没必要真的对每一个样本点赋予权重,能够“虚拟地”将\(y=-1\)的点复制1000份。在实践中,也没必要真的复制,能够在随机选择样本点时,让算法随机选出\(y=-1\)的点的几率增大1000倍便可。

相关文章
相关标签/搜索