淺談網頁搜尋排序中的投票模型

發表於2012-05-29

來源:百度搜尋研發部

前些天讀了一本《選舉的困境》,其中有一章,從美國的選舉制度說起,介紹美國選舉制度的不足,然後針對其不足,提出種種改善,然而每種改善都有其各自的問題,其中的變化很有趣。

先說美國選舉制度,美國的總統選舉是一種“贏者通吃”的方式,每個州根據其人口多少,有幾十或幾百的“州票”,州里的人對總統候選人進行選舉,在某個州獲得票最多的那個候選人,獲得這個州所有的“州票”,然後統計所有候選人的“州票”多少,獲得最多“州票”的候選人獲勝。

這樣制度的問題是顯然的,比如如果只有兩個州,A州5個人,而B州4個人,州票也分別是5和4,如果某候選人X在A州以3:2獲勝,另一個候選人Y 在B州以4:0獲勝,這樣顯然候選人Y在全國範圍內獲得了6張票,而候選人X只有在A州的3張票,但是由於“贏者通吃”,X獲得了A周的全部5張“州 票”,Y只獲得了B周的4張“州票”,在全國只有1/3民眾支援的X居然獲得了選舉的勝利。

這樣的情況在2000年美國總統選舉中就出現過,小布什的州票領先於戈爾,然而在全國民眾中統計支援戈爾的人數卻是大於小布什的,當然戈爾輸給小布什還有另一個原因,這裡按下不表。

如果放在演算法領域,可以看出這裡的問題在於,為了統計結果R(最適合的總統人選),找到了一個特徵A(每個民眾的投票),而決定結果R的,卻不是特徵A,而是由特徵A推匯出來的特徵B(州票),在特徵A向特徵B的推導過程中,資訊丟失了(每個洲的支援百分比不一樣)。

“贏者通吃”這種制度的具體歷史原因先不說,有興趣的朋友可以去看原著。解決這種問題的最直接方案就是從“贏者通吃”變成直選,也就是一人一票,直接統計票數,然而這樣也會遇到一系列問題。

 

在談那一系列問題之前,先把要解決的問題抽象一下:

有n個候選人,每個選民對這n個候選人投票,最終在n個候選人中選出最合適、最符合民意、也符合邏輯的那個人。

 

方案1一票制,每人一票,選出自己最喜歡的候選人,對結果進行統計,得票最多的那個人當選。

這樣做的問題是會導致作者定義的一種“鷸蚌困局”,舉例說,如果有ABC三個候選人,其中BC政見比較類似,支援B的人也比較支援C,反之亦然,在 全民中,喜歡BC的人佔多數,A的政見和BC相反,支援A的人在全民中佔少數。這樣導致的後果就是,BC獲得的票會比較分散,而A獲得的票比較集中從而獲 得勝利,如果BC中有1人不參加選舉,票就會集中到B或者C一個人的手中,從而使多數選民的支持者當選。前面按下不表的戈爾失敗的另一個原因,就是有人認 為有跟戈爾政見類似的耐德的參與,他分散了部分戈爾的選票。

可以對此問題有所改善的方案叫做“二選制”。

 

方案2:二選制,每人一票,如果無人獲得大於50%的支援,則將得票最高的兩個候選人拿出來,再進行一輪選舉,得票多的人獲勝。

法國總統選舉就是這樣的二選制,但是這樣的方法只能改善“鷸蚌困局”,而不能徹底解決,2002年的法國總統大選就出現了類似的情況,當時支援左派 政見的民眾較多,然而在二選制下,最終的前兩名卻是一個右派和一個極右派。出現這種情況的原因是當年有16個總統候選人,且多數是持左派政見者,這樣就導 致左派的票極端分散。

 

方案3:n選制,每人一票,如果無人獲得大於50%的支援,則去掉支援最少的候選人,再進行一輪投票,若依舊無人獲得大於50%的支援,再去掉得票最少的候選人,直到有人大於50%支援為止。

2001年奧委會決定北京為2008年奧運會主辦城市的時候,就是用的這樣的制度,在第一輪投票裡大阪被淘汰,北京在第二輪就獲得了半數以上的支援,從而當選。

