在微博里看到被分享的一篇文章,收藏在这里,慢慢学习~
统计机器学习理论
夏粉
目前机器学习的一个比较热门的方向是统计机器学习(另外一个可能是图模型,按照Jordan的说法是统计机器学习属于频率主义,而图模型属于贝叶斯主义), 对于每一个做统计机器学习的研究者来说,他们大致可以分为两类:一类做统计学习理论相关工作,如泛化界、约简或一致性;一类做优化算法,如支持向量机、Boosting等。作为一个纯统计机器学习的学者来说,我想这两块内容都得了解。优化算法的门槛低点,可能比较容易上手,了解他们并不太难,比如支持向量机本质上是求解一个RKHS上的二次优化问题,Boosting是函数空间上的梯度下降优化问题。统计学习理论的门槛高点,需要的基础数学知识多点,离计算机出生的人比较远,因而常常使人望而生畏。最近本人对统计学习理论这块做了些整理,发现其实这块东西并非如想象的那么难,他们的本质无非是概率集中不等式在机器学习上的应用,下面以泛化界为例讲一下自己对那块内容的理解。
Talagrand(1996)说过: "A random variable that depends (in a "smooth way") on the influence of many independent variables(But not too much on any of them) is essentially constant". 中文上的意思是,依赖于许多独立随机变量的随机变量本质上是个常量,举个例子,经验风险就是一个依赖于一个随机训练样本集合的随机变量,因而经验风险本质上应该是个常量。正因为如此,这个随机变量离开它均值的概率就以指数形势衰减,因此这就是泛化界中常见的如下论述:“以1-\sigma的概率,作如下论断”的由来。目前使用的各种泛化界分析工具本质上正是基于这个原理,下面介绍下目前主流的三种泛化界分析方法,VC维,R复杂度和稳定性分析。
为了叙述清楚,如一个游戏开始之前需要设置游戏规则一样,这里简单介绍一下机器学习问题设置。统计机器学习研究的问题一般是,给定一堆带标签的训练样本集合,需要从训练集合中学习出一个预测器来,对新的样本进行预测,使得预测结果尽可能的接近它的真实标签。相应的,对统计机器学习理论分析,我们需要做如下一些假设:假设训练样本集合是从一个未知但固定的分布中独立同分布的抽取出来,学习的目标是根据这样一个样本集合,从一个事先给定的分类器集合中挑选出一个分类器,使得分类器的对从同一个分布中随机抽取的样本在给定的一个损失评价下的风险最小。一个需要特别注意的是,在统计学习泛化界分析时,分类器的风险常常被认为是随机样本集上的一个随机变量,这样的随机风险集合(以分类器为索引)在统计上被叫做经验过程。
VC维可能是影响最深也是最早提出来的泛化界分析方法, V是统计机器学习理论的垫基者Vapnic的名称的缩写,这从名称上就验证了VC维在统计机器学习理论的影响力。这块的分析得先从Hoeffding不等式说起,Hoeffding不等式本质说明一组独立随机变量的均值离开它的期望的可能性以指数形式衰减。因此,对于任一给定的分类器F(F与训练样本集合无关), F与每个随机样本结合形成了一个F作用在该随机变量上的新的随机变量(取值0,1,即分对与分错),这个随机变量的期望刚好是F的期望风险,N个这样随机变量的均值刚好是F的经验风险,因此,我们获得了F在N个训练样本集合上的经验风险偏离F期望风险的可能性的概率描述,为叙述方便,以下简称经验风险偏离F期望风险为偏离情况。然而,这样的概率描述只能针对一个F,它所起作用的那部分训练样本集合上也直接与F相关,而我们的学习是从事先给定的函数空间中选择一个F,因此我们并不能保证Hoeffding不等式作用的那个F就是我们选择出来的F,即使假设我们没看到训练样本集合之前,我们已经知道选择哪个F,我们在推导该F与最优F(函数空间里期望风险最小的F)之间关系时,也需要一个不随样本集合变化的概率描述。因此,我们需要一个对函数空间中的所有F一致成立的偏离情况的可能性的概率描述,这就是泛化界里常说的uniform。当函数空间的势是个有限值时,这种情况比较容易处理,分别对每个F运用Hoeffinding不等式,所有的偏离可能性的和就是存在一个F,它的偏离情况超过一个给定值的概率的上界。 反过来说,即是假设空间里的任何函数都以至少一定的概率,偏离情况小于一个给定值。当函数空间的势不是一个有限值时,上面的处理就遇到了问题,因为无穷个偏离可能性的和是个无穷大的数,这样的上界就是个无意义的事。为了处理这种情况,我们的先驱者注意到了以下两个情况:1)假设空间的中所有函数偏离情况的上确界是所有函数偏离情况的上界;2)在任何有限的样本上(比如N),尽管函数空间的势是无穷的,但是它们作用在有限个样本的分类情况却是有限的(上界是2^N)。如果我们能够找到偏离情况的上确界的概率的一个上界,并且这个上界能够以有限个样本上的某种概率表达出来,我们就能解决问题。具体的做法是,可以证明偏离情况的上确界的概率的一个上界是两个同样大小的从同一分布中抽取的训练样本集合经验风险之差的概率的上确界。然后对后者就可以使用有限假设空间下的Hoeffinding不等式,得出后者偏离情况的概率描述。为了得到比较精确的界的描述,必须刻画函数集合在有限样本上的分类情况,这个分类情况对应的术语叫生长函数,它表示N个样本被函数空间的函数们分成不同情况的最大值。为了计算生长函数,VC维被定义出来,它描述了函数集合分类样本的能力,具体表现为函数集合能够任意分类的最大样本个数。由生长函数和VC维定义马上知道,当样本的个数N小于等于VC维时,生长函数的值等于2^N, 否则生长函数的值小于2^N。这也说明了,一个有限VC维空间的生长函数并非指数增长,从而避免了界的无意义性。Vapnik老前辈已经为我们推导出了生长函数与VC维的关系不等式,将他们之间的关系降到了多项式,因而我们的界从O(1)->O(sqrt(logn/n))。后人在此基础上又提出了一些改进,主要集中在如何让不等式的界更紧,比如比生长函数小的VC熵,对函数能力的更有效描述的覆盖数,还有对Hoeffding不等式的改进版本Bernstein不等式等。VC维这套理论的建立为统计机器学习的理论铺下了坚实的理论基础,从此机器学习变得有理可依,也许这就是机器学习从人工智能中分离出来的一个重要因素之一,然而由于VC维的难以计算,还是给具体应用带来了不便(目前常用的一个事实是,d维超平面集合的VC维是d+1)。
R复杂度的提出,动机之一就是克服VC维的的不容易计算。另外一个原因是某些算法在无穷维空间里也获得了很好的经验性能,然而却不能用VC维解释。比如RKHS中的函数都是无穷维的,在此空间得出的用VC维表达的界是平凡的,无法对实际算法设计提供指导。与VC维类似,R复杂度也是对一个函数集合能力的描述,它描述了函数集合拟合噪声的能力,能力越强,R复杂度越大。R复杂度有两种:一种是期望R复杂度,一种是经验R复杂度,期望R复杂度与经验R复杂度本质上也是经验量与期望量之间的关系,因而也可以用概率集中不等式描述其中的关系,经验R复杂度因为是给定了N个样本的情况,因而更容易计算。与VC维的分析类似,R复杂度的分析也是专注于偏离情况的上确界,与VC维不同的是,这儿使用了一个比Hoeffinding更强大的不等式McDiarmid集中不等式,由Mcdiarmid不等式我们可以得出,偏离情况与期望偏离情况之间的差的概率描述。其中期望偏离情况的分析比较复杂,通过一些列分析可以得出期望偏离情况的一个上界,刚好是函数集的R复杂度,由此我们得到了与VC维类似的一个泛化风险界,其中生长函数被替换成了R复杂度。R复杂度的计算比VC维容易,常常可以根据一些不等式如Cauchy-Schwarz或Jensen不等式求出,另外机器学习大牛们还提供了一些组合函数的与个体函数之间R复杂度的关系的计算公式,因此对于实际应用更有指导意义,比如我们可以从中推导出著名的Margin界。
VC维和R复杂度存在的一个问题是,它们关心的都是整个函数空间的拟合能力,而对算法如何搜索函数空间无关,实际上我们并不需要一个对整个函数空间都成立的界,我们关心的只是我们的算法可能搜索到的函数的泛化能力,此外,描述一个函数空间能力大小的事也不是一件容易的事情。因此,我们需要一个能够仅仅对我们算法搜索出来的解的泛化能力分析的概率表达式子。因此与前面两种分析方法不一样的是,稳定性分析关心的是算法搜索出来的解的偏离情况的概率描述。稳定性描述的是当训练样本集合中的训练样本发生变动时(常常研究一个变动),算法输出的分类器是如何变化的,用的最多是算法的一致稳定性,它表示,当训练集合中的一个样本被替换或者删掉时,分类器的输出的函数在定义域上变动的最大值,这个最大值称为稳定数,即对应于两个函数之差的无穷范数。有了这个工具后,我们对算法输出的函数的偏移情况与期望偏移情况使用McDiarmid集中不等式,就可以得出偏移情况的一个上界,在对期望偏移情况分析,可以得出期望偏移情况的一个用算法稳定数表示的上界,因此我们得到了一个用稳定数表达的算法输出的函数期望风险的上界。由于我们需要得到一个有意义的上界,因此稳定数至少应该长得像1/N。接下来稳定性分析关心的是,如何计算有效的稳定数的问题,大牛们已经提供了一套在正则化RKHS空间下的算法稳定性的计算公式,可以发现这个空间下的算法的确满足1/N的形式。
统计机器学习推动了机器学习的发展,统计学习理论的建立为统计机器学习奠定了坚实的基础,随着统计机器学习理论的发展,相信不久将来更紧的更容易指导实践的界会被提出来。想做这块研究的人需要一定的数学基础,然而,做出来的东西确很少有实际价值,因此需要慎重对待。好了,改天有空再写写自己对一致性或约简的一些体会。