如何利用機器學習構建自己的搜索排序算法

如何利用機器學習構建自己的搜索排序算法

搜尋聖經:

“任何足夠先進的技術都與魔術無法區分。” – Arthur C. Clarke(1961)

這句話不能更好地適用於一般搜索引擎和網路排名算法。

想一想。

你可以向Bing詢問大部分內容,你會在幾秒鐘內從數十億個網頁中獲得最好的10個結果。 如果這不是魔術,我不知道是什麼!

有時查詢是關於一個不起眼的愛好。 有時它是關於昨天沒有人能預料到的新聞事件。

有時甚至不清楚查詢的內容! 這一切都無所謂。 當用戶輸入搜索查詢時,他們希望在另一側有10個藍色鏈接。

為了以可擴展和系統的方式解決這個難題,我們在Bing的歷史中很早就做出了將Web排名視為機器學習問題的決定。

早在2005年,我們就使用神經網路為我們的搜索引擎提供動力,你仍然可以找到當時搜索和廣告副總裁Satya Nadella的罕見照片,展示我們的網路排名進展

本文將分解稱為學習排名的機器學習問題。 如果你想獲得一些樂趣,你可以按照相同的步驟來構建自己的網路排名算法。

機器學習為什麼?

“機器學習是讓計算機在沒有明確編程的情況下採取行動的科學。”

在高層次上,機器學習擅長識別數據中的模式並基於(相對)一小組示例進行概括。

對於Web排名,它意味著構建一個模型,該模型將查看一些理想的SERP並了解哪些特徵是最相關的預測。

這使得機器學習成為建立Web排名算法的可擴展方式。 您無需在每個可能的主題中聘請專家來仔細設計您的算法。

相反,基於一個偉大的足球網站和一個偉大的棒球網站共享的模式,該模型將學習識別偉大的籃球網站甚至是一個甚至還不存在的運動的偉大網站!

將Web排名視為機器學習問題的另一個優點是,您可以使用數十年的研究來系統地解決問題。

對於每個機器學習項目,有幾個關鍵步驟基本相同。 下圖突出顯示了這些步驟在搜索環境中的作用,本文的其餘部分將更詳細地介紹它們。

Web排名作為機器學習問題Web排名作為機器學習問題

1.定義算法目標

確定適當的可衡量目標是任何項目成功的關鍵。 在機器學習的世界中,有一種說法很好地突出了定義正確指標的重要性。

“你只會提高自己的衡量標準。”

有時目標很簡單: 它是不是熱狗

即使沒有任何指導方針,大多數人在提供各種圖片時也同意他們是否代表熱狗。

這個問題的答案是二元的。 無論是它還是不是熱狗。

其他時候,事情更主觀:它是給定查詢的理想SERP嗎?

每個人都會對結果的相關性,權威性或背景性有不同的看法。 每個人都會優先考慮並權衡這些方面。

這就是搜索質量評級指南發揮作用的地方。

在Bing,我們理想的SERP是最大化用戶滿意度的SERP。 團隊已經考慮了這意味著什麼,以及我們需要展示什麼樣的結果才能讓用戶滿意。

結果相當於我們的排名算法的產品規格。 該文檔概述了查詢的優秀(或差)結果,並嘗試從等式中刪除主觀性。

另一層複雜性是搜索質量不是二進制的。 有時候你會得到完美的結果,有時你會得到可怕的結果,但通常你會得到一些介於兩者之間的東西。

為了捕捉這些微妙之處,我們要求法官對每個結果進行5分制評分。

最後,對於查詢和評級結果的有序列表,您可以使用一些經典的信息檢索公式對SERP進行評分。

折扣累積增益 (DCG)是一個規範度量,它捕獲直覺,即SERP中的結果越高,正確的就越重要。

2.收集一些數據

現在我們有一個客觀的質量定義,一個對任何給定結果進行評級的標度,以及一個度量標準來評估任何給定的SERP。 下一步是收集一些數據來訓練我們的算法。

換句話說,我們將收集一組SERP並要求人類法官使用指南對結果進行評分。

我們希望這組SERP能夠代表我們廣泛的用戶群所搜索的內容。 一種簡單的方法是對我們過去在Bing上看到的一些查詢進行抽樣。

在這樣做的同時,我們需要確保在集合中沒有一些不需要的偏見。

例如,可能是東海岸的Bing用戶比美國其他地區的用戶多得多

如果東海岸的用戶的搜索習慣與中西部或西海岸有任何不同,那麼這將是在排名算法中捕獲的偏差。

一旦我們有了一個良好的SERP列表(查詢和URL),我們就會將該列表發送給人類評委,他們會根據指南對其進行評級。

完成後,我們會有一個查詢/ URL對列表及其質量等級。 該集合分為“訓練集”和“測試集” ,分別用於:

  • 訓練機器學習算法。
  • 評估它之前沒有見過的查詢的效果(但我們確實有一個質量評級,可以讓我們測量算法性能)。
標記查詢/ URL對的培訓和測試集標記查詢/ URL對的培訓和測試集