n選制的問題在於不實用,如果是奧委會這種只有幾百個人投票的情況還可以使用,如果類似前面法國總統選舉,有16個候選人,舉國上下最多可能進行15次投票,成本太高。

 

方案4:即刻複選制,每個民眾對候選人進行排序,如果某個候選人獲得了50%以上的首選,則直接獲得勝利,否則 淘汰票數最低的候選人,並且把票數最低候選人的得票中的第二候選人拿出來,分給對應的候選人,如果有人獲得50%以上,則當選,否則再淘汰一位最低的,並 且把他票分給裡面排序最高的且未被淘汰的候選人,如此往復。

愛爾蘭總統選舉和倫敦市長選舉採用的是類似的方案,此方案也有問題,試想如此場景:選民共10人,中間派候選人是3人的首選,左派和右派的候選人分 別是4人的首選,當然左派選民最討厭右派候選人,而右派選民也最討厭左派候選人,而左派右派的民眾對中間派候選人倒是都可以接受,不管是即可複選制還是n 選制,中間派候選人都會在第一輪被淘汰。而中間派候選人則是全體民眾都可以接受的人,也最能調和各派之間矛盾,最和諧。

這個方案的本質問題是,雖然每個選民可以對候選人排序,但是在第一輪的時候卻只考慮了第一選,沒有考慮選民的二、三選。

 

方案5:上行復選制,跟方案4類似,只不過第一輪淘汰的不是支援最少,而是反對最多的候選人(獲得最多末選票的候選人)

再看上面提到的情況,中間派候選人由於不是任何人的末選,所以第一輪淘汰的是左派或者右派,再第二輪選舉中,中間派的候選人就可以獲勝了。

方案5也有方案5的問題,考慮這樣一種情況,只有兩個候選人AB參選,選民9人,其中6人喜歡A而討厭B,3人喜歡B而討厭A,無論按照之前的哪種 方式,都會是A獲勝。但是現在又多了兩個候選人C和D,喜歡B的3人中,都是把A列在最後一個候選的,而喜歡A的6人的末選,卻是BCD各2票,這樣,在 第一輪選舉中,A就由於獲得了最多的末選票被淘汰了,而通過精心的構造例子,完全可以使B最終當選。僅僅由於CD參選或者不參選,A和B之間的勝負關係就 發生了大逆轉。

實際使用此方案的例子不多,只有在公元前507年的雅典有類似的方案,不是讓民眾投支援票,而是投反對票,把反對最多的人投出局。

 

方案6:多賽制,民眾對候選人排序,然後候選人之間兩兩pk,統計每一張選票上看候選人A在候選人B前面還是B在A前面,如此找到獲勝場次最多的候選人來贏得選舉。

這樣的問題是可能導致迴圈勝負,如ABC三個候選人,有3個民眾,投票分別是ABC,BCA,CAB,可以看出AB之間A獲勝兩 次,A>B;BC之間B獲勝兩次,B>C,AC之間C獲勝兩次,C>A,這樣就構成了一個A>B>C的迴圈。這個是不是有 點像足球聯賽的記分制啊,如果積分相同,足球比賽中可以再看淨勝球、進球、勝負關係等,但是作者並沒有在這個方面進行展開,而是介紹了另一種方式:博達制。

 

方案7:博達制,民眾對候選人排序,假如有n個候選人,第一位的候選人得n分,第二位得n-1分,以此類推,然後統計每個候選人的總分,獲得最多分的獲勝。

有人對博達制的批評是:可能有選民會利用這種方式進行作弊(投“策略票”),最支援B的候選人本來心目中的排序是B>A>C,但是由於 相對A,他們還是更喜歡B,因此,為了把B拉上來,就得把A拉下去,他們的投票就變成了B>C>A。博達對此批評的迴應是:我的制度只適用於 誠實的投票者。

而這本書的作者卻認為博達制的“策略票”問題沒那麼嚴重,如果無法準確預測民意和精確控制策略票的投法,有可能因為用力過猛,不但把A拉下來了,反 而讓C獲得的支援票增加,這樣就使得最支援B的那些人的“策略票”反而使得他們最討厭的C當選了,當年在IMDB上就發生過類似一幕:

