算法的力量,李开复聊算法的重要性

算法的力量

算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实大家都被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上,有位同学生动地把这些基础课程比拟为“内功”,把新的语言、技术、标准比拟为“外功”。整天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。

算法与我

当我在1980年转入计算机科学系时,还没有多少人的专业方向是计算机科学。有许多其他系的人嘲笑我们说:“知道为什么只有你们系要加一个‘科学’,而没有‘物理科学系’或‘化学科学系’吗?因为人家是真的科学,不需要画蛇添足,而你们自己心虚,生怕不‘科学’,才这样欲盖弥彰。”其实,这点他们彻底弄错了。真正学懂计算机的人(不只是“编程匠”)都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题——而这种思维和手段的最佳演绎就是“算法”。

记得我读博时写的Othello对弈软件获得了世界冠军。当时,得第二名的人认为我是靠侥幸才打赢他,不服气地问我的程序平均每秒能搜索多少步棋,当他发现我的软件在搜索效率上比他快60多倍时,才彻底服输。为什么在同样的机器上,我可以多做60倍的工作呢?这是因为我用了一个最新的算法,能够把一个指数函数转换成四个近似的表,只要用常数时间就可得到近似的答案。在这个例子中,是否用对算法才是能否赢得世界冠军的关键。

还记得1988年贝尔实验室副总裁亲自来访问我的学校,目的就是为了想了解为什么他们的语音识别系统比我开发的慢几十倍,而且,在扩大至大词汇系统后,速度差异更有几百倍之多。他们虽然买了几台超级计算机,勉强让系统跑了起来,但这么贵的计算资源让他们的产品部门很反感,因为“昂贵”的技术是没有应用前景的。在与他们探讨的过程中,我惊讶地发现一个O(n*m)的动态规划(dynamic programming)居然被他们做成了O (n*n*m)。更惊讶的是,他们还为此发表了不少文章,甚至为自己的算法起了一个很特别的名字,并将算法提名到一个科学会议里,希望能得到大奖。当时,贝尔实验室的研究员当然绝顶聪明,但他们全都是学数学、物理或电机出身,从未学过计算机科学或算法,才犯了这么基本的错误。我想那些人以后再也不会嘲笑学计算机科学的人了吧!

网络时代的算法

有人也许会说:“今天计算机这么快,算法还重要吗?”其实永远不会有太快的计算机,因为我们总会想出新的应用。虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快增长,价格也在不断下降。可我们不要忘记,需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据(照片,视频,语音,文本等等)。日益先进的纪录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面,随着研究手段的进步,数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别,都需要极大的计算量。在网络时代,越来越多的挑战需要靠卓越的算法来解决。

再举另一个网络时代的例子。在互联网和手机搜索,如果要找附近的咖啡店,那么搜索引擎该怎么处理这个请求呢?最简单的办法就是把整个城市的咖啡馆都找出来,然后计算出它们的所在位置与你之间的距离,再进行排序,然后返回最近的结果。但该如何计算距离呢?图论里有不少算法可以解决这个问题。

这么做也许是最直观的,但绝对不是最迅速的。如果一个城市只有为数不多的咖啡馆,那么这么做应该没什么问题,反正计算量不大。但如果一个城市里有很多咖啡馆,又有很多用户都需要类似的搜索,那么服务器所承受的压力就大多了。在这种情况下,我们该怎样优化算法呢?

首先,我们可以把整个城市的咖啡馆做一次“预处理”。比如,把一个城市分成若干个“格子(grid)”,然后根据用户所在的位置把他放到某一个格子里,只对格子里的咖啡馆进行距离排序。

问题又来了,如果格子大小一样,那么绝大多数结果都可能出现在市中心的一个格子里,而郊区的格子里只有极少的结果。在这种情况下,我们应该把市中心多分出几个格子。更进一步,格子应该是一个“树结构”,最顶层是一个大格——整个城市,然后逐层下降,格子越来越小,这样有利于用户进行精确搜索——如果在最底层的格子里搜索结果不多,用户可以逐级上升,放大搜索范围。

