淺談PageRank

1996年,兩位還在斯坦福大學攻讀計算機理學博士學位的研究生,開始了一項研究:如何對互聯網上“成萬上億”的網頁進行排序。在當時看來,這只是發生在斯坦福的一個普通課題研究而已,然而包括其研究者在內,都沒有意識到,這項研究最後的成果,會引發互聯網搜索引擎領域一個劃時代的變革。

這兩位博士的名字相信大家都很熟悉了,他們正是後來大名鼎鼎的Google公司的創始人:拉里佩奇(Larry Page)和謝爾蓋布林(Sergey Brin)。而Google作爲全球最大的搜索引擎,在其創立之初,使用的核心算法正是我們今天要講的PageRank.

搜索引擎的發展瓶頸

搜索引擎的根本用途在於根據用戶的查詢,快速而準確地從網絡的海洋中找到用戶最需要的網頁。這是針對網頁的一類特殊的信息檢索過程。它主要有以下兩個特點:

  • 搜索的數據量相當大
  • 搜索的數據之間質量參差不齊

因此,基本的解決思路是根據查詢,對這些網頁進行排序,按照對用戶搜索目的的判斷,將最符合用戶需求的網頁依次排在最前面。也就是說,搜索引擎要解決的最主要問題是對網頁排序模型的設計。

佩奇和布林兩個人開始這項研究的緣由來自於導師的提議,因爲當時搜索引擎的發展遇到了瓶頸——缺乏合理的排序算法。在1998年之前(也就是PageRank正式問世的那一年之前),即便是當時最先進的搜索引擎,也是主要依靠以關鍵詞詞頻爲核心的排序技術(這一點在文檔檢索中保持了旺盛的生命力,我們到現在還主要依靠”TF×IDF ”模型爲搜索結果排序)。但是在搜索引擎技術中,依賴於詞頻的模型有其天然缺陷:網頁排序的結果僅僅考慮了基於關鍵詞的相關度判斷,而未考慮網頁本身的質量。顯而易見的是,海量的網頁來自不同的製造者,質量一定是參差不齊的。可以想象,如果有一些低質量的網頁對於某些詞的詞頻很高,這相當於是一個人一直在無意義的絮叨某句話,雖然毫無信息量可言的垃圾,卻在基於關鍵詞的模型下如魚得水,一旦其中某個詞被查到,立即能“嶄露頭角”。這一點在當時正是阻礙搜索引擎發展的最大困難。比如,令人感到諷刺的是,在1997年,堪稱早期互聯網鉅子的當時四大搜索引擎在搜索自己公司的名字時, 居然只有一個能使之出現在搜索結果的前十名內,其餘全被這種垃圾網頁擠到後面去了[1]。

總結一下,網頁排序的任務中,最核心的難點在於判別網頁質量。如果網頁數量很少,這件事就簡單了,靠人工賦予其得分即可,但實際情況是:互聯網山網頁如大海般浩瀚,且新的網頁不斷產生,舊的網頁也在不停變化,這是人工所不可能完成的任務。我們只能依靠計算機和算法,自動評估網頁質量。於是,當時正在讀博的佩奇和布林想到了學術論文的質量判別方法:依靠文章的引用情況。一篇論文的好壞當然與它的引用直接相關,有多少文章引用,什麼樣級別的文章在引用,纔是判斷一個文章質量最“靠譜”的標準。這一點放在網頁排序上也是一樣,論文的引用相當於就是網頁的鏈接,不論某個網頁再怎麼在關鍵詞方面做“手腳”,沒人願意鏈接你,那還是白扯。於是,作爲一門學問的“鏈接分析”就此產生了,這一點也是PageRank算法最基本的原理。

鏈接分析