電影《蝙蝠俠6》上映後,蝙蝠俠的粉絲們覺得這部片太酷了,於是就想把蝙蝠俠6投成IMDB第一位,於是他們瘋狂的給蝙蝠俠6打高分,而同時,也紛 紛的給當時的IMDB第一《教父》投低分,導致的結果就是用力過猛,教父變成了第三名,原來的第二肖申克的救贖(TSR)變成了第二(原來的第二是排在教 父後面,新的第二是排在蝙蝠俠6後面),而後來,隨著瘋狂粉絲的熱情消退,理性的意見佔據了上風,蝙蝠俠6的得分逐漸下降,跌到了第10。而教父還是在肖 申克的救贖後面,很久沒有回去了。

 

博達制是否有其他問題呢?

以上只是對這本書第14章的一個筆記,也僅僅針對“多候選人單職位”問題進行了討論,書的後面還會對“多候選人多職位”的情況繼續探討,也就是根據每個人對候選人的排序,來決定最終的候選人排序。

回到搜尋引擎領域來,如上策略的變遷會給我們一些啟示,先看看之前抽象出來的問題:

有n個候選人,每個選民對這n個候選人投票,最終在n個候選人中選出最合適、最符合民意、也符合邏輯的那個人。

 

這很像搜尋引擎在解決的問題:

系統裡有n個網頁,有m個特徵(頁面質量、頁面內容豐富度、頁面超鏈、文字相關性等)對n個網頁有不同的打分,如何根據這些特徵的“投票”,選出最適合放在第一位的網頁呢?

 

從選舉的例子中,我們可以得到的幾個啟示:

1. 設計演算法時,要避免出現“贏者通吃”帶來的資訊丟失問題。

2. 不要因為某幾個特徵特別好,就把某個網頁排到最前,或者因為某幾個特徵特別差,就把某個網頁拋棄。

3. 最合適放在首位的網頁不一定是在每個特徵上都最好,而應該是能夠兼顧所有特徵,綜合表現最好的那個。

4. 搜尋引擎使用者對搜尋結果的點選行為,可以看成是對搜尋結果進行的“投票”,這樣的“投票”資訊的使用方式,也要注意考慮是否會帶來選舉過程中出現的種種不合理。

以上提到的種種選舉方案,僅僅是對“多候選人單職位的”的情況進行討論,而搜尋引擎面對的問題,則更類似於“多候選人排序”的情況,也即:

系統裡有n個網頁,有m個特徵(頁面質量、頁面內容豐富度、頁面超鏈、文字相關性等)對n個網頁有不同的打分,如何根據這些特徵的“投票”,決定n個網頁的順序?

 

而這個“多候選人排序”問題,是有一個“不可能的民主”的理論的,該理論的大意是,“合理”的民主應該滿足3個條件:

1. 如果選民都認為A比B好,那麼最終結果應該也是A比B好

2. 沒有“獨裁者”,也即,不存在這樣一個人,無論別人怎麼排序,最終結果的排序都和這個人的排序一致

3. 無關因素獨立性,也即,在第一次投票完成後,A排在B前面,現在進行第二次投票,如果所有人都沒有改變自己投票中A和B的相對順序,那最終結果應該也是A在B前面

而通過數學的證明,可以得出結論:如果某種選舉方式滿足條件1和3,則必然不滿足2,也即必然存在“獨裁者”,這個問題的證明,可以參考這篇部落格:http://roba.rushcj.com/?p=509

根據“不可能的民主”理論,和搜尋引擎結合起來看,似乎搜尋引擎很難給出一個合理的網頁排序,但是搜尋引擎和投票又似乎有所不同,有兩個角度可以破解

1. 認為條件3過於強,需要弱化。

2. 也許在網頁排序問題上,真的存在這樣一個“獨裁特徵”,這個“獨裁特徵”從目前看來,最適合的應該就是“使用者滿意度”了,按照使用者的滿意程度來排序網頁,就是最合理的網頁排序。如何衡量“使用者滿意度”呢?這就是我們一直在努力的。

 

相關文章