无论是互联网,还是手机、电视,现代通信都遵循信息论的规律,整个信息论的基础都是数学。搜索引擎、语音识别、机器翻译也都是我们生活中离不开的技术,数学也是解决这些问题的最好工具。在《浪潮之巅》出版后,吴军将蕴含在这些技术中原本深奥难懂的数学知识和背后的故事, 通过深入浅出的笔端,在《数学之美》中向读者娓娓道来。
《程序员》:《数学之美》集中阐述了对数学和信息处理这些专业学科的理解,可否再举一个数学方法彻底改变了计算机领域的例子?
吴军:在通信编码方面,有个称为Turbo Code的方法。以往电话传输语音时只能使用64Kbps带宽(PCM标准)。如果希望在其基础之上传输数据,也无法超越64Kbps的瓶颈,因此通过调 制解调器上网最快只能到56Kbps。而利用Turbo Code则能将电话线扩展到很多频带。频带拓宽以后,再利用它提供的一套编码方法,能够实现容错、校验,保证数据平滑地传输。我们今天使用的DSL就得益 于这项数学编码技术。
DSL技术在20世纪80年代前后就已经被提出,但直到90年代互联网兴起之后才真正得到普及和推广。因为在此之前, 公司内部计算机往往使用同轴电缆相连,不需要考虑使用电话线传输大量数据。互联网兴起以后,家庭用户对电话线路传输数据有了迫切需要,为这项技术的实践提供了契机。Turbo Code还被用于计算机内部的通信,比如硬盘的控制器,它的应用使得硬盘的传输率大大提高,这样通信不会成为硬盘数据读写的瓶颈。今天的硬盘控制器都用到 了这项技术。在Turbo Code的解码中,最重要的算法是BCJR算法,一个典型的应用数学的成果。这个算法,在《数学之美》书中也提及过。
《程序员》:统计学对提高自然语言处理效率发挥了重要的作用,是否还有其他一些数学知识对未来的计算机领域也将发挥重要的作用,值得程序员关注?
吴军:云计算兴起以后,大数据处理日益重要。大数据处理在很大程度上依赖于机器学习,因为对数据进行挖掘不可能由人完成。机器学习对各种数学工具的需求非常 多。过去一些数学工具我们没有看到特别的用处,比如线性代数,但今天很多分析都仰仗于此。比如PageRank、社交网络关系链分析都基于线性代数。
从前我们讲到机器智能,往往是针对一个小问题、小专家系统,这已经是公认的很难继续发展的领域了。然而在有了大数据之后,机器智能的问题被集中到了如何最快 地从大量的、看似没有太多联系的数据中获取知识,这不仅是当今的热门话题,也是一个很有意义的事情。在这个过程中,以往研究人员觉得派不上大用场的数学工 具又开始重新发挥重要作用。另外,最大熵模型中最优化理论的很多基础也是以往大家所忽视的,其中泛函分析就是一个比较纯粹的数学理论,但如今它也有很多实 际应用。
《程序员》:对于大学生,以及工作后的程序员,如果他们希望进一步学习数学和算法的知识,你有哪些建议?
吴军:对于已经工作的人,在知道某个好方法之后,还要在做事的过程中有意识地使用这些好方法,这一点非常重要。
以 中文分析为例,通常我们遇到的问题,可以使用常规语言模型得到比较好地解决,但某些特殊情况,比如诗词就涉及很多特定分词,而无法通过常规语言模型处理。 此时有两个办法:可以通过编写一些特别的规则拼凑——这样写出的程序必然混乱;但假如你相信这样的问题不只会出现一次,也可以为此建立一个特定的语言模 型,并结合常规模型一起解决。编程过程中涉及数学的情况非常多,关键看你用不用它——是相信存在一个数学模型能够解决,还是只图省事将问题绕过去,差别很 大。
对于在校生,建议多在实验室参与项目实践,毕业以后在实验室之外也继续实践。我觉得国内学生学习课程时,课程设计做得太少,很多计算机 系课程的编程量,可能连美国同类课程的1/10都不到。此外,如果阅读与数学相关的工程书籍,我建议选择从国外引进的译作,系统性和严谨性都好些。关于具 体选择哪本,还需要看是解决哪个领域的问题。
关于算法,一直有“道”和“术”的说法,大部分专业书籍介绍的往往是具体算法,属于“术”的范畴,读者在阅读之后并不容易举一反三。与此类似,如果仅是了解一个数学工具或学会解决一个问题,也存在这样的弊端。我希望读者在阅读书籍之后能够进一步做 深入的思考,真正掌握算法的精髓,在遇到需要使用的场合,才可能做到自如运用,这样才算从本质层面真正学会。否则就算了解再多算法,问题稍微变化,就会觉 得无所适从。
《程序员》:在你的学习经历中,有没有希望与读者分享的经验?
吴军:我的学习过程应该与大家没有很大差别,但作 为工程人员,我学习的内容可能相对多一些、广泛一些。我所幸的是,在成长的过程中,在学习和工作经历中,总能和很多各个方面一流的人共事,比如我在清华时 遇到王作英教授、李星教授,在约翰·霍普金斯遇到贾里尼克院士、运筹学大师阿兰·高德曼院士,在Google遇见搜索名师阿米特·辛格院士、计算机系统专 家R·凯茨院士等。我觉得一个人周围是什么朋友,是什么样的同事与自己能否取得进步的关系很大。在年轻的时候,选择工作时,宁可少挣些钱,也要寻找最好的 成长机会。我所从事的计算机领域是一个应用广泛、机会很多的领域。但在这个领域中我也见到过许多年轻人,过早地考虑经济利益,放弃了很多学习的机会,以至 于长期发展缺乏基础,运用所学知识也难以自如。因此,对自己是否有高要求,追求高的境界,好的方法,对能否取得进步的影响也很大。
《程序员》:你提到写作这本书也是希望IT公司的工程主管们能够带领自己的部门提高工程水平,对于工程主管,你有哪些经验希望与他们分享?
吴军:对于做工程来说,如果使用一个正确的好方法,未必一定能够取得成功,因为在整个过程中还有很多非技术因素会发挥作用。但从长远来看,如果使用一个不好 的方法和不正确的模型,几乎可以肯定这个产品不会取得成功。即使短期看起来有效,但做出的产品往往只是山寨的结果。产品是能够持续受到用户欢迎,还是昙花 一现,很多时候就在于是否能用正确的方法处理问题,能否真正把握其中的本质规律。
《程序员》:Princeton大学出版社出版了一本《Nine Algorithms That Changed the Future》,其中也讲到许多关于搜索引擎、密码学方面的知识,可否谈谈算法和数学之间的关系?
吴军:算法很多时候是以数学为基础的,比如PageRank,我觉得影响更大的还有Viterbi算法,它是我们今天通信技术的基础。还有应用数学一些分 支,比如运筹学、博弈论中的方法,在计算机科学,以及经济学上都有很多直接应用,这些方法背后的数学是许多计算机算法的基础。
《程序员》:你是国家核高基项目“新一代搜索引擎与浏览器”的总负责人,可否介绍一下这个项目和目前取得的进展。
吴军:这一项目是腾讯公司和清华大学联合申请的,因为要求以企业为主,因此就定了我做总负责人。这个项目的目的是构造一个全新的搜索引擎,不仅搜索质量要做 到国内最好,此外还要结合社交网络,为用户提供个性化的体验。在浏览器方面,希望打造一个优化搜索体验的浏览器。我们知道,在社交网络中,可以搜索的内容 比一般网页搜索要多很多。除了外网的内容,还包括用户自己的内容,用户好友的内容,社交网络中一般性,却是非登录态用户(包括网络爬虫)看不到的内容。如 何将这些内容组织好,很具有挑战性。同时,在社交网络中的用户在登录时,我们可以通过他过去的习惯以及好友关系链等个性化的信息,提供比非登录态用户更加 精准的结果。为了做到这些,需要打造适合搜索的云计算平台。此外无线搜索也会进一步完善个性化和本地化,因为无线终端是与个人绑定的,同时具有丰富的地理 位置信息,这些信息不仅可以帮助把无线搜索做好,而且可以帮助商家的无线搜索上投放广告。在浏览器方法,很多搜索的功能都将以插件的形式直接放到浏览器 中。
《程序员》:百度的搜索引擎已经做得足够好了,为什么腾讯还要花大力气,大投入做这件事?是否是眼红百度的广告收入?
吴军:2009年腾讯CTO熊(明华)总来硅谷请我加盟腾讯、帮助公司做好搜索时,我也问过他同样的问题。我说,这个题目对我来讲没有吸引力,因为不过是把 这Google的工作重复一遍。对我来讲做一个和Google一样好的搜索引擎不难,难的是做出来以后,和百度的差异不足以使得用户需要切换过来。因此需 要给我一个理由,包括用户能得到什么新的好处,否则即使做得再好用户也是不可能从百度切换过来的。我一直强调新的产品只有质变,革命性的变革才能战胜已经 统治市场的产品。同时还需要他告诉我公司有什么特殊的资源推广,因为雅虎和微软投入了大量资源推广都不成功,国内的新浪、搜狐和网易也不成功。那么腾讯是 否有资源,有决心做这件事,因为这是一件长期吃力未必讨好的事情。他介绍了腾讯的社交网络Qzone,这个和Facebook类似,里面的内容是外面没有 的,同时登录台很多信息是可以利用的。有了这些信息就有希望比百度有质的提高。在推广资源上,腾讯在无线领域有得天独厚的优势,而现在恰恰处在无线搜索的 爆发期。在决心上,腾讯将它看作五年后收入主要的成长点,放在战略高度。
虽然熊总第一次没有说服了我,但我们谈得还是很投缘,之后他带我和 朱会灿到深圳见了公司的几位主要负责人,我们也对腾讯的业务和优势有了些了解,最终他们一起说服了我们。在我看来,搜索这件事,要么做成通吃市场,要么失 败一无所获,几乎没有中间状态。当然,这些事情要做到,需要花很大的精力、很长的时间,不是照着Google做一个搜索引擎往QQ上一扔就完事这么简单。