根據上面的分析,我們可以將互聯網上的網頁模擬爲一個節點,而這個網頁的“出鏈”看做是指向其他節點的一條“有向邊”,而“入鏈”則是其他節點指向這個節點的有向邊。這樣整個網絡就變成了一張有向圖。事情到此就顯得容易解決了,因爲我們用圖論中最普通的有向圖模型,完成了對此類問題的建模。具體的說,網頁質量的評估是遵循以下兩個假設的:

  1. 數量假設:一個節點(網頁)的入度(被鏈接數)越大,頁面質量越高
  2. 質量假設:一個節點(網頁)的入度的來源(哪些網頁在鏈接它)質量越高,頁面質量越高

但是現在還面臨着一個問題,就是既然一個網頁A的質量與鏈接它的頁面質量相關,而鏈接A的那些頁面(我們記爲B)的質量又與鏈接B們的頁面相關。以此類推下去,好像進入了一個無窮無盡的死循環。爲了解決這個問題,兩顆聰明的大腦又想到,也許可以用數學中隨機過程的“隨機遊走模型”解決這個問題。隨機遊走模型又稱“醉漢模型”,指的是事物當前的狀態只與其上一個狀態有關,而與其再之前的狀態無關。就好比一個醉漢,他這一步走到哪裏只跟他上一步在哪裏有關,這有點接近於物理學中常講的“布朗運動”。用戶上網也可以看做是一個類似的過程。我們可以假設,初始狀態時,用戶訪問所有頁面的概率都是等大的,而每次訪問過後,用戶會依照此時該頁面中給出的鏈接以相等概率訪問鏈接所指向的頁面,那這就好比是用戶在剛剛我們所說的有向圖上做“隨機遊走”。所以,通過對這種隨機遊走的概率分析,我們就能得到用戶在上網時,停留在哪一個網頁上的概率要大一些,概率越大的,表示其質量越高。

PageRank

現在,我們將上面的兩個假設以及隨機遊走模型數學化。如果說最終的目的是要爲每個網頁賦予一個得分的話,那麼在初始化階段,所有網頁的得分應該是相等的,假設現在一共有N 個網頁,那麼初始階段用戶訪問每個網頁的概率就是1N ,比如下圖中的初始概率向量爲(1/4,1/4,1/4,1/4) ,而因爲每個網頁都可能存在着到其他任何網頁的鏈接,所以,我們可以將這些鏈接以平均的概率表示成一個概率轉移向量。比如下面這張圖,(圖的來源:PageRank算法–從原理到實現)網頁A中有3個鏈接,分別指向B, C, D,則A的概率轉移向量爲(0,1/3,1/3,1/3) ,向量的維度依次對應的是網頁A指向A, B, C, D四個網頁的概率。


顯然,每個網頁都有這樣一個概率轉移向量,我們把這些向量轉置後(按列放置)合起來就是隨機過程中經典的概率轉移矩陣了,如下:

01/31/31/31/2001/2100001/21/20

不難理解,這種概率轉移矩陣的一個顯著的特徵是每個元素都0 ,且列和爲1,含義表示從當前網頁跳轉到其他網頁的概率和爲1。我們記這個矩陣爲TT[i][j] 的含義是既可以表示由網頁i 跳轉至網頁j 的概率,又可以表示由網頁j 跳轉至網頁i 的概率。

根據這個矩陣,我們能夠計算出經過一次網頁跳轉之後,用戶訪問到每個網頁的概率分佈,比如上圖中,經過一次跳轉之後,用戶訪問到各個網頁的概率可以如下計算:

V1=TV0=01/31/31/31/2001/2100001/21/201/41/41/41/4=9/245/245/245/24

其中,T 爲概率轉移矩陣。同理,我們可以按照這個方法持續計算到用戶第n 次跳轉之後的概率分佈,公式如下:

Vn=TVn1=TnV0

