【讀書筆記】數學之美2-搜尋引擎
8.簡單之美——布林代數和搜尋引擎
建立一個搜尋引擎大致需要做的幾件事情:
- 自動下載儘可能多的網頁;
- 建立快速有效的索引;
- 根據相關性對網頁進行公平準確的排序。
這就是搜尋的“道”。
關鍵詞=布林運算(詞1,詞2,詞3);接著判斷詞i是否在文獻中,以得到一串二進位制數;再根據幾個詞的布林關係做布林運算;最終便得到滿足要求的文獻。
由於索引之大,一開始是依靠分散式的方式儲存到不同的伺服器上 ,然後每接受一個查詢,這個查詢就被分發到許許多多的伺服器中,這些伺服器同時並行處理使用者請求;後來再大,就變成根據網頁的重要性、質量和訪問頻率建立常用和不常用等不同等級別的索引。
但是無論索引多麼複雜,原理上依然非常簡單,即等價於布林運算。
9.圖論和網路爬蟲
第八章講到了如何建立搜尋引擎的索引,那麼如何自動下載網際網路所有的網頁呢?這需要用到圖論中的遍歷演算法。
圖論就是節點+連線節點的弧,而遍歷演算法有兩種:
- 廣度優先搜尋(Breadth-First Search,BFS)
- 深度優先搜尋(Depth-First Search,DFS)
網際網路其實就是一張大圖而已——可以把每一個網頁當作一個節點,把那些超連結當做連線網頁的弧。用圖的遍歷演算法,自動地訪問每一個網頁並把它們存起來。完成這個功能的程式叫做“網路爬蟲”。
10.PageRank——Google的民主表決式網頁排名技術
搜尋引擎返回了成千上萬條結果,那麼應該如何排序呢?無異於兩組資訊:關於網頁的質量資訊,以及這個查詢與每個網頁的相關性資訊。
10.1 PageRank演算法的原理
核心在於:在網際網路上,如果一個網頁被很多其他網頁所連結,說明它受到普遍的承認和信賴,那麼它的排名就高(就像是學術論文的引用量和重要因子,越高那它的排名也就越高)。
理論問題解決了,又遇到實際問題。因為這個量實在是太大了,於是佩奇和布林利用了稀疏矩陣計算的技巧,大大簡化了計算量。而後Google又發明了平行計算工具MapReduce,使得PageRank的平行計算完全自動化了。
網頁排名演算法的高明之處在於它把整個網際網路當作一個整體來對待。這無意中符合了系統論的觀點。
10.2 PageRank的計算方法
假定向向量
(10.1)
為第一、第二、第三、...第N個網頁的網頁排名。矩陣A為網頁之間連結的數目,其中a(mn)代表第m個網頁指向第n個網頁的連結數。
初試假設:所有網頁排名都是1/N,即各個網頁的概率是一樣的,不確定性最大,熵最大:
接著就是進行迭代運算:
(10.2)
直至Bi和B(i-1)之間的差異非常小,接近於零時,停止迭代,演算法結束。一般來講10次就收斂了。
由於網頁之間連結的數量相比網際網路的規模非常稀疏,因此計算網頁的網頁排名也需要對零概率或者小概率事件進行平滑處理。則公式(10.2)就變成:
(10.3)
其中N是網際網路網頁的數量,α是一個(較小的)常數,I是單位矩陣
11.如何確定網頁和查詢的相關性
影響搜尋引擎質量的諸多因素,除了使用者的點選資料之外,可以被歸納成下面四大類:
- 完備的索引;
- 對網頁質量的度量;
- 使用者偏好;
- 確定一個網頁和某個查詢的相關性的方法。
11.1 搜尋關鍵詞權重的科學度量TF-IDF
根據網頁的長度,對關鍵詞的出現次數進行歸一化,也就是用關鍵詞的次數除以網頁的總字數。把所得的商成為“關鍵詞頻率”(Term Frequency)。
由於關鍵詞中各分詞的分量應該是不一樣的,所以必須設定不同的權重,且所設應滿足下面兩個條件:
- 一個詞的預測主題的能力越強,權重越大,反之,權重越小;
- 停止詞的權重為零
假定一個關鍵詞w在Dw個網頁中出現過,那麼Dw越大,w的權重越小,反之亦然。如此稱為“逆文字頻率指數”(Inverse Document Frequency),它的公式是:
(11.1) 其中D是全部網頁數。(這個公式其實就是前面的交叉熵公式所演變而來)
所以相關性計算的公式就為:
(11.2)
12.有限狀態機和動態規劃——地圖與本地搜尋的核心技術
就是我們日常使用最多的功能:確認地點、檢視地圖、查詢路線。而新的技術使得我們省去了自行查地圖、規劃路線的時間和經理。其中只有三項關鍵技術:
- 利用衛星定位(傳統的導航儀都可以做到)
- 地址的識別(有限狀態機)
- 根據使用者輸入的起點和終點,在地圖上規劃最短路線或者最快路線(動態規劃)
12.1 地址分析和有限狀態機
總的來說就是,用有限狀態機來識別輸入的地址是否合理。有限狀態機是一個特殊的有向圖,它包括一些狀態(節點)和連線這些狀態的有向弧。
當用戶輸入的地址不太標準或者有錯別字時,有限狀態機會束手無策,因為它只能進行嚴格的匹配。為了解決這個問題,我們希望可以看到進行模糊匹配,並給出一個字串為正確地址的可能性。為了實現這一目的,科學家們提出了基於概率的有限狀態機。這種基於概率的有限狀態機和離散的馬爾科夫鏈基本上等效。
12.2 全球導航和動態規劃
動態規劃,其實就是將一個大問題分解成幾個小問題,通過求解得幾個區域性最優解,最後得到大問題的最優解。
疑問:我覺得...這樣會不會最終是收斂於一個區域性最優解,而不是全域性最優解,就像決策樹的演算法一般。不知道是怎麼保證其收斂於全域性最優解的?!會不會是因為決策樹的最終目的地是不一樣的,而有限狀態機的最終目的地是“結束”,無論哪條路徑都是一樣的,所以基於動態規劃的有限狀態機可以保證全域性最優解。
13.Google AK-47的設計者——艾米特·辛格博士
- 做事情的哲學,先幫助使用者解決80%的問題,再慢慢解決剩下的20%的問題;
- 所選擇的方案要容易解釋每一個步驟和方法背後的道理,這樣不僅便於出了問題時查錯(Debug),而且容易找到今後改進的目標;
- 在倡導靠機器學習和大資料時,也必須要求能對機器學習出來的引數和公式給予合理的物理解釋。