本书的作者多明戈斯是华盛顿大学的终身教授,也是一位在机器学习领域具有20年研究经历的资深科学家。多明戈斯一直致力于融合各种机器学习算法的优势,提出一种可以解决所有应用问题的通用算法,即终极算法。在这本书里,作者详细地阐述了他的思路。其实我个人在阅读本书的过程中,始终对“终极算法”的提法充满怀疑。
[美] 佩德罗·多明戈斯 著 黄芳萍 译 中信出版社 2016.12
传统上认为,让计算机完成某件事情的唯一方法(从把两个数相加到驾驶飞机),就是非常详细地记录某个算法并解释其如何运行。但机器学习算法就不一样:通过从数据中推断,它们自己会弄明白做事方法。掌握的数据越多,它们的工作就越顺利。现在我们不用给计算机编程,它们自己给自己编程。
社会在不断变化,学习算法也是如此。机器学习正在重塑科学、技术、商业、政治以及战争。卫星、DNA(脱氧核糖核酸)测序仪以及粒子加速器以前所未有的精细程度探索自然,同时,学习算法将庞大的数据转变成新的科学知识。企业从未像现在这样了解自己的用户。
计算机并没有创造性,它们只能做你让它们做的事。如果你告诉它们要做的事涉及创造力,那么就要用到机器学习。学习算法就像技艺精湛的工匠,它生产的每个产品都不一样,而且专门根据顾客的需要精细定制。但是不像把石头变成砖、把金子变成珠宝,学习算法是把数据变成算法。它们掌握的数据越多,算法也就越精准。
机器学习的核心就是预测:预测我们想要什么,预测我们行为的结果,预测如何能实现我们的目标,预测世界将如何改变。
我们一般认为学习算法就是找到两个事件之间的联结点,例如,用谷歌搜索“感冒药”和患感冒之间的联系。然而,寻找联结点与机器学习的关系就像是砖与房子的关系,房子是由砖组成的,但一堆砖头肯定不能称之为“房子”。
学习算法并不是那么深奥难懂,除了运用在计算机上,对于我们来说很重要的问题都可以通过学习算法找到答案,比如:我们如何学习?有没有更好的方法?我们能预测什么?我们能信任所学的知识吗?对这些问题,机器学习的各个学派有不同的答案。
机器学习主要有5个学派,我们会对每个学派分别介绍:符号学派将学习看作逆向演绎,并从哲学、心理学、逻辑学中寻求洞见;联结学派对大脑进行逆向分析,灵感来源于神经科学和物理学;进化学派在计算机上模拟进化,并利用遗传学和进化生物学知识;贝叶斯学派认为学习是一种概率推理形式,理论根基在于统计学;类推学派通过对相似性判断的外推来进行学习,并受心理学和数学最优化的影响。
机器学习的5个学派都有自己的主算法,利用这种万能学习算法,原则上,你可以通过任何领域的数据来挖掘知识:符号学派的主算法是逆向演绎,联结学派的主算法是反向传播,进化学派的主算法是遗传编程,贝叶斯学派的主算法是贝叶斯推理,类推学派的主算法是支持向量机。在实践中,这些算法可能在有些工作中可用,而在其他工作中不可用。
当今,文明社会的每个角落都存在算法,日常生活的每分每秒也都和算法有关。算法不仅存在于你的手机或笔记本电脑,还存在于你的汽车、房子、家电以及玩具当中。当人们进出银行时,银行系统就是由各种算法交织而成的庞大集合体。算法安排航班,也驾驶飞机。算法能经营工厂、进行交易、运输货物、处理现金收益,还能保存记录。如果所有算法都突然停止运转,那么就是人类的世界末日。
算法就是一系列指令,告诉计算机该做什么。计算机是由几十亿个微小开关(称为晶体管)组成的,而算法能在一秒内打开并关闭这些开关几十亿次。最简单的算法是触动开关。一个晶体管的状态就是一个比特信息:如果开关打开,信息就是1;如果开关关闭,信息就是0。 第二简单的算法是:把两个比特结合起来。克劳德·香农以“信息论之父”而为人所知,他第一个意识到晶体管的活动就是在运算,因为晶体管开了又关,是对其他晶体管的回应(这是他在麻省理工学院的硕士论文——有史以来最有意义的硕士论文)。 所有算法,无论多复杂,都能分解为这三种逻辑运算:且,或,非。利用不同的符号来代替“且”“或”“非”运算,简单的算法就可以用图表来表示。
通过结合许多这样的逻辑运算,我们可以进行极其复杂的逻辑推理。人们往往认为计算机只和数字有关,其实并非如此,它完全关乎逻辑。数字和算术都是由逻辑构成的,而计算机的所有其他部分也是如此。
现代计算机是各种晶体管的大集合,能做许多不同的事,这取决于哪些晶体管被激活。算法排除计算机中多余的晶体管,直到出现想要的功能,无论是客机的自动驾驶仪,还是皮克斯的新电影,原理都是这样。
一种算法不仅是简单的一套指令,这些指令必须精确且不能模糊,这样计算机才能够执行。算法总能得出同样的结果。即便食谱明确指出需要半盎司白糖,计算机也不知道如何执行,因为计算机不知道什么是白糖、什么是盎司。如果我们想对厨用机器人编程,让它来做蛋糕,我们要通过视频教它如何辨认白糖、如何拿起勺子等(我们现在仍在努力)。计算机必须知道如何执行算法,直到打开及关闭指定的晶体管。因此,食谱离算法还很远。
算法是一套严格的标准。人们常说,你没法真正了解某样东西,直到你能用一种算法来将其表达出来(理查德·费曼曾说,“如果我无法创造某样东西,那么也就无法理解它”)。方程式对物理学家和工程师来说就是谋生工具,而这也仅仅是一种特殊算法。 在科学的任何领域,如果某个理论无法用算法表示,那么它就不是很严谨(更别提你无法用计算机来解决这个问题,因为你能让计算机替你做的事实在太有限)。科学家提出理论,工程师制造设备,计算机科学家提出算法,这和理论及设备都有关。
设计算法最重要的一点就是,你得用一种计算机能理解的语言来将算法记录下来,比如Java或者Python(从这个角度看,就是一个程序)。接下来,你得对其进行纠错:找出每个误差并修正,直到计算机能够运行程序,而不至于搞砸。
每个算法都会有输入和输出:数据输入计算机,算法会利用数据完成接下来的事,然后结果就出来了。机器学习则颠倒了这个顺序:输入数据和想要的结果,输出的则是算法,即把数据转换成结果的算法。学习算法能够制作其他算法。通过机器学习,计算机就会自己编写程序
学习算法是种子,数据是土壤,被掌握的程序是成熟的作物。机器学习专家就像农民,播下种子,灌溉,施肥,留意作物的生长状况,事事亲力亲为,而不是退居一旁。
机器学习是一把剑,利用这把剑可以杀死复杂性怪兽。只要有足够的数据,一段只有几百行代码的程序可以轻易生成拥有上百万行代码的程序,而且它可以为解决不同问题不停产生不同的程序。这可以显著降低程序员工作的复杂度。
在机器学习中,知识往往以统计模型的形式出现,因为多数知识都是可以统计的:所有人都会死,但只有4%是美国人。技能往往以程序的形式出现:如果马路向左弯曲,那么向左转动车头
机器学习有许多不同的形式,也会涉及许多不同的名字:模式识别、统计建模、数据挖掘、知识发现、预测分析、数据科学、适应系统、自组织系统等。这些概念供不同群体使用,拥有不同的联系。有些有很长的半衰期,有些则较短。
机器学习有时会和人工智能(AI)混淆。严格来讲,机器学习是人工智能的子域,但机器学习发展得如此壮大且成功,现已超越以前它引以为傲的母领域。人工智能的目标是教会计算机完成现在人类做得更好的事,而机器学习可以说就是其中最重要的事:没有学习,计算机就永远无法跟上人类的步伐;有了学习,一切都与时俱进。
在信息处理这个生态系统中,学习算法是顶级掠食者。数据库、网络爬虫、索引器等相当于食草动物,耐心地对无限领域中的数据进行蚕食。统计算法、线上分析处理等则相当于食肉动物。食草动物有必要存在,因为没有它们,其他动物无法存活,但顶级掠食者有更为刺激的生活。
机器学习专家在计算机科学家中就是一种精英式的“神职”。许多计算机科学家,尤其是更老的那一代,并不如他们想的那样能很好地理解机器学习。这是因为,计算机科学通常需要的是准确思维,但机器学习需要的是统计思维。
工业革命使手工业自动化,信息革命解放了脑力劳动,而机器学习则使自动化本身自动化。没有机器学习,程序员会成为阻挠进步的障碍。有了机器学习,进步的步伐就会加快
学习算法就是“媒人”:它们让生产商和顾客找到对方,克服信息过载。如果这些算法足够智能,你就能取得两全其美的结果:从宏观来讲,选择广、成本低;从微观来讲,能够了解顾客的个性化需求。学习算法并不是完美的,决定的最后一步通常还得由人来做,但学习算法很智能,为人们减少了需要做的选择。
回顾过去,我们看到,从计算机到互联网再到机器学习的进步是必然的:计算机使互联网成为可能,这个过程产生大量数据以及无限选择这个问题。单单互联网还不足以把“一个尺寸满足所有”的需求转向追求无限多样化的长尾效应 最好的选择权仍在你手里——从算法给你展示的所有选项中挑选,但99.9%的选择由算法做出。当下,一家公司的成败取决于学习算法对其产品的喜爱程度,而整个经济体的成功——是否每个人都能得到自己需要的物美价廉的产品,则取决于学习算法的好用程度。
新型网络效应占据上风:谁有最多的用户,谁就能积累最多的数据,谁有最多的数据,谁就能学到最好的模型,谁学到最好的模型,谁就能吸引最多的用户,这是一种良性循环(如果你在竞争,就会变成恶性循环)。把搜索引擎从谷歌转换到必应,可能会比把应用系统从Windows切换到Mac要简单,但在实际操作中,你不会这么做,因为谷歌拥有领先优势及更大的市场份额,比必应更懂得你想要什么,虽然必应的技术也不错。可惜的是,必应刚进入搜索行业,没有什么数据资源,而谷歌却拥有十余年的机器学习经验。
机器学习在这时就会起作用,它能根据相关信息搜索文献,将某领域的行话翻译到另一个领域,并建立联系,而科学家们在过去都没有意识到。渐渐地,机器学习成为一个巨大的中心,通过这个中心,某领域里发明的建模技术将会被引入其他领域。
网络战争是不对称战争的一个例子,一方的传统军事实力比不上另一方,但仍然可以给对方造成严重伤害。少数恐怖分子只用美工刀就可以撞到双子塔,并让几千名无辜者遇难。当今美国安全最大的威胁就是不对称战争,而且抵抗所有威胁的有效武器就是信息。如果敌人躲不了,那么他也活不了。好消息就是我们有大量信息,但也有坏消息。
2011年,“大数据”的概念流行起来,机器学习被明确归入全球经济未来的中心。当今,似乎没有哪个人类钻研的领域不受到机器学习的影响,甚至包括看起来没有多大关系的领域(如音乐、体育、品酒)。
在机器学习领域,如果提供适当的数据来让机器学习,那么相同的算法既可以处理信用卡申请,也可以下棋。实际上,大量的机器学习应用仅仅由几个算法来负责,在接下来的几个章节中我们会谈到这些算法。
相同的学习算法不仅可以完成无穷无尽且不同的事情,而且和被它们替代的传统算法相比,它们要简单得多。多数学习算法可能只需数百行或者数千行代码。相比之下,传统程序则需几十万甚至上百万行代码,并且单个学习算法就可以导出无数个不同的程序。
实际上,对所有主要的学习算法——包括最近邻算法、决策树学习算法以及贝叶斯网络(朴素贝叶斯的概括)——来说,如果你为学习算法提供足够、适当的数据,该算法可以实现任一功能(对学习任何东西来说,都与数学相关)。需要注意的是,“足够数据”也有可能无限。
所有这些例子都证明,大脑自始至终只使用了一种相同的学习算法,那些负责不同知觉的区域,区别也仅仅在于与其相连、输入信息的器官(如眼睛、耳朵、鼻子)。反过来,关联区(大脑的各个皮层)通过与不同的感觉区(各个感觉器官)相连,来实现其机能,而执行区则通过连接关联区来实现其机能,然后输出反馈。
据贝叶斯统计学派的观点,贝叶斯定理是将数据变成知识的唯一正确方法。如果该学派的观点正确,贝叶斯定理要么就是终极算法,要么就是推动终极算法发展的动力。关于贝叶斯定理使用的方法,其他统计学派持非常保守的观点,而且会更愿意用不同方法来对数据进行学习。
在计算机科学中,P和NP是两类最重要的问题(很遗憾,名字不是很有助于记忆)。如果我们能有效解决它,那么这个问题就属于P;如果我们能有效找到其解决方案,那么这个问题属于NP。著名的P=NP的问题就是,能有效找到的问题是否可以得到有效解决。因为NP完全问题,回答这个问题需要的只是证明某个NP完全问题可被有效解决(或者无法被有效解决)。NP在计算机科学领域并不是最难的一类问题,但可以说,它是最难的“现实”类问题
在人工智能出现早期,机器学习似乎是通往类人智能计算机的途径。图灵和其他人认为,机器学习是唯一看似合理的途径。但后来知识工程师进行了回击,而且20世纪70年代机器学习处于次要地位。在20世纪80年代的一段时间,似乎知识工程师要接管世界了,还有许多企业和国家对知识工程领域进行大量投资。但后来人们开始对该领域失望,而机器学习也开始崛起,一开始悄无声息,后来就突飞猛进。
科学经历了三个时期:布拉赫时期、开普勒时期、牛顿时期。对于布拉赫时期,我们收集了很多数据,就像第谷·布拉赫日复一日、年复一年耐心记录行星的位置那样。对于开普勒时期,我们使经验规律符合数据,就像开普勒对行星运动所做的那样。对于牛顿时期,我们发现了更深刻的真理。大多数科学研究和布拉赫、开普勒所做的工作相似,这样的工作就是科学研究的内容,像牛顿偶然发现定律的例子则少见。当今,大数据所做的工作是布拉赫的数十亿倍,机器学习的工作内容是开普勒的数百万倍。如果(但愿如此)有更多像牛顿偶然发现定律这样的时刻,这样的时刻也可能发生在未来的学习算法中
理论是关于世界是什么的一系列约束条件,而不是对世界的完整描述。为了获得对世界的完整描述,你必须将理论和数据结合起来。 理论的强大之处在于它简化了我们对世界的描述。有了牛顿定律,我们首先只需知道某个时间点所有物体的质量、状态、速度,其次就是所有时段的状态及速度。
当在生物学领域有所发现时,终极算法会首先阅读它需要的生物学知识,依靠的是之前就学会的阅读技巧。终极算法不只是被动地消耗知识,它可以和周围的环境进行互动,然后积极寻找它想要的数据,就像机器人科学家“亚当”一样,或者像所有探索世界的孩子一样。
贝叶斯学派最关注的问题是不确定性。所有掌握的知识都有不确定性,而且学习知识的过程也是一种不确定的推理形式。那么问题就变成,在不破坏信息的情况下,如何处理嘈杂、不完整甚至自相矛盾的信息。解决的办法就是运用概率推理,而主算法就是贝叶斯定理及其衍生定理。贝叶斯定理告诉我们,如何将新的证据并入我们的信仰中,而概率推理算法尽可能有效地做到这一点。
对于类推学派来说,学习的关键就是要在不同场景中认识到相似性,然后由此推导出其他相似性。如果两个病人有相似的症状,那么也许他们患有相同的疾病。问题的关键是,如何判断两个事物的相似程度。类推学派的主算法是支持向量机,主算法找出要记忆的经历,以及弄明白如何将这些经历结合起来,用来做新的预测。
理性主义与经验主义是哲学家最热衷讨论的问题。柏拉图是早期的理性主义者,而亚里士多德是早期的经验主义者。关于这个问题的辩论,真正开始于启蒙运动时期,每方有三位伟大的思想家:笛卡儿、斯宾诺莎、莱布尼茨是理性主义的代表,洛克、贝克莱、休谟则是经验主义的代表。因为相信自己的推理能力,理性主义者编造出宇宙理论(委婉地说),这经不住时间的考验,但他们也创造了基本的数学知识,比如微积分和解析几何。经验主义总体来说更为实际,而且它们随处可见,从科学方法到美国宪法都有它们的身影。
休谟的问题也正是我们开启寻找终极算法之旅的开始。首先,我们会通过日常生活中的例子来解释这个问题,并通过现在人人皆知的“天下没有免费的午餐”这个定理来体现这个问题。然后我们会看到符号学者对休谟的回答。这把我们引向机器学习中最重要的问题:不真实存在的过拟合或幻觉模式。我们会看到符号学者如何解决它。机器学习本质上是一种炼金术,在魔法石的辅助下把数据变成知识。对于符号学者来说,魔法石就是知识。
“天下没有免费的午餐”这个实际的结论表明,不靠知识进行学习,这样的事不存在。只有数字也不够。从零开始只会让你一无所获。机器学习就像知识泵,我们可以用它来从数据中提取大量的知识,但首先我们得先对泵进行预设。
规则集在很大程度上比合取概念要有力得多。实际上,规则的力量如此之大,大到你可以用规则来代表任何概念,要找到原因则很难。如果你给我某个概念的完整例子,我只能将每个例子变成一个规则。这个规则规定了每个例子的所有属性,而这些规则的集合就是该概念的定义。
每当算法在数据中找到现实世界中不存在的模型时,我们说它与数据过于拟合。过拟合问题是机器学习中的中心问题。在所有主题中,关于过拟合问题的论文最多。每个强大的学习算法,无论是符号学算法、联结学算法,或者其他别的学习算法,都不得不担忧幻觉模式这个问题。避免幻觉模式唯一安全的方法,就是严格限制算法学习的内容,例如要求学习内容是一个简短的合取概念。很遗憾,这种做法就像把孩子和洗澡水一起倒掉一样
总结:学习就是你拥有的数据的数量和你所做假设数量之间的较量。更多的数据会呈指数级地减少能够成立的假设数量,但如果一开始就做很多假设,最后你可能还会留下一些无法成立的假设。一般来说,如果学习算法只做了一个指数数量的假设(例如,所有可能的合取概念),那么该数据的指数报酬会将其取消,你毫无影响,只要你有许多例子,且属性不太多。另外,如果算法做了一个双指数的假设(例如,所有可能的规则集),那么数据只会取消其中的一个指数,而且你仍会处于麻烦之中。
逆向演绎的另外一个局限性就在于,它涉及很密集的计算,因此很难扩展到海量数据集中。因为这些原因,符号学家选择的算法是决策树归纳。决策树可以当作此类问题的答案:如果有多个概念的规则对应一个实例,那怎么办?
决策树的原理就像玩一个有实例的20问游戏。从“根部”开始,每个节点都会问每个属性的值,然后根据答案,我们沿着这个或另外一个分支继续下去。当到达“树叶”部分时,我们读取预测的概念。从“根部”到“树叶”的每条路线都对应一个规则。 决策树可应用在许多不同的领域。在机器学习领域,决策树源于心理学方面的知识。厄尔·亨特及其同事于20世纪60年代利用了决策树,目的是为了模拟人类如何掌握新的概念。另外,亨特其中的一个研究生罗斯·昆兰后来尝试把决策树用于象棋中。
符号学派的核心理念就是,所有和智力相关的工作都可以归结为对符号的操纵。数学家在解方程时,会移动符号,然后根据预先定义的规则,用其他符号来代替这些符号。逻辑学家进行推论时也是同样的道理。根据这个假设,智力是独立于基质的。符号处理是通过写在黑板上进行的,还是通过打开或关闭晶体管、放电神经元,或者玩玩积木就能完成的,这些都不重要。如果你能利用万能图灵机的力量来进行设置,那么就能做任何事情。软件可以和硬件清晰地分离。
赫布律,就如它为人们所知的那样,是联结主义的奠基石。确实,联结主义相信知识储存在神经元之间的联结关系中,它也因此而得名。唐纳德·赫布(Donald Hebb)是加拿大的心理学家,
这并不意味着我们就不能利用计算机来模拟人脑,毕竟这是联结学派算法要做的事。因为计算机是通用的图灵机,只要我们给它足够的时间和记忆力,它就能执行大脑的计算,以及别的任何事情。尤其计算机可以利用速度来弥补缺乏连接的劣势,千千万万遍利用同样的线来模拟1000根线。实际上,目前计算机和人脑相比,主要的限制是能量损耗:人的大脑消耗的能量仅仅相当于一个小灯泡,而沃森消耗的电却能点亮整栋办公楼。
实际上,联结学派有实质性的进步。如果联结学派是过山车,那么对于最近的过山车转弯,贡献者之一的就是一个看上去普通的小设备,称为“自动编码器”。一台自动编码器就像一个文件压缩工具,它有两个重要的优点:知道如何自行压缩东西,和霍普菲尔德网络一样;可以把一张杂乱、扭曲的图片变得干净清晰。
叠加自动编码器不是唯一的深度学习算法,另外一种以玻尔兹曼机器作为基础,还有一种——卷积神经网络,则把视皮质模型作为基础。尽管取得了很大的成功,然而这些成果仍与大脑相去甚远。
遗传算法也会做同样的事情,它产出的是程序而不是活的生物体,而一代对它而言是几秒的计算机时间,而不是生物的一生。
我们应注意遗传算法和多层感知器的差异程度。反向传播会在任何给定时间坚持单一假设,而且这个假设会渐渐改变,直到其适应某个局部最优值。遗传算法会在每一步中考虑整个群体的假设,而由于交叉行为,这些假设可以从这一代跨到下一代。将初始权值设为小的随机值后,反向传播才会确定继续进行下去。相反,遗传算法则充满随机选择:该使哪些假设成立并进行交叉(适应度更高的假设更有可能成为备选对象),该在哪里对两个字符串进行交叉,该使哪些比特的信息发生突变。反向传播为了预先设定的网络结构掌握权值;密集度更大的网络更为灵活,但掌握起来也更困难。除了通用式以外,遗传算法不会对它们即将学习的结构进行预先假设。
遗传编程的第一次成功是在1995年,也就是成功设计了电子电路。以一堆电子元件为开端,例如,晶体管、电阻器、电容器,科扎的系统为了一台低通滤波器,彻底改造之前的一个专利设计(这是一个电路图,其用途之一就是加强舞蹈音乐中的低音)。自那以后,他就开始对专利设备进行改造,成打地改造出其他设备。下一个里程碑于2005年到来,当时美国专利及商标局为一项专利颁奖,该专利根据遗传学设计,是工厂的优化系统。
性在机器学习中可能还未取得成功,但作为一种安慰,它已经在技术的发展中起到重要作用。色情描写是万维网中未公开承认的“杀手级应用”,更别说它在印刷、摄影、视频领域就更受欢迎了。振动器是第一台手持电子设备,预示着一个世纪之后手机的出现。小型摩托车在战后的欧洲,特别是在意大利受到欢迎,因为它们能够让年轻的夫妇离开家人。100万年前,当直立人发现火时,其中的一个“杀手级应用”当然是便于约会。同样肯定的是,“拟人化”机器人变得越来越真实,其主要推动力是性爱机器人行业的发展。性似乎才是最后的结局,而不是技术演化的手段。
演化新论者和联结学派重要的共同点是:他们都因为受到自然启发而设计了学习算法,不过后来分道扬镳了。演化新论者关注的是学习架构,对他们来说,通过参数优化来对演化的架构进行微调,这是次重要的事情。相反,联结学派更喜欢用一个简单、手工编写的结构,加上许多连接行为,然后让权值学习来完成所有工作。这就是机器学习版本关于先天和后天的争论,而且双方都有很好的论据。
进化寻求好的结构,而神经学习则填满这些结构:这样的结合是我们走向终极算法最简单的一步。先天与后天之争是无休止的波折,这个波折持续了2500年,且争论会越来越激烈,对于熟悉这一点的人来说,这可能就像一个惊喜。然而,通过计算机的眼睛来看待生命能够将很多东西进行分类。“自然”对计算机来说就是它运行的程序,而“人工”则是获取的数据
与联结学派及演化新论者相反,符号学派和贝叶斯学派不相信“法自然”的说法。他们想从基本原理中找出学习算法该做什么,而且也包括我们人类。
对于贝叶斯学派来说,学习“仅仅是”贝叶斯定理的另外一个运用,将所有模型当作假设,将数据作为论据:随着你看到的数据越来越多,有些模型会变得越来越有可能性,而有些则相反,直到理想的模型渐渐突出,成为最终的胜者。贝叶斯学派已经发明出非常灵活的模型。
贝叶斯学派的回答是:概率并非频率,而是一种主观程度上的信任。因此,用概率来做什么由你决定,而贝叶斯推理让你做的事就是:通过新证据来修正你之前相信的东西,得到后来相信的东西(也被人们称为“转动贝叶斯手柄”)。贝叶斯学派对此观点的忠实近乎虔诚,足以经得住200年的攻击和计算。计算机已经强大到足以做贝叶斯推理,且在大数据的辅助下,它们开始占据上风。
马尔可夫链无处不在,而且是人们研究最多的数学话题,但它仍是受到很大限制的概率模型。 20世纪80年代终于有了突破。朱迪亚·珀尔(加州大学洛杉矶分校的一名计算机科学教授)发明了一种新的表示方法:贝叶斯网络。珀尔是世界上最为卓著的计算机科学家之一,他的方法在机器学习、人工智能,以及其他许多领域迅速传播。2012年,他获得图灵奖,这是计算机科学领域的诺贝尔奖。 珀尔意识到,拥有一个随机变量之间复杂的依赖关系网络也没什么,只要每个变量仅仅直接依赖于其他几个变量。我们可以如之前看到的马尔可夫链和HMM那样,用一幅图来表示这些依赖关系,除了现在该图可以是任意结构(只要箭头不会形成闭环)。
既然我们(多多少少)知道了如何解决推理难题,就可以从数据中掌握贝叶斯网络了,因为对于贝叶斯学派来说,学习只是另一种形式的概率推理。你需要做的只是运用贝叶斯定理,把假设当作可能的原因,把数据当作观察到的效果: P (假设∣数据)=P (假设)×P (数据∣假设)/P (数据)
马尔可夫网络是一组特征以及对应的权值,特点和权值共同定义概率分布。像贝叶斯网络一样,马尔可夫网络可以通过图表来表示,但它们用无向弧而不用箭头。两个变量被联结起来,这意味着它们会直接相互依赖,如果它们一起出现在某个体征中,马尔可夫网络在许多领域中能起到主要作用,例如,计算机视觉。 马尔可夫网络可以经过训练,来最大化整个数据的可能性,或者在知道某些信息的情况下,将我们想预测的事情的可能性最大化。
类比是推动许多历史上最伟大科学进步的动力。当达尔文阅读马尔萨斯的《人口论》时,被经济和自然界中生存竞争的相似性触动,所以有了自然选择理论的诞生。波尔的原子核模型是由将模型看作微型太阳系、将电子看作行星、将原子核看作太阳而产生的。克库勒也是白天做梦梦见蛇吃自己的尾巴才发现苯分子的环状结构的。
最近邻算法,正如其名,是我们类比学习法之旅的第一站。第二站是支持向量机,这是世纪之交风靡机器学习领域的原理,但最近风头被深度学习掩盖。第三站也是最后一站,是成熟的类比推理法,几十年来是心理学和人工智能的重要组成部分,也是几十年来机器学习领域的背景主题。
在机器学习中,相似性是核心思想之一,而类推学派会以各种伪装的方式来保护它。也许在未来10年,机器学习会被深度类比统治,在某种算法中,与最近邻法的高效、支持向量机的数学精密性、类比推理的力量和灵活性结合
最近邻算法是人类有史以来发明的最简单、最快速的学习算法。实际上,你甚至可以说,这是人类可以发明的最快速的算法。它可以说什么也不做,所以花在运行上的时间为零。 最近邻算法则走捷径:如果数据库中与简上传的最相似的那张照片是脸部照片,那么简的照片也是。要出现这种情况,数据库就得有一张照片,与新照片足够相似,因此,数据库越大越好。
有了最近邻算法,每个数据点就是自己的微型分类器,为所有获取的查询例子预测级别。最近邻算法就像一群蚂蚁,在这个队伍中每只蚂蚁都做得很少,但把力量聚集在一起,它们就可以移动高山。如果一只蚂蚁的负重过大,它可以和周围的蚂蚁共同承担。
实际上,没有哪种算法能够幸免于维数灾难。这是机器学习中,继过拟合之后,第二个最糟糕的问题。“维数灾难”这个术语由理查德·贝尔曼在50岁时提出的,他是一位控制论理论家。他观察到,控制算法在三维空间中可以起到很好的作用,但在高维度空间中则变得效率极低。例如,当你想控制机器人手臂中的每个节点或者化工厂的把手时,这种情况就会出现。但在机器学习中,问题不仅仅在于计算成本——随着维数上升,变得越来越困难的是学习本身。
支持向量机可以当作感知器的一个概括版,因为当你利用某个特定的相似性度量时,得到的就是类别之间的超平面边界(向量之间的点积)。但和多层感知器相比,支持向量机有一个重要优势:权值有单个最优条件而不是多个局部最优条件,因此可靠地掌握它们变得简单多了。虽然如此,支持向量机的表现力依旧不比感知器差。支持向量有效地扮演隐藏层的角色,而它们的加权平均值则起到输出层的作用。
除了游戏,研究人员还可以利用强化学习来平衡极点、控制简笔画的体操运动员、使汽车倒车入位、驾驶直升机颠倒飞行、管理自动电话对话、分配手机网络中的频道、调度电梯、安排航天飞机货运装载等。强化学习也对心理学和神经科学产生了影响。大脑利用神经递质多巴胺来传播期望奖励与实际奖励之间的区别。强化学习解释了巴甫洛夫条件反射作用,但不像行为主义,它允许动物有内部心理状态
机器学习既是科学,也是技术,两者的特点提示我们如何将其统一起来。在科学方面,理论的统一往往从看似简单的观察开始。两个看似不相关的现象原来只是同一枚硬币的两面,就像第一张倒下的多米诺骨牌,会引起其他许多牌倒下。
计算机本身就是统一物:单个设备可解决任何逻辑或者数学问题,只要我们知道如何对它进行编程。甚至电也是一种统一物:你可以通过许多不同的来源来获取它——煤、天然气、核能、水力、风力、太阳,然后以无限多种的方式来消耗它。一座发电站不会知道或者关心它生产的电会如何被消耗掉,而你的门廊灯、洗碗机或者全新的特斯拉也不会在意电力供应来自哪里。电力就是能源的世界语言。终极算法是机器学习的统一物:它让任意应用利用任意学习算法,方法是将学习算法概括成通用形式——所有应用都需要知道该形式。
最聪明的元学习算法之一就是推进,由两位学习领域的理论家约阿夫·弗罗因德和罗伯·夏皮尔创造。推进算法不是通过结合不同的学习算法,而是将相同的分类器不断应用到数据中,利用每个新的模型来纠正前面模型的错误。它通过将权值分布给训练实例的方式来完成这件事。每个被误分类的权值,在每轮学习过后都会增长,使得后面的几轮会更向它集中。推进算法的名字源于这样的想法:该过程可以推进只比随机猜测好一点的分类器,但如果持续如此,就会接近完美。
你的数字化未来从一个感悟开始:每次你和计算机相互作用时——无论是你的智能手机,还是几千英里以外的服务器——你都会从两个层面上这样做。第一个层面是,当场就得到你想要的东西,如问题的答案、你想买的产品、一张新的信用卡。第二个层面,从长远来看也是最重要的一个,就是教会计算机关于你的东西。你教会它越多的东西,它就越能更好地为你服务(或者操纵你)。生活就是你和包围你的学习算法之间的游戏。
在终极算法的世界里,“我的人会联系你的人”会变成“我的程序会联系你的程序”。每个人都会有一个机器人随从,在这个世界游刃有余地存在。交易完成了、条款谈妥了、安排做好了,这些都会在你举起手指头之前完成。 未来的网络空间会是一个巨大的平行世界,只会选择最有希望的东西在真实世界中进行试验,它就像一种新的全球性意识和人类身份。
当今你的数据可以分成四种:你和所有人分享的数据,你和朋友或者同事分享的数据,你和各种公司(不论是否有意)分享的数据,以及你不与别人分享的数据。第一种数据包括Yelp(美国最大的点评网站)、亚马逊、猫途鹰上的评论、易趣网的反馈评分、领英的简历、博客、推文等。这类数据价值巨大,是四类数据中问题最少的一类。你真的想让每个人都能用到这些数据,每个人也会从中受益。
也许你没注意到,其中会有一个收集你的数据的疯狂比赛。每个人都喜欢你的数据,这也难怪,它们是通往你的世界、你的钱包、你的投票甚至你的心灵的大门。但是每个人只能拥有它的一小部分:谷歌掌握你搜索的内容,亚马逊知道你网购的东西,美国电话电报公司会看到你的通话记录,苹果知道你下载的音乐,西夫韦懂得你购买的杂货,美国第一资本投资国际集团了解你的信用卡交易记录。诸如安客诚(Acxiom)之类的公司会整理并销售关于你的数据,但如果你可以对其进行检查(对于安客诚的情况,你可以在aboutthedata.com检查),数据并不多,而且有些还是错误的。没有人能够了解到完完整整的你。
总之,所有四类数据的分享都有问题。这些问题有一个共同的解决办法:新型公司与你的数据的关系,就像银行和你的钱的关系一样。银行不会偷你的钱(有也是极少数)。它们应该明智地对它进行投资,而且你的存款已经过FDIC(联邦存款保险公司)承保。
防止丢掉工作的最佳办法就是你自己对它进行自动化,这样就可以把时间用在你之前顾及不到、计算机近期地无法做到的所有部分(如果没有什么任务无法完成,那么就要在行业保持领先地位,现在就去找一份新工作)。如果计算机已经学会完成你的工作,不要试图与它竞争,而要利用它。
自然学习法本身已经经历了三个阶段:进化、大脑、文化。每个阶段都是前一个阶段的产物,而且每个阶段都会学得更快。机器学习逻辑上是该进程的下一阶段。计算机程序是世界上最快速的复制者:复制它们只需要不到一秒,但创造它们却比较缓慢(如果这件事由人类完成)。机器学习克服了瓶颈期,留下最后一个:人类可接受改变的速度。这个到最后也会被克服,但并不是因为我们决定将东西移交给我们的“智能后代”,正如汉斯·莫拉维克所称呼的那样,然后温柔地走进美好的夜晚。