佩奇和布林發現,當n+ ,且概率轉移矩陣T 滿足以下3個條件時,limn+Vn 最終收斂,保持在一個穩定值附近。

  • T 爲隨機矩陣。即所有T[i][j]0 ,且的所有列向量的元素加和爲1,ni=1T[i][j]=1

  • T 是不可約的。所謂不可約是說T 所對應的圖示強連通的,即圖中任何一個節點都可以達到其他任何一個節點,它要求概率轉移矩陣不存在某些特殊情況,比如某個列向量都爲0,即有一個網頁沒有鏈接到任何其他網頁,我們把這類情況又稱爲終止點;或者是在概率轉移矩陣的主對角線上,存在有一個元素爲1的情況,即這個網頁鏈接只鏈接它自己,我們把這類情況又稱爲陷阱。這兩類特殊的情形在後面會詳細說。

  • T 是非週期的。所謂週期性,體現在Markov鏈的週期性上。即若A是週期性的,那麼這個Markov鏈的狀態就是週期性變化的。因爲A是素矩陣(素矩陣指自身的某個次冪爲正矩陣的矩陣),所以A是非週期的

比如上面這個例子中,limn+Vn=limn+TnV0=(3/9,2/9,2/9,2/9)T

這表明,經過足夠多次的網頁跳轉,用戶停留在網頁A的概率要比停留在B, C, D的概率高,而後三者基本是等概率的。經過這樣的計算得到的每個網頁的概率值也叫PR值,是評估網頁質量的依據。也就是說,在我們使用搜索引擎時,在保持網頁與查詢一定相關度的基礎上,PR值可以提供非常不錯的排序依據。

終止點和陷阱

然而,現在存在的問題是,上面的所有推導都是建立在理想狀態下的,即假設所有網頁組成的這個有向圖是強連通的。但是實際上,網頁形形色色,總有那麼一些“奇葩”存在,從而在PageRank中,對算法會產生“惡劣”影響,基本上有2種情況:終止點陷阱。

終止點

終止點指的是沒有任何出鏈的網頁。可以想象,按照上面這種隨機遊走模型,用戶訪問到這個網頁後,因爲找不到鏈接,就會“四顧茫然”,不知下一步該怎麼辦了。比如下圖中,網頁C沒有出鏈。這種情況下,概率轉移矩陣在終止點對應的那一列,所有元素都是0,代入上面的PR值計算公式,會發現經過無窮多次跳轉後,所有網頁的PR值都是0:


上圖對應的概率轉移矩陣爲:

T=01/31/31/31/2001/2000001/21/20

可見,對應C的第3列全爲0,迭代計算PR值,最後的結果都是0:

1/41/41/41/43/345/245/245/245/487/487/487/480000 

那這樣的計算結果當然是毫無意義的。

陷阱

陷阱指的是隻有指向自身鏈接的網頁。這種情況下,所有“隨機遊走”的用戶到了這個網頁後,就如同進了黑洞一般,一直在裏面“打轉”,出不來了。比如下圖中,網頁C只有一條出鏈,並且還是指向它自己的,這就把C變成了陷阱。


有陷阱的網絡對應的概率轉移矩陣中,主對角線上存在至少一個爲1的元素(主對角線存在n 個1,就代表整個網絡中有n 個陷阱)。

T=01/31/31/31/2001/2001001/21/20

這種情況下,陷阱的PR值爲1,而其他正常網頁的PR值爲0。迭代計算的結果大致如下:

1/41/41/41/43/245/2411/245/245/487/4829/487/480010 

當然,這種結果也是毫無參考意義的。

解決思路

爲了解決這兩個致命的問題,佩奇和布林想到,他們最初定義的用戶的上網模型是不夠準確的,因爲用戶不是傻乎乎的機器,他們是具有聰明大腦的人,當一個人遇到終止點或者陷阱的話,他不會不止所錯,也不會無休止地自己打轉,他會通過瀏覽器的地址欄輸入新的地址,以逃離這個網頁。也就是說,用戶從一個網頁轉至另一個網頁的過程中,會以一定的概率不點擊當前網頁中的鏈接,而是訪問一個自己重新輸入的新地址。我們可以依照這個原理修正之前的概率轉移公式,如下:

Vn=αTVn1+(1α)V0

