以下内容学习、摘录自《数学之美》
搜索引擎应该从成千上万条结果中做好排序,让用户看到最想要的结果。这个技术很大程度上决定了搜索引擎的质量。总的来讲,对于一个特定的查询,搜索结果的排名取决于两组信息:关于网页的质量信息( Quality),以及这个查询与每个网页的相关性信息( Relevance)。这一章介绍衡量网页质量的方法。
大家可能知道, Google革命性的发明是它名为“ Pagerank”的网页排名算法。这项技术在1998年前后使得搜索的相关性有了质的飞跃,比较圆满地解决了以往网页搜索结果中排序不好的问题。以至于大家认为 Google的搜索质量好,甚至整个公司的成功都是基于这个算法。
在google之前做搜索引擎的公司,存在以下问题:要么是收录的网页太少,要么是大部分查询结果与用户期望不相关。虽然这些公司公司多少发现了互联网网页的质量在搜索结果的排序中也应该起一些作用,于是尝试了一些方法,有点效果,但这些方法都是在数学上不很完善的方法。
真正找到计算网页自身质量的完美的数学模型的是 Google的创始人拉里·佩奇和谢尔盖·布林。Google的“ Pagerank”(网页排名)其实简单地说就是民主表决。
在互联网上,如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高。这就是 Pagerank的核心思想。该算法还考虑了表决权( Voting Power)因素,即网页排名高的网站贡献的链接权重大。
但是有个麻烦:计算搜索结果的网页排名过程中需要用到网页本身的排名,这不成了“先有鸡还是先有蛋”的问题了吗?布林把这个问题变成了一个二维矩阵相乘的问题,并用迭代的方法解决了这个问题。他先假定所有网页的排名是相同的,并且根据这个初始值,算出各个网页的第一次迭代排名,然后再根据第一次选代排名算出第二次的排名。他们两人从理论上证明了不论初始值如何选取,这种算法都能保证网页排名的估计值能收敛到排名的真实值。值得一提的事,这种算法不需要任何人工干预。
理论问题解决了,又遇到实际问题。因为互联网上网页的数量是巨大的,上面提到的二维矩阵从理论上讲有网页数量的二次方这么多个元素。假定有十亿个网页,那么这个矩阵就有一百亿亿个元素。这么大的矩阵相乘,计算量是非常大的。佩奇和布林两人利用稀疏矩阵计算的技巧,大大简化了计算量,并实现了这个网页排名算法。随着互联网网页数量的增长, Pagerank的计算量越来越大,必须利用多台服务器才能完成。 Google早期时, Page Rank计算的并行化是半手工、半自动的,这样更新一遍所有网页的 Page Rank的周期很长。2003年,Google的工程师迪恩( Jeffrey Dean)和格麦瓦特( Sanjay Ghemawat)发明了并行计算工具 Mapreduce, Page Rank的并行计算完全自动化了这就大大缩短了计算时间,使网页排名的更新周期比以前短了许多。
Page Rank在当时对搜索结果的影响非常大。在1997-1998年前后,所有互联网上能找到的搜索引擎,每十条结果只有两三条是相关的、有用的。而还在斯坦福大学实验室里的 Google当时能做到每十条结果有七八条是相关的。这是一个质的差别,使 Google得以迅速打败以前所有的搜索引擎。
网页排名算法的高明之处在于它把整个互联网当作一个整体来对待。这无意中符合了系统论的观点。相比之下,以前的信息检索大多把每一个网页当作独立的个体对待,大部分人当初只注意了网页内容和查询语句的相关性,忽略了网页之间的关系。虽然在佩奇和布林同时代也有一些人在思考如何利用网页之间的联系来衡量网页的质量,但只是摸到一些皮毛,找到一些拼凑的办法,都没有从根本上解决问题。
今天, Google搜索引擎比最初复杂、完善了许多。但是 Page Rank在Google所有算法中依然是至关重要的。在学术界,这个算法被公认为是文献检索中最大的贡献之一,并且被很多大学列为信息检索课程( Information Retrieval)的内容。佩奇也因为这个算法在30岁时当选为美国工程院院士,是继乔布斯和盖茨之后又一位当选院士的辍学生。
由于 Pagerank算法受到专利保护,它带来了两个结果。首先,其他搜索引擎开始时都比较遵守游戏规则,不去侵犯它,这对当时还很弱小的Google是一个很好的保护。第二,它使得斯坦福大学拥有了超过1%的Google股票,收益超过10亿美元。