上述算法对咖啡馆的例子很实用,但是它具有通用性吗?答案是否定的。把咖啡馆抽象一下,它是一个“点”,如果要搜索一个“面”该怎么办呢?比如,用户想去一个水库玩,而一个水库有好几个入口,那么哪一个离用户最近呢?这个时候,上述“树结构”就要改成“r-tree”,因为树中间的每一个节点都是一个范围,一个有边界的范围(参考:http://www.cs.umd.edu/~hjs/rtrees/index.html)。

通过这个小例子,我们看到,应用程序的要求千变万化,很多时候需要把一个复杂的问题分解成若干简单的小问题,然后再选用合适的算法和数据结构。

并行算法:Google的核心优势

上面的例子在Google里就要算是小case了!每天Google的网站要处理十亿个以上的搜索,GMail要储存几千万用户的2G邮箱, Google Earth要让数十万用户同时在整个地球上遨游,并将合适的图片经过互联网提交给每个用户。如果没有好的算法,这些应用都无法成为现实。

在这些的应用中,哪怕是最基本的问题都会给传统的计算带来很大的挑战。例如,每天都有十亿以上的用户访问Google的网站,使用Google的服务,也产生很多很多的日志(Log)。因为Log每份每秒都在飞速增加,我们必须有聪明的办法来进行处理。我曾经在面试中问过关于如何对Log进行一些分析处理的问题,有很多面试者的回答虽然在逻辑上正确,但是实际应用中是几乎不可行的。按照它们的算法,即便用上几万台机器,我们的处理速度都根不上数据产生的速度。

那么Google是如何解决这些问题的?

首先,在网络时代,就算有最好的算法,也要能在并行计算的环境下执行。在Google的数据中心,我们使用的是超大的并行计算机。但传统的并行算法运行时,效率会在增加机器数量后迅速降低,也就是说,十台机器如果有五倍的效果,增加到一千台时也许就只有几十倍的效果。这种事倍功半的代价是没有哪家公司可以负担得起的。而且,在许多并行算法中,只要一个结点犯错误,所有计算都会前功尽弃。

那么Google是如何开发出既有效率又能容错的并行计算的呢?

Google最资深的计算机科学家Jeff Dean认识到,Google所需的绝大部分数据处理都可以归结为一个简单的并行算法:MapReduce。这个算法能够在很多种计算中达到相当高的效率,而且是可扩展的(也就是说,一千台机器就算不能达到一千倍的效果,至少也可以达到几百倍的效果)。 MapReduce的另外一大特色是它可以利用大批廉价的机器组成功能强大的server farm。最后,它的容错性能异常出色,就算一个 server farm宕掉一半,整个fram依然能够运行。正是因为这个天才的认识,才有了MapReduce算法。借助该算法, Google几乎能无限地增加计算量,与日新月异的互联网应用一同成长。

算法并不局限于计算机和网络

举一个计算机领域外的例子:在高能物理研究方面,很多实验每秒钟都能几个TB的数据量。但因为处理能力和存储能力的不足,科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道,新元素的信息很有可能就藏在我们来不及处理的数据里面。同样的,在其他任何领域里,算法可以改变人类的生活。例如人类基因的研究,就可能因为算法而发明新的医疗方式。在国家安全领域,有效的算法可能避免下一个911的发生。在气象方面,算法可以更好地预测未来天灾的发生,以拯救生命。

所以,如果你把计算机的发展放到应用和数据飞速增长的大环境下,你一定会发现;算法的重要性不是在日益减小,而是在日益加强。

时间: 2024-10-28 06:01:06

算法的力量,李开复聊算法的重要性的相关文章

李开复教你如何使用微博

创新改变时代,微博改变生活.无论你是平民大众,还是社会名流,在这个神奇的产品影响下,都可能在不经意间成为了同一类人:微博控!你定位过自己的微博吗?如何写微博的自我介绍?如何写好微博的140字?如何增加微博的粉丝?最佳发微博时间是?最佳发微博频率是? 假设创新工厂要投资微博基础上应用,你们会投什么样的项目? 李开复:微博上应用我会最看好:1)电子商务和O2O(online to offline)的推广,2)帮助传统企业更深度理解.挖掘用户需求,3)社交游戏(但是必须想办法利用上双向的游戏,因为人们

李开复:AI 创业的十个真相 | 深度

"重仓"人工智能,是李开复和创新工场未来几年的方向.但是,他面临一个很重要的问题:现在的 AI 创业,核心是 AI 科学家,而"文能起笔安天下,武能上马定乾坤"的 AI 科学家凤毛麟角,用他的话说"该创业的都创业了". 这时,产业在面临一步棋.那就是:如何把一个普通的 AI 科学家变成"创业英雄". 作为三十年前就开始研究人工智能的李开复,觉得自己"技术范儿"的创新工场有能力推动这步棋,并且在这一步棋中获得

李开复:人类的演化史就是一部生物智能的训练史

2017年是图灵奖(A.M. Turing Award)设立50周年. 其中,ACM图灵奖五十年中国大会(ACM TURC 2017)在中国上海举办,在会议上,创新工场CEO李开复,分享了关于"人工智能时代与科学家创业"的话题. 以下为李开复的现场论述: 观点一:深度学习无法战争生物大脑 深度学习基于多层神经网络的机器学习模型.表面看,深度学习和生物大脑里的神经元和突触的运作有所相似.但其实,深度学习只是对单个生物神经元的极其粗糙的近似模拟(仿生学含义).计算机能做的,就是定好一个模型

李开复的书告诉你,如何给非专业人士讲解什么是深度学习

去年开始,工作中需要做许多有关 AI 科普的事情.很长时间里一直在想,该如何给一个没有 CS 背景的人讲解什么是深度学习,以便让一个非技术的投资人.企业管理者.行业专家.媒体记者乃至普通大众明白深度学习为什么会特别有效,理解 AI 是如何帮助人们解决具体问题的.中间经由 Quora 一篇简短回答的启发,大致形成了用水流脉络来比拟神经网络的想法.曾经在面向银行界.教育界.投资界人士的演讲中,尝试过基于这个比喻的讲解方法,效果很不错.慢慢就形成了这样一篇文章,最近也被收进了李开复和我合著的科普书<人

李开复给中国学生的第一封信

给中国学生的一封信       从诚信谈起 李开复 2000年4月     今年5月23日,比尔·盖茨先生在<华尔街日报>上撰文,支持和敦促美国政府给予中国永久性正常贸易国待遇.文中,他特别谈到了在清华大学与中国大学生那次对话的愉快经历以及因此而留下的深刻印象.       这篇文章令我不禁想到,在中国的这两年来,我工作中最大的享受也是到国内各高校与学生们进行交流.这些访问和交流使得我有机会与成千上万的青年学生就他们所关心的事业.前途等问题进行面对面的沟通.中国学生的聪明.好学和上进给我留下了

李开复6000字演讲解读:不接受AI+概念就会被颠覆,非常血腥

雷锋网按:2月17日,创新工场董事长.创业教父李开复,在中泰证券资本市场年会上发表了公开演讲.在演讲中他分析了自己对互联网趋势的观察,解读了创新工场的投资逻辑,并进一步提到了他看好的五个领域:人工智能.文化娱乐.在线教育.B2B与消费升级. 对于人工智能,他认为,"能够取代基本人类所有需要低于5秒的工作,它都可以取代."而"哪些领域不需要七情六欲的机器人,这个就是有戏的.比如说扫地机器人,比如说工业机器人,比如说老人陪伴." 当然,他并不是说人工智能会取代人类,而是

李开复:给想创业的毕业生的一封信

二十年后,中国最伟大的企业,和成功走向世界舞台的企业很可能就是在下五年所创立的.因此,很多大学生现在的跃跃欲试地想毕业后创业.另外,创业板的推出,许多创业公司的成功,还有很多成功创业家都鼓舞着中国的大学生,让他们也希望跟随马云.马化腾.李彦宏的步伐,走向http://www.aliyun.com/zixun/aggregation/17316.html">创业之路.一方面,我赞赏大学生拥有创业理想,但是另一方面,我建议大学生:先参与创业,再主导创业. 许多大学生都错误地认为:只要有个好的点

杰瑞·卡普兰对话李开复、吴甘沙:人工智能的未来在哪

导读:人工智能未来的发展有怎样的瓶颈?人工智能领域创业该如何突破?人工智能的发展又将面临怎样的伦理问题? ▲<人工智能时代>作者,斯坦福大学人工智能专家杰瑞·卡普兰在论坛上作了精彩演讲 2016年6月13日,在清华大学伟伦楼,由湛庐文化.创新工厂.<清华管理评论>联合主办.驭势科技协办.中国人工智能协会指导举办的人工智能时代人机高峰论坛成功举行.    论坛上,针对大家对人工智能最关注的话题,<人工智能时代>作者,斯坦福大学人工智能专家杰瑞·卡普兰.创新工厂创始人兼CE

谷歌中国色情门引法律问号:李开复是否应受刑罚

有专家指出:如果"'谷歌中国'网站大量传播淫秽色情和低俗信息"事实成立,则李开复及相关责任人应受到刑事处罚 何 军 沸沸扬扬的谷歌"色情门"似乎暂时告一段落,公众获知事件的来龙去脉,基本上来自有关部门新闻通稿中的内容. 在新闻通稿中,事件的起因是:互联网违法和不良信息举报中心根据公众举报并经核查,"谷歌中国"网站大量传播淫秽色情和低俗信息,严重违反了<全国人大常委会关于维护互联网安全的决定>和国务院<互联网信息服务管理办法>