其中,α 爲用戶繼續點擊當前網頁中的鏈接的概率,(1α) 爲用戶通過地址欄“逃離”的概率。關於這裏的α ,其實很講究,首先α 不能太大,因爲α 的大小與算法的收斂速度呈反比,
α 太大會導致算法收斂慢而影響性能;其次,α 也不能太小,因爲PageRank的精華就在於上面的公式中前一部分——由概率轉矩陣的多次迭代計算得到PR值。所以,最終兩位博士將α 值定爲0.85.

我們來看經過這樣處理之後,上面的終止點和陷阱問題能否得到解決:

當存在終止點時,迭代的結果爲:

1/41/41/41/40.140.210.210.210.10.10.10.1 

當存在陷阱時,迭代的結果爲:

1/41/41/41/40.140.210.420.210.10.10.70.1 

這樣就解決了終止點與陷阱的問題。

PageRank的不足

PageRank的優點太明顯,從它取得的巨大成功就可見一斑。但是他也並非十全十美,文獻[2]總結了PageRank的一些缺點,我將它們摘抄如下:

第一,沒有區分站內導航鏈接。很多網站的首頁都有很多對站內其他頁面的鏈接,稱爲站內導航鏈接。這些鏈接與不同網站之間的鏈接相比,肯定是後者更能體現PageRank值的傳遞關係。

第二,沒有過濾廣告鏈接和功能鏈接(例如常見的“分享到微博”)。這些鏈接通常沒有什麼實際價值,前者鏈接到廣告頁面,後者常常鏈接到某個社交網站首頁。

第三,對新網頁不友好。一個新網頁的一般入鏈相對較少,即使它的內容的質量很高,要成爲一個高PR值的頁面仍需要很長時間的推廣。

結語

當今的搜索引擎當然與20年前不可同日而語,PageRank早已不是唯一的網頁質量評估算法了,比較主流的搜索引擎用到的搜索算法數量成百,是一個多算法,多層次的系統。但是我們依然不能忘記搜索引擎系統曾經這一次巨大的變革,徹底改變了我們對信息檢索的認識。

不得不說,PageRank是20世紀末計算機科學史上的一大奇蹟,它以及其簡明的邏輯,發明了迄今爲止在搜索引擎領域還相當有代表性的算法,解決了數以億計的網頁質量評估問題,拋開它難以估量的商業價值不談,就說其學術方面,這種依靠數據自身結構的學習方法,也依然還在當前很多信息檢索領域啓發着我們。

最後,我想以一個故事結束[1]: 2001年, 佩奇爲”PageRank”申請到了專利,專利的發明人爲佩奇,擁有者則是他和布林的母校斯坦福大學。2004 年 8 月, 谷歌成爲了一家初始市值約17億美元的上市公司。不僅公司高管在一夜間成爲了億萬富翁,就連當初給過他們幾十美元 “贊助費” 的某些同事和朋友也得到了足夠終身養老所用的股票回報。作爲公司搖籃的斯坦福大學則因擁有”PageRank”的專利而獲得了180萬股谷歌股票。2005 年 12 月,斯坦福大學通過賣掉那些股票獲得了3.36億美元的鉅額收益,成爲美國高校因支持技術研發而獲得的有史以來最鉅額的收益之一。從投資角度講, 斯坦福大學顯然是過早賣掉了股票,否則獲利將更爲豐厚。不過,這正是美國名校的一個可貴之處,它們雖擅長從支持技術研發中獲利,卻並不唯利是圖。 它們有自己的原則,那就是不能讓商業利益干擾學術研究。爲此,它們通常不願長時間持有特定公司的股票,以免在無形中干擾與該公司存在競爭關係的學術研究的開展。

我這裏沒有崇洋媚外的意思,不過我想說,美國的大學,至少是一部分名校,是有所謂的“大學精神”的。你們可以想象一下,假如兩個中國學生髮明瞭PageRank,建立了Google這樣的企業,會不會有哪個學校像斯坦福這般處理所持有的股票呢?中國想建設世界一流的大學,任重而道遠!

[1] 谷歌背後的數學
[2] PageRank算法–從原理到實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章