我们生活在算法的时代。一两代人以前,提到“算法”这个词,可能多数人会脑中一片空白。当今,文明社会的每个角落都存在算法,日常生活的每分每秒也都和算法有关。算法不仅存在于你的手机或笔记本电脑,还存在于你的汽车、房子、家电以及玩具当中。当人们进出银行时,银行系统就是由各种算法交织而成的庞大集合体。算法安排航班,也驾驶飞机。算法能经营工厂、进行交易、运输货物、处理现金收益,还能保存记录。如果所有算法都突然停止运转,那么就是人类的世界末日。
算法就是一系列指令,告诉计算机该做什么。计算机是由几十亿个微小开关(称为晶体管)组成的,而算法能在一秒内打开并关闭这些开关几十亿次。最简单的算法是触动开关。一个晶体管的状态就是一个比特信息:如果开关打开,信息就是1;如果开关关闭,信息就是0。银行的计算机的某个比特信息会显示你的账户是否已透支。美国社会保障总署的计算机的某个比特信息表明你是活着还是已死亡。第二简单的算法是:把两个比特结合起来。克劳德·香农以“信息论之父”而为人所知,他第一个意识到晶体管的活动就是在运算,因为晶体管开了又关,是对其他晶体管的回应(这是他在麻省理工学院的硕士论文——有史以来最有意义的硕士论文)。如果A晶体管只有在B和C晶体管都打开时才打开,那么这时它就是在做小型的逻辑运算。如果A晶体管在B和C晶体管其中一个打开时才打开,就是另外一种小型逻辑运算。如果A晶体管在B晶体管任何关闭的时候打开,或者反过来,这又是第三种运算。信不信由你,所有算法,无论多复杂,都能分解为这三种逻辑运算:且,或,非。利用不同的符号来代替“且”“或”“非”运算,简单的算法就可以用图表来表示。例如,如果发烧可由感冒或者疟疾引起,那么你应该用泰诺来治疗发烧和头疼,可以用图1–1表示。
图1–1
通过结合许多这样的逻辑运算,我们可以进行极其复杂的逻辑推理。人们往往认为计算机只和数字有关,其实并非如此,它完全关乎逻辑。数字和算术都是由逻辑构成的,而计算机的所有其他部分也是如此。想把两个数相加?可以由晶体管的组合体来完成。想赢得《危险边缘》智力比赛?也可以由晶体管的组合体来完成(当然,这个组合体庞大得多)。
即便如此,为了做不同的事而制造新的计算机代价过于昂贵。当然,现代计算机是各种晶体管的大集合,能做许多不同的事,这取决于哪些晶体管被激活。米开朗琪罗说过,他所做的一切,就是从大理石石块中看出雕像,然后将多余的石头刻掉,直到雕像的形状显现出来。同样,算法排除计算机中多余的晶体管,直到出现想要的功能,无论是客机的自动驾驶仪,还是皮克斯的新电影,原理都是这样。
一种算法不仅是简单的一套指令,这些指令必须精确且不能模糊,这样计算机才能够执行。例如,食谱并不算一种算法,因为食谱没有明确给出做事的顺序,或者具体每一步是怎样的。一勺白糖到底是几克?每个尝试新食谱的人都知道,跟着食谱做,可能会做出很美味的食物,也可能会做得一塌糊涂。相比之下,算法总能得出同样的结果。即便食谱明确指出需要半盎司白糖,计算机也不知道如何执行,因为计算机不知道什么是白糖、什么是盎司。如果我们想对厨用机器人编程,让它来做蛋糕,我们要通过视频教它如何辨认白糖、如何拿起勺子等(我们现在仍在努力)。计算机必须知道如何执行算法,直到打开及关闭指定的晶体管。因此,食谱离算法还很远。
另一方面,下面是玩井字棋的算法:
如果你或对手有两粒连子,占据剩下的角落。
否则,如果两边有两个连子的走法,就那样走。
否则,如果正中央是空的,走正中央。
否则,如果你的对手走到角落,占据他的对角。
否则,如果有空白的角落,占据它。
否则,占据任意空白的角落。
这个算法有很大的优点,那就是它绝对不会输。当然,它仍忽略了许多细节,比如在计算机的记忆中,棋盘如何表示,而棋的走法又如何改变这种表示方法。例如,每个角落我们有两个比特,如果中间是空的,值就是00;如果有一个圈,值就变成01;如果有一个叉,值就变成10。即便如此,这也足够精确、清晰,能让有能力的编程员来填补被忽略的空白。它还有一个好处,就是不用我们自己指定算法,细到单个晶体管。在构建数据存储块时,我们可以使用之前存在的算法,而且有很多这样的算法供选择。
算法是一套严格的标准。人们常说,你没法真正了解某样东西,直到你能用一种算法来将其表达出来(理查德·费曼曾说,“如果我无法创造某样东西,那么也就无法理解它”)。方程式对物理学家和工程师来说就是谋生工具,而这也仅仅是一种特殊算法。例如,牛顿第二定律,可以说是有史以来最重要的等式,告诉你用物体的质量乘以其加速度,可以算出作用在物体上的力。该定律还隐含地告诉你,加速度等于作用力除以质量,要弄明白这一点,只需一个运算步骤。在科学的任何领域,如果某个理论无法用算法表示,那么它就不是很严谨(更别提你无法用计算机来解决这个问题,因为你能让计算机替你做的事实在太有限)。科学家提出理论,工程师制造设备,计算机科学家提出算法,这和理论及设备都有关。
设计算法并没有那么简单。这个过程充满陷阱,什么事都不能想当然。如果你的一些构建已经出错,就得找其他方法。设计算法最重要的一点就是,你得用一种计算机能理解的语言来将算法记录下来,比如Java或者Python(从这个角度看,就是一个程序)。接下来,你得对其进行纠错:找出每个误差并修正,直到计算机能够运行程序,而不至于搞砸。一旦你有了能完成你心愿的程序,就轻松多了。计算机会以飞快的速度,按我们的要求办事,而且毫无怨言。世界上的每个人都能享用你的创作成果。如果你愿意,这个成果可以一文不收;当然,如果你解决的问题足够有意义,这个成果也可以让你成为亿万富翁。程序员(创造算法并将其编码的人)是一个“小神灵”,能任意创造不同的世界。甚至你也可以说《圣经·创世记》里的神也是“程序员”:语言(而不是统治权)才是他创造世界的工具。语言构成了这个世界。当今时代,坐在沙发上利用笔记本电脑,你就可以成为一个“神”。你完全可以想象一个世界,并实现它。
有朝一日,计算机科学家会互相依赖各自的成果,然后为新事物创造算法。这些算法会与其他算法相结合,目的是利用其他算法的成果,反过来产生能服务更多算法的成果。每一秒钟,数十亿计算机里的数十亿晶体管会打开关闭数十亿次。算法形成新型生态系统,它将生生不息,具有无可比拟的生命多样性。
然而,不可避免地,在这个“伊甸园”里也会有狡猾的人存在,人们称之为“复杂性怪兽”。和九头蛇一样,这个复杂性怪兽有很多头,其中一个就是空间复杂性,即为了储存在计算机内存中,一个算法所需信息的比特数量。如果计算机无法提供该算法所需的内存,那么这个算法就没用,必须忽略。接着是邪恶的同类——时间复杂性:该算法运行多长时间,也就是说,在产生想要的结果之前,算法利用及重新利用晶体管的步骤有多少。如果算法运行时间太久,我们等不了,那么这个算法也没用。复杂怪兽最恐怖的一面就是人类的复杂性。当算法变得很复杂以致人类大脑已无法理解,当算法不同部分的交互过多且过于深入时,误差就会悄然潜入。我们找不到这些误差,也就无法纠正它们,算法也就不会做我们想做的事。即便我们让它运行起来,它也会停下来。对使用它的人来说,它没必要那么复杂,而且它和其他算法也合作得不好,这为日后埋下隐患。
每位计算机科学家每天都在和“复杂性怪兽”做斗争。如果科学家输了这场斗争,复杂性就会渗入我们的生活。你可能已经注意到,很多这样的斗争科学家已经输了。即便如此,我们也会继续构建我们的算法之塔,并迎接越来越大的挑战。每一代新的算法都要在之前的基础上构建,除了这代算法的复杂性,它们还面临之前算法的复杂性。塔会变得越来越高,会覆盖整个世界,但它也会变得越来越脆弱,像一座纸片做的房子,随时都会倒塌。算法里的微小误差可能导致价值10亿美元的火箭爆炸,或者可能导致停电,造成数百万美元的损失。算法以意想不到的方式进行交互,股票市场就会崩溃。
如果程序员是“小神”,复杂性怪兽就是魔鬼。慢慢地,魔鬼会赢得战争。
总得有个更好的方法来与魔鬼做斗争。
学习算法入门
每个算法都会有输入和输出:数据输入计算机,算法会利用数据完成接下来的事,然后结果就出来了。机器学习则颠倒了这个顺序:输入数据和想要的结果,输出的则是算法,即把数据转换成结果的算法。学习算法能够制作其他算法。通过机器学习,计算机就会自己编写程序,就用不到我们了。
哇!
计算机会自己编写程序。现在看来这是一个强大的想法,甚至可能有点吓人。如果计算机开始自己编程,那么我们将如何控制它们?我们会看到,人类可以很好地控制它们。可能会有人当即反对,这听起来太美好了,不像真的。当然,编写算法需要智力、创造力、问题解决能力,这些都是计算机没有的。如何把机器学习与魔法区分开来?的确,今天为止,人们能编写许多计算机无法学习的程序。可令人更为惊讶的是,计算机却能学习人们无法编写出来的程序。我们会开车、会辨认字迹,但这些技能都是潜意识发挥出来的,无法向计算机解释这些事情是如何完成的。但是,如果我们把关于这些事情的足够多的例子交给学习算法,该算法会很乐意弄明白怎样独立完成这些事情,这时我们就可以放手让算法去做了。邮局正是通过这种方法来识别邮政编码,自动驾驶汽车也是这样才得以实现在路上跑。
解释机器学习的力量的最好方法,也许就是将其与其他低技术含量的活动进行类比。工业社会,商品由工厂制造,这也意味着工程师必须弄明白商品如何通过零件组装起来、这些零件如何生产等,细到生产原料。这是一项大工程。计算机是人类发明的最复杂的产品,计算机设计、工厂生产、程序运行都涉及大量的工作。还有另外一种方法能让我们得到一些想要的东西:让自然规律去塑造它们。在农业当中,我们播种,确保种子有足够的水分和营养,然后收割成熟的作物。为什么技术不能这样?完全可以,而这也是机器学习的承诺。学习算法是种子,数据是土壤,被掌握的程序是成熟的作物。机器学习专家就像农民,播下种子,灌溉,施肥,留意作物的生长状况,事事亲力亲为,而不是退居一旁。
一旦我们这样看待机器学习,随即也会发生两件事:
第一,我们掌握的数据越多,我们能学的也越多。没有数据?什么也学不到。大数据?很多东西可以学习。这也是机器学习无处不在的原因,因为有飞速增长的数据。如果你在超市购买机器学习,其包装上可能会写着“只需添加数据”。
第二,机器学习是一把剑,利用这把剑可以杀死复杂性怪兽。只要有足够的数据,一段只有几百行代码的程序可以轻易生成拥有上百万行代码的程序,而且它可以为解决不同问题不停产生不同的程序。这可以显著降低程序员工作的复杂度。当然,就像对付九头蛇,我们砍掉它的头,会立即长出新头,但长出的头会变小,而且头的生长也需要时间,因此我们仍有可能胜出。
我们可以把机器学习当作逆运算,正如开平方是平方的逆运算、整合是分化的逆运算。正如我们会问“什么数的平方是16”,或者“导数为x+1的函数是什么”,我们也会问“什么算法会得出该结果”。我们很快会看到,怎样将这个观点运用到具体的学习算法中。
有些学习算法学习知识,有的则学习技能。“所有人都会死”是知识,骑单车是技能。在机器学习中,知识往往以统计模型的形式出现,因为多数知识都是可以统计的:所有人都会死,但只有4%是美国人。技能往往以程序的形式出现:如果马路向左弯曲,那么向左转动车头;如果一只鹿跳到你面前,那么立刻刹车(很遗憾,在写这本书时,谷歌的自动驾驶汽车仍会把被风吹起的塑料袋和鹿弄混)。通常,这些程序都很简单,复杂的是它们的核心知识。如果你能判断哪些邮件是垃圾邮件,那么你也就能判断该删除哪些邮件。如果你能在象棋游戏中判断这盘棋自己的优势在哪里,那么你也就懂得该怎么走(能让你处于最有利地位的一步)。
机器学习有许多不同的形式,也会涉及许多不同的名字:模式识别、统计建模、数据挖掘、知识发现、预测分析、数据科学、适应系统、自组织系统等。这些概念供不同群体使用,拥有不同的联系。有些有很长的半衰期,有些则较短。在本书中,我用“机器学习”一词泛指所有这些概念。
机器学习有时会和人工智能(AI)混淆。严格来讲,机器学习是人工智能的子域,但机器学习发展得如此壮大且成功,现已超越以前它引以为傲的母领域。人工智能的目标是教会计算机完成现在人类做得更好的事,而机器学习可以说就是其中最重要的事:没有学习,计算机就永远无法跟上人类的步伐;有了学习,一切都与时俱进。
在信息处理这个生态系统中,学习算法是顶级掠食者。数据库、网络爬虫、索引器等相当于食草动物,耐心地对无限领域中的数据进行蚕食。统计算法、线上分析处理等则相当于食肉动物。食草动物有必要存在,因为没有它们,其他动物无法存活,但顶级掠食者有更为刺激的生活。数据爬虫就像一头牛,网页相当于它的草原,每个网页就是一根草。当网络爬虫进行破坏行动时,网站的副本就会保存在其硬盘当中。索引器接着做一个页面的列表,每个词都会出现在页面当中,这很像一本书后的索引。数据库就像大象,又大又重,永远不会被忽略。在这些动物当中,耐心的野兽飞快运转统计和分析算法,压缩并进行选择,将数据变为信息。学习算法将这些信息吞下、消化,然后将其变成知识。
机器学习专家在计算机科学家中就是一种精英式的“神职”。许多计算机科学家,尤其是更老的那一代,并不如他们想的那样能很好地理解机器学习。这是因为,计算机科学通常需要的是准确思维,但机器学习需要的是统计思维。例如,如果有条规定是“垃圾邮件标记的正确率是99%”,这并不意味存在缺陷,而可能意味这是你的最好水平,已经很好用了。这种思维上的差别很大程度上也解释了为什么微软能赶上网景公司,但想赶上谷歌却困难得多。说到底,浏览器只是一个标准的软件,而搜索引擎则需要不同的思维模式。
之所以说机器学习研究者是超级计算机迷的另外一个原因,就是当今世界急需他们,但他们寥寥无几。按照计算机科学严格的标准,这样的人数量就更少了。蒂姆·奥莱利认为,“数据科学家”是硅谷最热门的职业。根据麦肯锡全球研究院估计,截至2018年,仅美国就需要再培养14万~19万机器学习专家才够用,另外还需要150万有数据头脑的经理。机器学习的应用爆发得如此突然,连教育都无法跟上其步伐,同时,人才奇缺也是因为这门学科在人们看来很难而令人望而生畏。教科书很可能会让你感到数学很难,然而,这个困难表面看起来很大,其实并不是。机器学习所有的重要观点可以不用通过数学表示出来。当你读这本书时,甚至可能会发现,你发明了自己的学习算法,而且看不到一个方程式的影子。
工业革命使手工业自动化,信息革命解放了脑力劳动,而机器学习则使自动化本身自动化。没有机器学习,程序员会成为阻挠进步的障碍。有了机器学习,进步的步伐就会加快。如果你是一个懒惰又不那么聪明的计算机科学家,机器学习就是理想的职业,因为学习算法会完成所有事情,功劳却是你的。从另一方面讲,学习算法会让我们失业,这也只是我们应受的惩罚。
将自动化带入新的高度,机器学习革命会带来广泛的经济及社会变革,正如互联网、个人计算机、汽车以及蒸汽机在当时对社会和经济的影响那样。这些变革已经明显存在的领域就是商业。
为何商业拥护机器学习
为什么谷歌比雅虎要有价值得多?它们都是用户登录最多的网站,都靠在网页上登广告赚钱。它们都用拍卖的方式销售广告,用机器学习来预测用户点击某广告的概率(概率越大,广告价值越大),但谷歌的机器学习就比雅虎要好很多。这不是它们市场价值差异巨大的唯一原因,却是主要原因。如果没有达到预测的点击量,对广告商来说就是浪费机会,对网站来说是收益损失。谷歌每年的收入是500亿美元,预测点击率每上升1%,就可能意味着每年为公司带来额外5亿美元的收入。难怪谷歌是机器学习的铁杆粉丝,雅虎和其他公司也在奋起直追。
网络营销仅仅是巨大变革中的一种表现形式。无论什么市场,生产商和用户在交易发生之前,都需要进行联系。在互联网出现之前,交易的主要障碍就是实地交易。你只能从当地的书店购买书籍,而当地书店的书架空间又有限。但当你可以随时把所有书下载到电子阅读器时,问题就变成了可供选择的书太多。你怎么浏览书店里上百万不同名字的书?同样的问题也出现在其他信息产品当中:视频、音乐、新闻、推特文章、博客、网页。这个问题还会出现在能够远程购买的产品和服务当中:鞋子、鲜花、小配件、酒店房间、辅导、投资。人们在找工作或挑日子时,也会遇到选择过多的问题。你们如何找到彼此?这是信息时代的定义问题,而机器学习就是问题解决方案的主要部分。
当公司不断发展壮大后,它会经历三个阶段:
第一阶段的所有事都由人工完成——夫妻店的店主亲自了解其顾客,他们依照顾客类型订购、展示、推荐产品。这很不错,但规模不大。
第二阶段是最辛苦的时期,公司变得越来越大,需要用到计算机。公司招来程序员、顾问,买来数据库管理器,程序员编写了成百万行的代码来使公司所有能自动化的功能自动化。更多的人享受到服务,但也有麻烦:决定是在粗略的人口统计类别的基础上做出来的,计算机程序也过于死板,无法与人类无限的才能相匹配。
经过一段时间进入第三阶段,没有足够的程序员和顾问满足公司的需要,因此公司不可避免地向机器学习寻求帮助。亚马逊无法通过计算机程序将所有用户的喜好熟练地进行编码,脸书也不知道如何编写这样的程序,能选择最好的更新内容展示给每位用户。沃尔玛每天销售百万件商品,还要做数十亿个选择。如果沃尔玛的程序员努力编写出能够做所有选择的程序,这些选择就不用人来做了。相反,这些公司所做的工作是,它们在收集到如山的数据后,让学习算法尽情学习,然后预测顾客想要什么产品。
学习算法就是“媒人”:它们让生产商和顾客找到对方,克服信息过载。如果这些算法足够智能,你就能取得两全其美的结果:从宏观来讲,选择广、成本低;从微观来讲,能够了解顾客的个性化需求。学习算法并不是完美的,决定的最后一步通常还得由人来做,但学习算法很智能,为人们减少了需要做的选择。
回顾过去,我们看到,从计算机到互联网再到机器学习的进步是必然的:计算机使互联网成为可能,这个过程产生大量数据以及无限选择这个问题。单单互联网还不足以把“一个尺寸满足所有”的需求转向追求无限多样化的长尾效应。网飞公司的库存里可能有10万种不同名字的DVD(数字多功能光盘),但如果顾客不懂得如何找到自己喜欢的,他们就会默认选择最流行的DVD。只有网飞公司有了学习算法之后,才能帮助它了解顾客的喜好,并推荐DVD,长尾效应也才得以真正实现。
一旦必然的事情发生,机器学习成为媒介,那么其力量也开始慢慢积聚。谷歌的算法很大程度上决定你会找到什么信息,亚马逊决定你会买到什么产品,全球最大的婚恋网站默契网(Match.com)决定你的约会对象是谁。最好的选择权仍在你手里——从算法给你展示的所有选项中挑选,但99.9%的选择由算法做出。当下,一家公司的成败取决于学习算法对其产品的喜爱程度,而整个经济体的成功——是否每个人都能得到自己需要的物美价廉的产品,则取决于学习算法的好用程度。
公司确保学习算法喜爱其产品的最佳方法就是,让公司自己运行算法。谁有最佳算法、数据最多,谁就能赢。新型网络效应占据上风:谁有最多的用户,谁就能积累最多的数据,谁有最多的数据,谁就能学到最好的模型,谁学到最好的模型,谁就能吸引最多的用户,这是一种良性循环(如果你在竞争,就会变成恶性循环)。把搜索引擎从谷歌转换到必应,可能会比把应用系统从Windows切换到Mac要简单,但在实际操作中,你不会这么做,因为谷歌拥有领先优势及更大的市场份额,比必应更懂得你想要什么,虽然必应的技术也不错。可惜的是,必应刚进入搜索行业,没有什么数据资源,而谷歌却拥有十余年的机器学习经验。
你可能会认为,过一段时间,更多的数据结果意味着更多的重复,但数据的饱和点还未出现,长尾效应持续起作用。如果你看亚马逊或网飞公司为你提供的推荐产品,很明显,这些推荐项仍很粗略,而谷歌的搜索结果也有很大的优化空间。每个产品的特性、网页的每个角落都有很大的潜力,能通过机器学习得到改善。网页底部的链接应该是红色的还是蓝色的?两个颜色都试试,看看哪个颜色的点击率会更高。还有,最好让机器学习持续运行,不断调整网页的所有方面。
所有拥有众多选择和大量数据的市场都会发生这样的动态循环。比赛正在进行,谁学得最快,谁就赢了。随着越来越好地了解用户需求,这个比赛不会停止:企业可以将机器学习应用到企业运作的每个方面,只要有足够的数据,只要数据能够从计算机、通信设备以及更廉价、更普适的传感器源源不断地输出。“数据是新型石油”是目前的流行说法,既然是石油,提炼石油就是一笔大生意。和其他公司一样,IBM已制定经济增长战略,为企业提供分析服务。业界将数据看作战略资产:我有什么数据,而竞争对手却没有?我要怎么利用这些数据?竞争对手有什么数据,而我却没有?
同样的道理,没有数据库的银行无法和有数据库的银行竞争,没有机器学习的企业也无法跟上使用机器学习的企业。虽然第一家公司的专家写了上千条规则,预测用户的喜好,但是第二家公司的算法却能学习数十亿条规则,一整套规则都可用于每位用户。这就相当于长矛对机关枪。机器学习是很棒的新技术,但这并不是商业界拥护它的原因——人们之所以拥护它,是因为别无选择。
给科学方法增压
机器学习是“打了类固醇”的科学方法,也遵循同样的过程:产生假设、验证、放弃或完善。科学家可能会花费毕生精力来提出或验证几百个假设,而机器学习系统却能在一秒钟内做完这些事。机器学习使科学的发现过程自动化。因此,并不奇怪,这既是商业领域的革命,也是科学领域的革命。
为了取得进步,科学的每个领域都需要足够的数据,以与其研究现象的复杂性相对应。这是物理成为第一个腾飞学科的原因:第谷·布拉赫对星球位置的记录,以及伽利略对钟摆摆动、斜面的观察,已经足以推导出牛顿定律。这也是为什么虽然分子生物学这个学科比神经科学年轻,但是已超越神经科学:DNA(脱氧核糖核酸)微阵列以及高通量测序技术提供了大量的数据,而神经科学家对此只能可望而不可即。这也是为什么社会科学研究是一场艰苦卓绝的斗争:你拥有的只是100人的样本和每个人的十几个测量值,你能模拟的也只是某个规模很有限的现象,甚至这个现象可能不是孤立存在的,还受到其他现象的影响,这就意味你仍然没有彻底了解它。
有个好消息,那就是之前缺乏数据的学科现在拥有很多数据。用不着让50名睡眼惺忪的本科生到实验室完成任务并付给他们报酬,心理学家通过在亚马逊“土耳其机器人”[3]上发布实验任务,就可以找到满足他们数量要求的实验对象(这个网站对更多样化的样本也有帮助)。虽然回想起来越来越困难,但也只是10年前,研究社交网络的社会学家哀叹说,他们无法得到成员超过几百人的社交网络。现在有了脸书,有超过10亿用户。大部分用户会发布有关他们生活的很多细节,就像地球社会生活的实时直播。在神经科学领域,神经连接组学和功能性磁共振成像让人们对大脑有了十分详细的了解。在分子生物学领域,基因和蛋白质的数据库数量以指数级速度增长。甚至更为“年长”的学科,如物理学和解剖学也在不断进步,因为粒子加速器和数字巡天领域的数据在源源不断输出。
如果你不将大数据变成知识,它将毫无用处,可是世界上没有那么多科学家来完成这件事。埃德温·哈勃通过钻研照相底片发现新的星系,但史隆数字巡天计划中,多达5亿的天体肯定不是这样被辨认出来的。这就像在沙滩上用手来数沙粒的数目。你可以记录规则,把星系从星星及干扰物(如鸟、飞机、超人)区分开来,但得出的星系并不是那么准确。相比之下,天体图像目录编辑和分析工具(SKICAT)项目使用了学习算法。底片包括标记了正确类别的天体,从这些底片出发,学习算法可以明白每个分类的特点,并将其应用到没有标记的底片当中。甚至更理想的是,学习算法能够将那些对人类来说难以标记的天体进行分类,这些天体正是该项调查计划的主要内容。
有了大数据和机器学习,你就能弄明白比之前复杂很多的现象。在多数领域,科学家一般只使用种类很有限的模型,例如线性回归模型,在这个模型当中,你用来适应数据的曲线总是一条直线。遗憾的是,世界上的大多数现象都是非线性的(或者说这也是一件幸事,如果是线性的,生活会变得非常乏味。实际上,那样就不会存在生命了)。机器学习打开了广阔、全新的非线性模型世界。这就好比在只有几缕月光照射的房间,打开了明亮的灯。
在生物学领域,学习算法的研究成果包括:DNA分子中基因的位置;在蛋白质合成前,多余的核糖核酸在哪里进行绞接;蛋白质如何折叠成各自的特有形状;不同条件如何对基因的表达造成影响。用不着在实验室对新药进行测试,机器学习就可以预测这些药物是否有效,只有最有效的药品才会受到测试。学习算法还会剔除那些可能产生严重副作用(甚至导致癌症)的药物,备选药物无须在经过人体试验被证明无效后才被禁止使用,从而避免了代价昂贵的失败。
然而,最大的挑战就是将所有这些数据组合成一个整体。导致你患心脏病的因素有哪些?这些因素如何相互影响?牛顿需要的只是三个运动定律和一个万有引力定律,但一个细胞、一个有机体、一个社会的完整模型却无法由一个人来发现。虽然随着知识的增长,科学家的分工变得越来越细,但是没有人能够将所有知识整合到一起,因为知识太多了。虽然科学家们会合作,但语言是传播速度非常缓慢的介质。虽然科学家们想努力追上别人的研究,但出版物的数量如此之多,他们的距离被拉得越来越远。通常是,重做一项实验比找到该实验的报告还要容易。机器学习在这时就会起作用,它能根据相关信息搜索文献,将某领域的行话翻译到另一个领域,并建立联系,而科学家们在过去都没有意识到。渐渐地,机器学习成为一个巨大的中心,通过这个中心,某领域里发明的建模技术将会被引入其他领域。
如果计算机没有被发明出来,20世纪下半叶的科学将停滞不前。这可能不会很快在科学家当中表现出来,因为他们专注于所有仍可努力实现、有限的进步,但进步的空间真的太小了。同样,如果没有机器学习,许多科学在未来10年将会面临收益递减。
为了预见科学的未来,看看曼彻斯特大学生物技术研究院的实验室,在那里,一个名叫亚当的机器人正在努力工作,目的是找到哪些基因在酵母中对哪些酶进行编码。亚当有一个酵母新陈代谢的模型,还掌握了基本的基因及蛋白质知识。它提出假设,设计实验验证假设,进行实地实验,分析结果,提出新的假设,直到它满意为止。当下,人类科学家仍然在独立检查亚当的结果,然后才会相信这些结果,但在未来,他们就会交给机器人科学家来验证彼此的假设。
10亿个比尔·克林顿
在2012年的美国总统选举中,机器学习决定了谁能当上总统。通常决定总统选举的因素包括经济、候选人的亲民度等,但这些因素没有起到作用,而选举的结果主要受到几个“摇摆州”的影响。米特·罗姆尼的竞选采用的是传统的投票策略,将选民分成几大类,然后选择是否把每个类别作为目标。尼尔·纽豪斯(罗姆尼的民意调查专家)说道:“如果我们能在俄亥俄州赢得无党派人士,那么这场竞赛我们就赢了。”虽然罗姆尼获得了7%无党派人士的支持,但他仍失去了这个州,在竞选中失利。
相比之下,奥巴马总统雇用了拉伊德·贾尼(机器学习专家,他是奥巴马竞选中的首席科学家)。贾尼研究的是如何整合最伟大的分析运算,并将其应用到政治史中。他们将所有选民的信息整合成单个数据库,然后将该数据库和他们能在社交网络、市场营销等领域找到的资源结合起来。之后着手对每个选民做四种预测:(1)支持奥巴马的可能性有多大;(2)会不会参加民意调查;(3)会不会回应竞选宣传并照做;(4)对特定问题进行对话之后,他们会不会改变选举决定。基于这些选民的例子,奥巴马团队每个晚上进行66 000场选举模拟,并用这些结果指导奥巴马竞选的志愿者大军:该给谁打电话,该拜访谁,该说什么。
在政界、商界以及战争中,最糟糕的事情莫过于,你不明白对手的行动,而知道该怎么做时,为时已晚。这就是发生在罗姆尼竞选中的事情,他们能看到对手的团队在特定镇的特定电台花钱做宣传,却不知道这是为什么,他们能预测的实在太少。最后,奥巴马除了北卡罗来纳州以外,赢得了每个州,而且与最可靠的民意调查专家的预测相比,他赢得了更多。反过来,最可靠的民意调查专家(例如内特·希尔)使用的是最复杂的预测技术,预测结果却没有奥巴马竞选团队的结果准确,因为他们的资源比较少。但他们比那些所谓的权威人士要准确很多,因为那些人的预测只是基于他们自己的专业知识。
也许你会认为,2012年的美国总统竞选只是机缘巧合:大多数选举结果并不那么接近,机器学习无法成为决定因素。但未来机器学习会让更多的选举结果更接近。在政界,正如在所有领域那样,学习就像一场掰手腕比赛。在卡尔·罗夫(前直销商和数据挖掘工程师)的年代,共和党是领先的。到了2012年,共和党开始掉队,但现在他们又追上来了。我们不知道下一轮选举谁会领先,但我们知道两个党派为了赢得选举都很努力。这也就意味着,应该更好地了解选民,根据候选人的情况进行宣传,甚至根据实际情况选择候选人。在选举期间以及每轮选举之间,这适用于整个党纲:在硬数据的基础上,如果详细的选民模式表明该党派现在的纲领是失败的,那么该党派就应改变它。因此,把主要选举活动放到一边,民意调查中候选人的差距会变得越来越小,而且很快会消失。其他条件不变,拥有更好选民模式的候选人会赢得选举,而选民也会因此得到更好的服务。
政治家最伟大的才能之一,就是能够了解其选民个人或者选民团体,然后直接与他们对话,比尔·克林顿就是其中的一个典范。机器学习的作用就是,让每位选民都觉得克林顿对待他们亲力亲为、非常用心。尽管他们心目中的这些小小克林顿与真的克林顿相差太远了,但优势在于“小克林顿”的数量众多,哪怕比尔·克林顿根本无法了解美国的每位选民是怎么想的(虽然他确实想知道)。学习算法是最强大的政治家推销商。
当然,就像企业一样,政治家能把机器学习掌握的信息用好,也可能会用得很糟糕。例如,对不同的选民,他们可能会给出不一致的承诺,但选民、媒体、监督组织也会自己进行数据挖掘,并揭露做得太过分的政治家。竞选活动不仅仅是候选人之间的较量,还涉及民主进程中的所有参与者。
更大范围的结果就是,民主会更好地得到实现,因为选民与政治家之间交流的范围会飞速扩大。在当今这个高速互联网时代,民意代表从你身上获取的信息数量仍像19世纪时一样有限:每两年会有100比特左右的信息,数量正好对应一张选票。这些信息会由民意信息来补充,或许偶尔还会有电子邮件和市民大会的信息,但还是少得可怜。大数据和机器学习正改变这种等式关系。在未来,只要选民模式准确,当选官员就可以每天询问选民上千次想要什么,然后根据询问结果来办事,不用在现实中纠缠选民。
学习算法与国家安全
在网络空间之外,学习算法是保护国家的壁垒。每天,国外袭击者都会企图闯进五角大楼、国防承包商以及其他公司和政府机构的计算机。他们的计谋不断变化,能抵抗昨天袭击的方法,今天就已经不管用了。编写代码来侦查并阻止每场袭击,可能会和马其诺防线一样有效,五角大楼的网络司令部十分了解这一点。但如果是恐怖分子的第一次袭击,而且也没有之前的例子供机器学习来参考,那么机器学习就会遇到问题。学习算法会构建正常行为的模型(这样的模型数量很多),标出异常行为,然后召集来“骑兵”(系统管理员)。如果网络战争发生,人类就是总指挥,算法就是步兵。人类速度太慢、数量太少,很快就会被机器人大军歼灭。我们需要自己的机器人军队,而机器学习就像机器人中的西点军校。
网络战争是不对称战争的一个例子,一方的传统军事实力比不上另一方,但仍然可以给对方造成严重伤害。少数恐怖分子只用美工刀就可以撞到双子塔,并让几千名无辜者遇难。当今美国安全最大的威胁就是不对称战争,而且抵抗所有威胁的有效武器就是信息。如果敌人躲不了,那么他也活不了。好消息就是我们有大量信息,但也有坏消息。
美国国家安全局已经对数据产生无限大的胃口,也因此声名狼藉。据估计,每天美国国家安全局窃听着全球10亿多个通话,还有其他通信。但是,抛开隐私问题,它也没有让上百万员工来窃听这些通话、偷看邮件,甚至也不会记录谁和谁通话。绝大多数通话是没有嫌疑的,而专门编写程序来找出有嫌疑的通话又很困难。过去,美国国家安全局利用关键词配对方法,但要应付这个方法也很容易(例如,把爆炸袭击称作“结婚”,把炸弹称作“结婚蛋糕”)。21世纪,这些事就可以交给机器学习。保密是安全局的标志,但安全局局长已经向美国国会证明,通话记录挖掘已经阻止了几十起恐怖威胁。
恐怖分子可隐藏在足球比赛的人群中,但学习算法能辨认他们的相貌。恐怖分子可以在国外制造爆炸事件,但学习算法能找出他们。学习算法还可以做更加精细的事情:将机器人与事件连接起来,这些事件单个看起来并无危害,但集中起来可能就预示着不祥。这种方法本可以阻止“9·11”事件的发生。有一个进一步的转折:一旦确定的程序部署下来,坏人可能会改变其活动,以扰乱该程序。这与自然世界不同,自然世界总是以同样的方式运转。要解决这个问题,就要将机器学习与博弈论相结合,这是我已经在做的工作:别只想着打击对手当前想做的事,要学会巧妙地回避对手对你的学习算法的损害。正如博弈论那样,把各种措施的成本和利益考虑在内,这也有助于找到隐私与安全之间的平衡点。
不列颠之战期间,英国空军阻止了纳粹德国空军的进攻,尽管后者人数比前者多很多。德国飞行员不明白,为什么无论走到哪里,他们总会碰上英国空军。英国有一个秘密武器:雷达,可以在德国飞机越境进入英国领空时,就探测到它们。机器学习就像装了雷达,能够预知未来。别只是回击对手的行动,要预测他们的行动,并先发制人。
一个更确切的例子就是人们熟知的“预知执法”。通过预测犯罪倾向,战略性地将巡逻队集中在最可能需要的地方,同时采取其他预防措施,这样一座城市的警力就能有效地完成更大范围的工作。在许多方面,执法过程就像不对称战争,会用到许多相似的学习算法,无论是在侦查诈骗、揭露犯罪网络,还是普通传统的打击执法中。
机器学习在战争中也将扮演越来越重要的角色。学习算法能有助于驱散战争迷雾,筛选侦察图像,处理后续报告,并整合信息,为指挥官提供战争形势分析。学习算法可以武装军用机器人的大脑,帮助其保持方位,适应地形,把敌机和民用机区别开来,以及进行制导。美国国防部高级研究计划局(DARPA)的领头狗(AlphaDog)能为士兵搬运设备。遥控飞机在学习算法的作用下可自主飞行。虽然它们仍受到人类飞行员的部分控制,但未来的趋势是一个飞行员监控越来越多的遥控飞机群。在未来的军队里,学习算法的数量会大大超过士兵的人数,这将减少许多士兵的伤亡。
我们将走向何方
科技潮流奔涌而来并迅猛向前。机器学习不同寻常的一点就是,在经历所有这些变革以及繁荣和破产之后,它开始逐渐强大。它遇到的第一个大的打击是在金融领域,预测股票的起伏波动,起于20世纪80年代。接下来的一波是挖掘企业数据库,在20世纪90年代中开始发展壮大,尤其是在直接营销、客户关系管理、资信评分以及诈骗侦查等领域。接着是网络和电子商务,在这些领域中,自动个性化很快流行起来。当互联网泡沫暂时削弱这种趋势时,将机器学习应用到网页搜索和广告投放的做法开始腾飞起来。不管怎样,“9·11”恐怖袭击后机器学习被应用到打击恐怖主义的战争中。网络2.0带来一连串的新应用,包括挖掘社交网络、搜索哪些博客谈到你的产品。同时,各个领域的科学家也逐渐转向大规模建模,由分子生物学家和天文学家打头阵。人们勉强留意到了房地产泡沫,而其主要影响就是使人才从华尔街转移到硅谷,并受到欢迎。2011年,“大数据”的概念流行起来,机器学习被明确归入全球经济未来的中心。当今,似乎没有哪个人类钻研的领域不受到机器学习的影响,甚至包括看起来没有多大关系的领域(如音乐、体育、品酒)。
尽管机器学习发展很明显,但这也仅仅是未来的预告。虽然它有用,但实际上当今在工业上起作用的学习算法的生成还是受到了很大限制。如果现在实验室的算法能在各领域的前线使用,比尔·盖茨说机器学习的突破产生的价值将相当于10家微软,其实这个说法有点保守了。如果这些观点让研究人员真正觉得眼前一片光明,而且收到效果,那么机器学习带来的就不仅仅是新的文明时代,还是地球生命进化的新阶段。
怎样才能实现这个目标?学习算法如何运行?现在它们不能做什么?它们的下一代会是怎样的?机器学习革命将以什么方式呈现?你得抓住哪些机遇,提防哪些危险?这些就是这本书要讲的内容。
[3] 亚马逊“土耳其机器人”(Amazon Mechanical Turk)是一个Web服务应用程序接口,开发商通过它可以将人的智能整合到远程过程调用。——编者注