我想如今机器学习 (Machine Learning) 的重要性(不论是在学术界还是在工业界)已经不用再多强调了,比如说 2010 年的图灵奖得主 Leslie Valiant 就是学习理论 (Learning Theory) 的一位先驱大牛,正是他提出了“可能近似正确” (Probably Approximately Correct, PAC) 模型——每次念一念 PAC 的中文翻译就觉得好玩,不过 PAC 模型及其变种确实是如今学习理论里最为广泛使用的框架之一,而且正是 PAC 模型催生了现在应用超级广泛的 boosting 算法。学习理论中的两大巨头: PAC 模型和 Vapnik 的 Statistical Learning Theory (SLT) ,各自都拥有一个在实际中得到广泛认可和应用的算法(boosting 和 SVM),应该也不是偶然吧! 不过这些八卦以后有机会再提吧。
另一个例子则是现在如火如荼的 Stanford 的在线机器学习课程 ml-class ,具体的注册人数是多少我现在找不到统计数字了,不过看起来 Stanford 的这次开创性的尝试确实是非常令人鼓舞的吧!如此的成功也许也是大多数人所始料未及的吧,开设的课程也从原来的机器学习、人工智能和数据库三门一下子增加了诸如自然语言处理、计算机安全、博弈论等课以及其他专业的各种课程。
回到机器学习,开设 ml-class 的 Andrew Ng 本身也是机器学习领域里的一位新星人物,和许多做纯科研的人不同的是,他的许多工作有“看得见摸得着”的很实际的东西,其中很著名的就是一个叫做 LittleDog 的机器狗,能走能跑能跳,可以应付各种复杂地形,平衡性超好,用脚踹都踹不翻;他的另一个很好玩的项目就是无人驾驶直升机(千万不要因为天上障碍物少、不会堵车,就觉得无人驾驶直升机比无人驾驶汽车要来得简单啊 ^_^),可以完成许多高难度的特技飞行动作。这些 robot/agent 相关的东西和机器学习的一大交集就是一个叫做增强学习 (Reinforcement Learning, RL) 的模型,实际上这已经是一个相当“古老”的 topic 了,理论和算法上都已经有相当的成果,不过传统的 RL 算法通常都有相当 aggressive 的“探索”环境的过程,而这在像机器人控制,特别是直升机控制方面有可能是不太现实的,极端的情况下某个高难度的“探索性”步骤有可能会使直升机 crash 掉。为了解决这个问题,Andrew Ng 提出了所谓的学徒学习 (Apprenticeship learning),通过人类示范的方法来引导机器进行学习。当然这里牵涉到的不仅仅是“模仿”而已,从理论上可以证明,学徒可以学得和老师差不多的 performance ,当老师的示范带有“启发性”的信息的时候,学徒甚至可以超过老师。因为这次并不是专门要讲学徒学习或者增强学习,所以我不得不用非常模糊的词语(“差不多”、“启发性”之类的)糊弄过去,然而实际上模型和各种性能保证都是有严格的数学描述的,如果感兴趣的话,可以去看 Ng 的论文(至少需要先了解一些 Markov Decision Process 的基础知识) 。当然,除了理论保证之外,学徒学习还被成功地应用到了无人驾驶直升机的控制上。无论如何,像这种从实际问题出发,理论结合实践的研究方式,真的是非常令人振奋的啊!
实际上对于机器学习这个话题来说,除了 Reinforcement Learning 和传统的 Artificial Intelligence 似乎看起来关系比较密切之外,其他的一些机器学习中研究的问题似乎相对于传统 AI ,反而更接近其他一些领域一点。比如我曾经被问及机器学习和统计分析有什么区别——实际上我对统计分析并不是很了解,我想它应该主要就是用概率统计的方法去分析数据的一门学科吧,看起来确实和机器学习很像(特别是现在“机器学习”已经快要等价于“统计学习”了的时候),然而后来我渐渐地发现其实还是有一些差别的,或者说,干脆就是不一样吧。统计分析的主要目的应该是去分析或者解释存在的数据,例如,用某个概率模型,从数据去估计分布的参数,并计算置信度之类的。
而机器学习,虽然看起来也比较类似,但是本质的区别在于,机器学习的目的不在于分析当前数据,而是在于对未来的预测。当然这种分类并不是很严格的,比如机器学习中的用于 density estimation 的最大似然方法,就是寻找最能“解释”当前数据的概率分布模型。但是,比如说,一个专攻油画的人也能画一些素描,总不至于因此就认为素描和油画是一样的吧。对于这个具体的例子来说,即便同样是在做 density estimation ,统计分析里可能通常都会假设数据确实是满足某个具体的带参数的分布,从而去研究如何更精确更健壮地估计对应的参数的问题(例如试验设计);而机器学习则通常不会假设数据的真实分布是符合某个参数的概率模型的,或者甚至完全不做任何限制,而在这样的背景下,普通的最大似然是否真的可行呢?要达到给定的精读需要多少数据点、多少计算量?这些才是机器学习所关心的问题。
另一个很相关的领域是 Optimization ,因为优化和确实在机器学习中非常重要,特别是涉及到要解决具体问题的时候,最后通常都会需要解一个优化问题。所以看起来好像是机器学习就完全成了“提出目标函数”、“找到优化方法”两步曲了。诚然,一个有用的算法,能够高效地解出来当然是必要的,然而也并不能因此就把机器学习和优化等同起来或者甚至看成是优化的一个子问题,这就跟不能把所有用到数学的学科全都和数学等同起来一样嘛,何况机器学习中还有一些和优化关系不大的重要问题。
接下来我们不妨来看一下最经典的 Supervised Learning 问题的设定,来大致了解一下机器学习问题中所关心的问题是什么样的。用 X 和 Y 分别表示输入和输出空间,给定一个训练集 Sn={(xi,yi)}ni=1 ,目标是要学得一个函数 f:X→Y ,使得对于未来的 x ,我们能够根据 f(x) 来预测其对应的 y 。比如, x 是在医院做的各种医疗检测的结果, y 表示你是否患有癌症。当然,所谓“没有免费的午餐”,如果不假定观察到的数据 Sn 和未来的数据之间有一定的联系的话,这个任务是无法完成的。而在统计学习中,建立两者之间联系是通过一个共享的概率模型来实现的。
这里最基本的假设是 X×Y 上存在一个(联合)分布 P ,而 Sn 中的数据对 (xi,yi) 和未来的数据对 (x,y) 都是独立同分布 (IID) 地从 P 采样出来的。一种更为特殊的情况(包含在这种设定之中)是只假设 X 上有一个分布 PX ,而每个 x 对应的 y 是由一个确定的函数给出: y=h(x) ,或者加上有噪音的情况,比如很常见的 Gaussian 噪声假设 y=h(x)+ϵ ,这里 ϵ 是一个服从零均值的高斯分布的噪音随机变量,此时相当于条件分布 P(Y|X=x) 是一个期望等于 h(x) 的高斯分布。这里 IID 的假设最重要的地方就在于同分布——也就是说训练数据和测试数据是符合同一个(未知的概率)模型的,这样一来我们才能通过训练数据来推测(未知的)测试数据相关的信息。比如,假设亚洲人患癌症和相应的医疗检测结果之间的关系模型与欧洲人的模型可能是不一样的,这样的话,就无法保证能直接通过从亚洲人这里采集的训练样本来得到合理的关于欧洲的癌症患病模型的预测了。
不过也有将这个要求加以放松的情况,对于刚才的例子,虽然欧洲人和亚洲人的模型并不完全一样,但是可能有一些相似之处(毕竟大家都属于同一个物种),所以,在训练数据的模型和测试数据的模型不相同但是“相差不大”的时候,是否仍然能进行学习呢?这就是 Domain Adaptation 所考虑的问题:如何来 formulate 两个模型之间的相似性,以及在满足什么样的相似性的情况下,该问题的 learnable 的,能达到什么样的 performance 等等,不过在这里暂时不展开讲了,对这个问题感兴趣的同学可以参考最近的一本书《Dataset Shift in Machine Learning》。这种涉及到多个不同数据源(模型)的学习问题还有 transfer learning 、multi-task learning 之类的。
除了放弃要求训练数据和测试数据来自同一个分布之外,还有更宽松的模型完全不要求数据是 IID 地采样自某个特定的概率分布。比如在 online learning 中就是如此,这使得模型更加宽松并且能应用到更加广泛的一类问题中,不过抛弃了概率分布之后也就无从谈及 expected loss 之类的概念了(因为“期望”的定义需要有概率分布的存在),所以关于 f 的衡量需要借助于其他的方式,比较常用的是 regret ,具体也不在这里展开讲了。接下来我们先重点讨论只有一个概率分布 P 的情况。
为了衡量所学得的 f 的好坏,我们还需要定义一个 loss function ℓ:YX×X×Y→R+ 。例如,对于经典的分类问题,我们令 ℓ 取 0-1 loss:
不过 ℓ 只是衡量在某一个(对)数据点上的损失,根据观察到的训练数据,我们可以定义经验风险 (Empirical Risk)
用于衡量 f 在整个训练数据上的 risk 。然而为了衡量“True Risk”,也就是谈论 f 在“将来的”或者“未知的”数据上的 risk ,我们就必须借助于刚才假设的联合概率分布 P 了,具体来说,我们把 Risk 定义为 ℓf(X,Y) 的期望:
具体到分类问题和 0-1 loss ,我们有
这里 χA 表示事件 A 的特征函数。此时 Risk 也就是 f(X) 和 Y 不相等的概率——这是一个非常自然的衡量标准。值得注意的是,这个 Risk 的 formulate 依赖于我们所提出的概率模型假设,虽然我们不知道真实的 P ,但是我们可以根据从 P 中采样出来的 sample Sn 来对 P 相关信息进行估计,这正是统计学习得意实现的基础。
具体来说,在刚才勾勒出来的世界观设定中,我们的目的已经很明确了:找一个使得 R(f) 最小的 f 。麻烦在于 P 未知,所以 R(f) 求不出来,但是我们可以通过 Sn 来求 Rn(f) ,然后根据大数定理,对于某个固定的 f 来说, Rn(f) 会随着 n 的增大趋向于 R(f) 。这看起来似乎很诱人,直观上来看,它为我们提供了一个很直接的算法:寻找使得 Rn(f) 最小的 f 作为解,由于 Rn(f) 是(至少从理论上来说)可以求值的,因此这是一个合法的算法,通常叫做“经验风险最小化” (Empirical Risk Minimization, ERM) 算法。关于 ERM 的具体细节,以及它存在的问题和解决方法,我们将会在下次细说。
在结束之前,我们再对世界设定做一些细节上的补充:主要是定义一个 Bayes error R∗ 为我们能达到的最低的 risk:
或许应该叫做 Bayes Risk 更合适一点吧……不过名字什么的无所谓了,总之 R∗ 这个记号以后会经常用到,这是学习的理论极限——再好的算法都无法达到更低的 risk ,这是由问题本身决定的,而和具体的算法无关。注意 R∗ 并不一定等于零,例如下图例子中 R 上的二分类问题,图中显示出 0 和 1 两类的条件概率密度函数之间有重叠的部分:
不论你如何取 f ,图中涂黄的部分总是会不可避免地被算入 risk 中,导致零 risk 不可达到。如果你觉得看图不太可信,也可以形式推导一下。不妨考虑二分类和 0-1 loss 的情况,此时引入一个 regression function :
于是
注意 regression function η(x) 表示 X=x 时 Y=1 的概率,如果 η(x) 总是等于 0 或者 1 的话(对应地 Y 总是确定地等于 0 或者 1), |2η(x)−1| 是恒等于 1 的,此时根据上式可以得到 R∗=0 。但是 η(x)∈(0,1) 在某个测度非零的集合上成立的话, R∗ 就总是要大于零了。
除了以上的分析之外,regression function 实际上还可以帮助我们确定出实现最优 Risk 的那个 classifier ,定义如下:
这个 classifier f∗ 被称作 Bayes classifier ,接下来我们将说明 f∗ 是最优的:对任意其他的 f ,我们要证明 R(f∗)≤R(f) 。从刚才的推导中我们得到的一个额外公式并进一步化简得:
于是我们有
最后的非负是因为:如果 η(x)≥1/2 ,那么 2η(x)−1≥0 并且根据定义知 f∗(x)=1 ,此时不管 f(x) 等于多少(0 或者 1),这个式子都是非负的; η(x)<1/2 的情况也类似。由 f∗ 的最优性知道 R(f∗) 即是 Bayes Risk L∗ ,亦即下确界在 f∗ 取到。需要注意的是,这个最优的 Bayes classifier 虽然存在,并且可以把具体形式给出来,但是由于在实际中我们是不知道 P 的,因此也不知道 η ,所以 f∗ 也是未知的。
最后,需要说明的是,实际的机器学习过程中,我们通常是在某个函数空间 F 中进行学习的,极端情况下,我们令 F 包含所有从 X 到 Y 的函数,这是一个及其巨大无比的函数空间,通常学习问题的难度随着函数空间的大小(复杂度)增大而增大,打一个形象的比喻,在如此巨大的一个函数空间中寻找一个最优的函数,就犹如在河滩上找一个最圆的鹅卵石一样困难:一方面鹅卵石太多了,另一方面我们肉眼很乱石头圆不圆的精度很低,只能凭感觉来,所以会拿到很多看起来其实都挺圆的但是并不是真正要找的那个石头。回到机器学习的情况,比如,如果我们用 ERM 方法来进行学习的话,对任意大多的 n 个训练数据,我们可以构造一个函数 f ,使得对于训练数据中的点 f(xi)=yi ,而对于其他点令 f(x)=0 ,这个函数的 empirical risk 是零,然而真实 risk 则完全没有任何保证。
因此,实际中我们都会使用更小的性质更好的函数空间来进行学习,例如所有的线性分类器,或者由某个核函数所诱导的 Reproducing Kernel Hilbert Space 之类的。此时 f∗ 有可能在或者不在 F 中,记
这个是我们在 F 中所能达到的最小的 risk 。显然有 R≥R∗ 。
最后,总结一下:这次我们给出了最简单的 supervised learning 问题的基本框架,并定义了学习问题的目标(寻找 Risk 最小的函数)以及所能达到的理论最优值 R∗ ,特别地,在二分类问题和 0-1 loss 下,我们借助于 regression function η 做了一些更细致的分析。supervised learning 按照 Y 的情况可以大致分为 classification 和 regression 两种情况,而二分类正是 classification 问题中最典型和最简单的情况。在陈述学习问题的时候,我们还提到了 ERM 学习算法以及大数定理,但是没有做深入探讨,不出意外的话,这将成为下一次的主要话题。