谷歌背后的数学.docx
- 文档编号:7479979
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:7
- 大小:26.55KB
谷歌背后的数学.docx
《谷歌背后的数学.docx》由会员分享,可在线阅读,更多相关《谷歌背后的数学.docx(7页珍藏版)》请在冰豆网上搜索。
谷歌背后的数学
谷歌背后的数学
在如今这个互联网时代,有一家家喻户晓的公司,它自2019年问世以来,在极短的时间内就声誉鹊起,不仅超越了所有竞争对手,而且彻底改观了整个互联网的生态。
这家公司就是当今互联网上的第一搜索引擎:
谷歌(Google)。
在这样一家显赫的公司背后,自然有许许多多商战故事,也有许许多多成功因素。
但与普通商战故事不同的是,在谷歌的成功背后起着最关键作用的却是一个数学因素。
本文要谈的就是这个数学因素。
谷歌作为一个搜索引擎,它的核心功能顾名思义,就是网页搜索。
说到搜索,我们都不陌生,因为那是凡地球人都会的技能。
我们在字典里查个生字,在图书馆里找本图书,甚至在商店里寻一种商品等,都是搜索。
如果我们稍稍推究一下的话,就会发现那些搜索之所以可能,并且人人都会,在很大程度上得益于以下三条:
搜索对象的数量较小——比如一本字典收录的字通常只有一两万个,一家图书馆收录的不重复图书通常不超过几十万种,一家商店的商品通常不超过几万种等。
搜索对象具有良好的分类或排序——比如字典里的字按拼音排序,图书馆里的图书按主题分类,商店里的商品按品种或用途分类等。
搜索结果的重复度较低——比如字典里的同音字通常不超过几十个,图书馆里的同名图书和商店里的同种商品通常也不超过几十种。
但互联网的鲜明特点却是以上三条无一满足。
事实上,即便在谷歌问世之前,互联网上的网页总数就已超过了诸如图书馆藏书数量之类传统搜索对象的数目。
而且这还只是冰山一角,因为与搜索图书时单纯的书名搜索不同,互联网上的搜索往往是对网页内容的直接搜索,这相当于将图书内的每一个字都变成了搜索对象,由此导致的数量才是真正惊人的,它不仅直接破坏了上述第一条,而且连带破坏了二、三两条。
在互联网发展的早期,象Yahoo那样的门户网站曾试图为网页建立分类系统,但随着网页数量的激增,这种做法很快就“挂一漏万”了。
而搜索结果的重复度更是以快得不能再快的速度走向失控。
这其实是可以预料的,因为几乎所有网页都离不开几千个常用词,因此除非搜索生僻词,否则出现几十万、几百万、甚至几千万条搜索结果都是不足为奇的。
互联网的这些“不良特点”给搜索引擎的设计带来了极大的挑战。
而在这些挑战之中,相对来说,对一、二两条的破坏是比较容易解决的,因为那主要是对搜索引擎的存储空间和计算能力提出了较高要求,只要有足够多的钱来买“装备”,这些还算是容易解决的。
套用电视连续剧《蜗居》中某贪官的台词来说,“能用钱解决的问题就不是大问题”。
但对第三条的破坏却要了命了,因为无论搜索引擎的硬件如何强大,速度如何快捷,要是搜索结果有几百万条,那么任何用户想从其中“海选”出自己真正想要的东西都是几乎不可能的。
这一点对早期搜索引擎来说可谓是致命伤,而且它不是用钱就能解决的问题。
这致命伤该如何治疗呢?
药方其实很简单,那就是对搜索结果进行排序,把用户最有可能需要的网页排在最前面,以确保用户能很方便地找到它们。
但问题是:
网页的水平千差万别,用户的喜好更是万别千差,互联网上有一句流行语叫做:
“在互联网上,没人知道你是一条狗”(OntheInternet,nobodyknowsyou\'readog)。
连用户是人是狗都“没人知道”,搜索引擎又怎能知道哪些搜索结果是用户最有可能需要的,并对它们进行排序呢?
在谷歌主导互联网搜索之前,多数搜索引擎采用的排序方法,是以被搜索词语在网页中的出现次数来决定排序,出现次数越多的网页排在越前面。
这个判据不能说毫无道理,因为用户搜索一个词语,通常表明对该词语感兴趣。
既然如此,那该词语在网页中的出现次数越多,就越有可能表示该网页是用户所需要的。
可惜的是,这个貌似合理的方法实际上却行不大通。
因为按照这种方法,任何一个象祥林嫂一样翻来复去倒腾某些的网页,无论水平多烂,一旦被搜索到,都立刻会“金榜题名”,这简直就是广告及垃圾网页制造者的天堂。
事实上,当时几乎没有一个搜索引擎不被“祥林嫂”们所困扰,其中最具讽刺意味的是:
堪称互联网巨子的当年四大搜索引擎在搜索自己公司的名字时,居然只有一个能使之出现在搜索结果的前十名内,其余全被“祥林嫂”们挤跑了。
就是在这种情况下,2019年初,谷歌公司的创始人,当时还是美国斯坦福大学(StanfordUniversity)研究生的佩奇(LarryPage)和布林(SergeyBrin)开始了对网页排序问题的研究。
这两位小伙子之所以研究网页排序问题,一来是导师的建议(佩奇后来称该建议为“我有生以来得到过的最好建议”),二来则是因为他们对这一问题背后的数学产生了兴趣。
网页排序问题的背后有什么样的数学呢?
这得从佩奇和布林看待这一问题的思路说起。
在佩奇和布林看来,网页的排序是不能靠每个网页自己来标榜的,无论把重复多少次,垃圾网页依然是垃圾网页。
那么,究竟什么才是网页排序的可靠依据呢?
出生于书香门第的佩奇和布林(两人的父亲都是大学教授)想到了学术界评判学术论文重要性的通用方法,那就是看论文的引用次数。
在互联网上,与论文引用相类似的是显然是网页链接。
因此,佩奇和布林萌生了一个网页排序的思路,那就是通过研究网页间的相互链接来确定排序。
具体地说,一个网页被其它网页链接得越多,它的排序就越靠前。
不仅如此,佩奇和布林还进一步提出,一个网页越是被排序靠前的网页所链接,它的排序就也应该越靠前。
这一条的意义也是不言而喻的,就好比一篇论文被诺贝尔奖得主所引用,显然要比被普通研究者所引用更说明其价值。
依照这个思路,网页排序问题就跟整个互联网的链接结构产生了关系,正是这一关系使它成为了一个不折不扣的数学问题。
思路虽然有了,具体计算却并非易事,因为按照这种思路,想要知道一个网页Wi的排序,不仅要知道有多少网页链接了它,而且还得知道那些网页各自的排序——因为来自排序靠前网页的链接更“值钱”。
但作为互联网大家庭的一员,Wi本身对其它网页的排序也是有贡献的,而且基于来自排序靠前网页的链接更“值钱”的原则,这种贡献与Wi的排序有关。
这样一来,我们就陷入了一个“先有鸡还是先有蛋”的循环之中:
想要知道Wi的排序,就得知道与它链接的其它网页的排序,而想要知道那些网页的排序,却又首先得知道Wi的排序。
为了打破这个循环,佩奇和布林采用了一个很巧妙的思路,即分析一个虚拟用户在互联网上的漫游过程。
他们假定:
虚拟用户一旦访问了一个网页后,下一步将有相同的几率访问被该网页所链接的任何一个其它网页。
换句话说,如果网页Wi有Ni个对外链接,则虚拟用户在访问了Wi之后,下一步点击这些链接中任何一个的几率均为1/Ni。
初看起来,这一假设并不合理,因为任何用户都有偏好,怎么可能以相同的几率访问一个网页的所有链接呢?
但如果我们考虑到佩奇和布林的虚拟用户实际上是对互联网上全体用户的一种平均意义上的代表,这条假设就不象初看起来那么不合理了。
那么网页的排序由什么来决定呢?
是由该用户在漫游了很长时间(理论上为无穷长时间)后访问各网页的几率分布来决定,访问几率越大的网页排序就越靠前。
为了将这一分析数学化,我们用pi(n)表示虚拟用户在进行第n次浏览时访问网页Wi的几率。
显然,上述假设可以表述为(请读者自行证明):
pi(n+1)=Σjpj(n)pj→i/Nj
这里pj→i是一个描述互联网链接结构的指标函数(indicatorfunction),其定义是:
如果网页Wj有链接指向网页Wi,则pj→i取值为1,反之则为0。
显然,这条假设所体现的正是前面提到的佩奇和布林的排序原则,因为右端求和式的存在表明与Wi有链接的所有网页Wj都对Wi的排名有贡献,而求和式中的每一项都正比于pj,则表明来自那些网页的贡献与它们的自身排序有关,自身排序越靠前(即pj越大),贡献就越大。
为符号简洁起见,我们将虚拟用户第n次浏览时访问各网页的几率合并为一个列向量pn,它的第i个分量为pi(n),并引进一个只与互联网结构有关的矩阵H,它的第i行j列的矩阵元为Hij=pj→i/Nj,则上述公式可以改写为:
pn+1=Hpn
这就是计算网页排序的公式。
熟悉随机过程理论的读者想必看出来了,上述公式描述的是一种马尔可夫过程(Markovprocess),而且是其中最简单的一类,即所谓的平稳马尔可夫过程(stationaryMarkovprocess)[注一],而H则是描述转移概率的所谓转移矩阵(transitionmatrix)。
不过普通马尔可夫过程中的转移矩阵通常是随机矩阵(stochasticmatrix),即每一列的矩阵元之和都为1的矩阵(请读者想一想,这一特点的“物理意义”是什么?
)[注二]。
而我们的矩阵H却可能有一些列是零向量,从而矩阵元之和为0,它们对应于那些没有对外链接的网页,即所谓的“悬挂网页”(danglingpage)[注三]。
上述公式的求解是简单得不能再简单的事情,即:
pn=Hnp0
其中p0为虚拟读者初次浏览时访问各网页的几率分布(在佩奇和布林的原始论文中,这一几率分布被假定为是均匀分布)。
如前所述,佩奇和布林是用虚拟用户在经过很长(理论上为无穷长)时间的漫游后访问各网页的几率分布,即limn→∞pn,来确定网页排序的。
这个定义要想管用,显然要解决三个问题:
极限limn→∞pn是否存在?
如果极限存在,它是否与p0的选取无关?
如果极限存在,并且与p0的选取无关,它作为网页排序的依据是否真的合理?
如果这三个问题的答案都是肯定的,那么网页排序问题就算解决了。
反之,哪怕只有一个问题的答案是否定的,网页排序问题也就不能算是得到满意的解决。
那么实际答案如何呢?
很遗憾,是后一种,而且是其中最糟糕的情形,即三个问题的答案全都是否定的。
这可以由一些简单的例子看出。
比方说,在只包含两个相互链接网页的迷你型互联网上,如果p0=(1,0)T,极限就不存在(因为几率分布将在(1,0)T和(0,1)T之间无穷振荡)。
而存在几个互不连通(即互不链接)区域的互联网则会使极限——即便存在——与p0的选取有关(因为把p0选在不同区域内显然会导致不同极限)。
至于极限存在,并且与p0的选取无关时它作为网页排序的依据是否真的合理的问题,虽然不是数学问题,答案却也是否定的,因为任何一个“悬挂网页”都能象黑洞一样,把其它网页的几率“吸收”到自己身上(因为虚拟用户一旦进入那样的网页,就会由于没有对外链接而永远停留在那里),这显然是不合理的。
这种不合理效应是如此显著,以至于在一个连通性良好的互联网上,哪怕只有一个“悬挂网页”,也足以使整个互联网的网页排序失效,可谓是“一粒老鼠屎坏了一锅粥”。
为了解决这些问题,佩奇和布林对虚拟用户的行为进行了修正。
首先,他们意识到无论真实用户还是虚拟用户,当他们访问到“悬挂网页”时,都不可能也不应该“在一棵树上吊死”,而是会自行访问其它网页。
对于真实用户来说,自行访问的网页显然与各人的兴趣有关,但对于在平均意义上代表真实用户的虚拟用户来说,佩奇和布林假定它将会在整个互联网上随机选取一个网页进行访问。
用数学语言来说,这相当于是把H的列向量中所有的零向量都换成e/N(其中e是所有分量都为1的列向量,N为互联网上的网页总数)。
如果我们引进一个描述“悬挂网页”的指标向量(indicatorvector)a,它的第i个分量的取值视Wi是否为“悬挂网页”而定,如果是“悬挂网页”,取值为1,否则为零,并用S表示修正后的矩阵,则:
S=H+aeT/N
显然,这样定义的S矩阵的每一列的矩阵元之和都是1,从而是一个不折不扣的随机矩阵。
这一修正因此而被称为随机性修正(stochasticityadjustment)。
这一修正相当于剔除了“悬挂网页”,从而可以给上述第三个问题带来肯定回答(当然,这一回答没有绝对标准,可以不断改进)。
不过,这一修正解决不了前两个问题。
为了解决那两个问题,佩奇和布林引进了第二个修正。
他们假定,虚拟用户虽然是虚拟的,但多少也有一些“性格”,不会完全死板地只访问当前网页所提供的链接。
具体地说,他们假定虚拟用户在每一步都有一个小于1的几率α访问当前网页所提供的链接,同时却也有一个几率1-α不受那些链接所限,随机访问互联网上的任何一个网站。
用数学语言来说(请读者自行证明),这相当于是把上述S矩阵变成了一个新的矩阵G:
G=αS+(1-α)eeT/N
这个矩阵不仅是一个随机矩阵,而且由于第二项的加盟,它有了一个新的特点,即所有矩阵元都为正(请读者想一想,这一特点的“物理意义”是什么?
),这样的矩阵是所谓的素矩阵(primitivematrix)[注四]。
这一修正因此而被称为素性修正(primitivityadjustment)。
经过这两类修正,网页排序的计算方法就变成了:
pn=Gnp0
这个算法能给上述问题提供肯定答案吗?
是的,它能。
因为随机过程理论中有一个所谓的马尔可夫链基本定理(FundamentalTheoremofMarkovChains),它表明在一个马尔可夫过程中,如果转移矩阵是素矩阵,那么上述前两个问题的答案就是肯定的。
而随机性修正已经解决了上述第三个问题,因此所有问题就都解决了。
如果我们用p表示pn的极限[注五],则p给出的就是整个互联网的网页排序——它的每一个分量就是相应网页的访问几率,几率越大,排序就越靠前。
这样,佩奇和布林就找到了一个不仅含义合理,而且数学上严谨的网页排序算法,他们把这个算法称为PageRank,不过要注意的是,虽然这个名称的直译恰好是“网页排序”,但它实际上指的是“佩奇排序”,因为其中的“Page”不是指网页,而是佩奇的名字。
这个算法就是谷歌排序的数学基础,而其中的矩阵G则被称为谷歌矩阵(Googlematrix)。
细心的读者可能注意到了,我们还遗漏了一样东西,那就是谷歌矩阵中描述虚拟用户“性格”的那个α参数。
那个参数的数值是多少呢?
从理论上讲,它应该来自于对真实用户平均行为的分析,不过实际上另有一个因素对它的选取产生了很大影响,那就是Gnp0收敛于p的快慢程度。
由于G是一个N×N矩阵,而N为互联网上——确切地说是被谷歌所收录的——网页的总数,在谷歌成立之初为几千万,目前为几百亿,是一个极其巨大的数字。
因此G是一个超大型矩阵,甚至很可能是人类有史以来处理过的最庞大的矩阵。
对于这样的矩阵,Gnp0收敛速度的快慢是关系到算法是否实用的重要因素,而这个因素恰恰与α有关。
可以证明,α越小,Gnp0的收敛速度就越快。
但α也不能太小,因为太小的话,“佩奇排序”中最精华的部分,即以网页间的彼此链接为基础的排序思路就被弱化了(因为这部分的贡献正比于α),这显然是得不偿失的。
因此,在α的选取上有很多折衷的考虑要做,佩奇和布林最终选择的数值是α=0.85。
以上就是谷歌背后最重要的数学奥秘。
与以往那种凭借出现次数所作的排序不同,这种由所有网页的相互链接所确定的排序是不那么容易做假的,因为做假者再是把自己的网页吹得天花乱坠,如果没有真正吸引人的内容,别人不链接它,一切就还是枉然[注六]。
而且“佩奇排序”还有一个重要特点,那就是它只与互联网的结构有关,而与用户具体搜索的东西无关。
这意味着排序计算可以单独进行,而无需在用户键入搜索指令后才临时进行。
谷歌搜索的速度之所以快捷,在很大程度上得益于此。
谷歌成立之初跟其它一些“发迹于地下室”(one-man-in-basement)的IT公司一样寒酸:
雇员只有一位(两位老板不算),工作场所则是一位朋友的车库。
但它出类拔萃的排序算法很快为它赢得了声誉。
公司成立仅仅三个月,《PCMagzine》杂志就把谷歌列为了年度最佳搜索引擎。
2019年,佩奇为“佩奇排序”申请到了专利,专利的发明人为佩奇,拥有者则是他和布林的母校斯坦福大学。
2019年8月,谷歌成为了一家初始市值约17亿美元的上市公司。
不仅公司高管在一夜间成为了亿万富翁,就连当初给过他们几十美元“赞助费”的某些同事和朋友也得到了足够终身养老所用的股票回报。
作为公司摇篮的斯坦福大学则因拥有“佩奇排序”的专利而获得了180万股谷歌股票。
2019年12月,斯坦福大学通过卖掉那些股票获得了3.36亿美元的巨额收益,成为美国高校因支持技术研发而获得的有史以来最巨额的收益之一[注七]。
谷歌在短短数年间就横扫整个互联网,成为搜索引擎业的新一代霸主,佩奇和布林的那个排序算法无疑居功至伟,可以说,是数学成就了谷歌[补注一]。
当然,这么多年过去了,谷歌作为IT界研发能力最强的公司之一,它的网页排序方法早已有了巨大的改进,由当年单纯依靠“佩奇排序”演变为了由两百多种来自不同渠道的信息(其中包括与网页访问量有关的统计数据)综合而成的更加可靠的方法。
而当年曾给佩奇和布林带来过启示的学术界,则反过来从谷歌的成功中借鉴了经验,如今一些学术机构对论文影响因子(impactfactor)的计算已采用了类似“佩奇排序”的算法。
在本文的最后,还有一件事情在这里提一下,那就是与佩奇和布林研究排序算法几乎同时,有另外几人也相互独立地沿着类似的思路从事着研究[注八]。
他们中有一位是当时在美国新泽西州工作的中国人,他的算法后来也成就了一家公司——一家中国公司。
此人的名字叫做李彦宏(RobinLi),他所成就的那家公司就是XX。
这些新公司的发展极好地印证了培根(FrancisBacon)的一句名言:
知识就是力量。
注释
马尔可夫过程,也称为马尔可夫链(Markovchain),是一类离散随机过程,它的最大特点是每一步的概率分布都只与前一步有关。
而平稳马尔可夫过程则是指转移概率与步数无关的马尔可夫过程(体现在我们的例子中,即H与n无关)。
另外要说明的是,本文在表述上不同于佩奇和布林的原始论文,后者并未使用诸如“马尔可夫过程”或“马尔可夫链”那样的术语,也并未直接运用这一领域内的定理。
在更细致的分类中,这种每一列的矩阵元之和都为1的随机矩阵称为左随机矩阵(leftstochasticmatrix),以区别于每一行的矩阵元之和都等于1的所谓右随机矩阵(rightstochasticmatrix)。
这两者在应用上基本是等价的,区别往往只在于约定。
这种几乎满足随机矩阵条件,但有些列(或行)的矩阵元之和小于1的矩阵也有一个名称,叫做亚随机矩阵(substochasticmatrix)。
确切地说,这种所有矩阵元都为正的矩阵不仅是素矩阵,而且还是所谓的正矩阵(positivematrix)。
这两者的区别是:
正矩阵要求所有矩阵元都为正,而素矩阵只要求自己的某个正整数次幂为正矩阵。
读者们想必看出来了,p其实是矩阵G的本征值为1的本征向量,而利用虚拟用户确定网页排序的思路其实是在用迭代法解决上述本征值问题。
在数学上可以证明,上述本征向量是唯一的,而且G的其它本征值λ全都满足|λ|<1(更准确地说,是|λ|≤α——这也正是Gnp0的收敛速度与α有关的原因)。
当然,这绝不意味着在网页排序上已不可能再做假。
相反,这种做假在互联网上依然比比皆是,比如许多广告或垃圾网页制造者用自动程序到各大论坛发贴,建立对自己网页的链接,以提高排序,就是一种常见的做假手法。
为了遏制做假,谷歌采取了很多技术手段,并对有些做假网站采取了严厉的惩罚措施。
这种惩罚(有时是误罚)对于某些靠互联网吃饭的公司有毁灭性的打击力。
从投资角度讲,斯坦福大学显然是过早卖掉了股票,否则获利将更为丰厚。
不过,这正是美国名校的一个可贵之处,它们虽擅长从支持技术研发中获利,却并不唯利是图。
它们有自己的原则,那就是不能让商业利益干扰学术研究。
为此,它们通常不愿长时间持有特定公司的股票,以免在无形中干扰与该公司存在竞争关系的学术研究的开展。
课本、报刊杂志中的成语、名言警句等俯首皆是,但学生写作文运用到文章中的甚少,即使运用也很难做到恰如其分。
为什么?
还是没有彻底“记死”的缘故。
要解决这个问题,方法很简单,每天花3-5分钟左右的时间记一条成语、一则名言警句即可。
可以写在后黑板的“积累专栏”上每日一换,可以在每天课前的3分钟让学生轮流讲解,也可让学生个人搜集,每天往笔记本上抄写,教师定期检查等等。
这样,一年就可记300多条成语、300多则名言警句,日积月累,终究会成为一笔不小的财富。
这些成语典故“贮藏”在学生脑中,自然会出口成章,写作时便会随心所欲地“提取”出来,使文章增色添辉。
单靠“死”记还不行,还得“活”用,姑且称之为“先死后活”吧。
让学生把一周看到或听到的新鲜事记下来,摒弃那些假话套话空话,写出自己的真情实感,篇幅可长可短,并要求运用积累的成语、名言警句等,定期检查点评,选择优秀篇目在班里朗读或展出。
这样,即巩固了所学的材料,又锻炼了学生的写作能力,同时还培养了学生的观察能力、思维能力等等,达到“一石多鸟”的效果。
那些研究与“佩奇排序”的类似仅仅在于大方向(即都利用互联网的链接结构来决定网页排序),而非具体算法类似。
这个工作可让学生分组负责收集整理,登在小黑板上,每周一换。
要求学生抽空抄录并且阅读成诵。
其目的在于扩大学生的知识面,引导学生关注社会,热爱生活,所以内容要尽量广泛一些,可以分为人生、价值、理想、学习、成长、责任、友谊、爱心、探索、环保等多方面。
如此下去,除假期外,一年便可以积累40多则材料。
如果学生的脑海里有了众多的鲜活生动的材料,写起文章来还用乱翻参考书吗?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 背后 数学
![提示](https://static.bdocx.com/images/bang_tan.gif)