3.定義模型特徵

搜索質量評級基於人們在頁面上看到的內容。

機器對這些Web文檔有完全不同的視圖,它基於特徵是文檔的定義特徵,可用於預測給定查詢的相關性。

這裡有些例子。

  • 一個簡單的功能可能是文檔中的單詞數量。
  • 稍微更高級的功能可能是檢測到的文檔語言(每種語言用不同的數位表示)。
  • 更複雜的特徵是基於鏈接圖的某種文檔分數。 顯然,那將需要大量的預處理!
  • 您甚至可以使用合成功能,例如文檔長度的平方乘以外鏈數量的對數。 天空才是極限!
為機器學習準備Web數據為機器學習準備Web數據

將所有內容都投入到混合中會很誘人但是功能太多會大大增加培訓模型所需的時間並影響其最終性能。

根據給定特徵的複雜性,可靠地預先計算也可能是昂貴的。

在最終模型中,某些特徵不可避免地具有可忽略不計的權重,因為它們無法以某種方式幫助預測質量。

某些功能甚至可能具有負重量,這意味著它們可以預測不相關性!

作為旁注,查詢也有自己的功能。 因為我們正在嘗試評估給定查詢的搜索結果的質量,所以我們的算法從兩者中學習是很重要的。

4.訓練你的排名算法

這就是它們匯集在一起的地方。 索引中的每個文檔都由數百個功能表示。 我們有一組查詢和網址,以及他們的質量評級。

排名算法的目標是僅使用文檔(和查詢)特徵來最大化這些SERP的評級。

直觀地,我們可能想要構建一個模型來預測每個查詢/ URL對的評級,也稱為“逐點”方法。 事實證明這是一個難題,並不是我們想要的。

我們並不特別關心每個結果的確切評級。 我們真正關心的是結果按照評級的降序正確排序。

捕獲正確順序概念的一個合適指標是您的排名中的倒數計數,即評分較低的結果高於評級較高的結果的次數。 這種方法被稱為“成對”,我們也將這些反轉稱為“成對錯誤”。

成對錯誤的一個例子成對錯誤的一個例子

並非所有成對錯誤都是相同的。 因為我們使用DCG作為我們的評​​分函數,所以算法獲得最佳結果至關重要。

因此,位置1和2處的成對錯誤比位置9和10處的錯誤嚴重得多,所有其他條件相同。 我們的算法需要考慮每個結果對的DCG中的這種潛在增益(或損失)。

機器學習模型的“訓練”過程通常是迭代的(並且全部是自動化的)。 在每個步驟中,模型都會調整每個要素的權重,使其在預期最大程度地減少錯誤的方向上。

在每個步驟之後,該算法重新測量所有SERP的評級(基於已知的URL /查詢對評級)以評估其如何進行。 沖洗並重複。

根據您用於訓練模型的數據量,可能需要數小時甚至數天才能達到滿意的結果。 但最終模型仍然需要不到一秒的時間才能返回它預測為最佳的10個藍色鏈接。

我們在Bing上使用的特定算法稱為LambdaMART ,一種增強的決策樹集合。 它是RankNet的繼承者,RankNet是一般搜索引擎用來對其結果進行排名的第一個神經網路。

5.評估你的表現如何

現在我們有了排名算法,隨時可以試用和測試。 請記住,我們保留了一些未用於訓練機器學習模型的標記數據。

我們要做的第一件事就是在“測試集”上測量算法的性能。

如果我們做得很好,我們的算法在測試集上的性能應該與其在訓練集上的性能相當。 有時情況並非如此。 主要風險是我們稱之為“ 過度擬合 ”,這意味著我們過度優化了訓練集中SERP的模型。

讓我們想像一個漫畫場景,其中算法將硬編碼每個查詢的最佳結果。 然後它將在訓練集上完美地執行,為此它知道最佳結果是什麼。

另一方面,它會在測試集上坦克,因為它沒有這些信息。

現在這是Twist ……

即使我們的算法在DCG測量時表現很好,但這還不夠。

請記住,我們的目標是最大化用戶滿意度。 這一切都始於準則,這些準則捕捉了我們認為令人滿意的用戶。

這是一個大膽的假設,我們需要驗證以關閉循環。

為此,我們執行所謂的在線評估 。 當排名算法與真實用戶一起實時運行時,我們是否觀察到一種意味著用戶滿意的搜索行為?

即使這是一個模棱兩可的問題。

如果您鍵入查詢並在5秒後離開而不點擊結果,那是因為您從字幕中得到答案還是因為您沒有找到任何好處?

如果您點擊結果並在10秒後返回SERP,是因為登陸頁面很糟糕,還是因為它非常好,您可以一目了然地獲得您想要的信息?

最終,每個排名算法的變化都是一個允許我們更多地了解用戶的實驗,這使我們自然搜尋會回顧並改進我們對理想搜索引擎的願景。

更多資源:


圖片來源

在線圖像:由作者建立,2019年3月

Close Menu