1. 4-【理論】RankNet:排序學習演算法的「在天之靈」
在搜索排序的項目中,系統性梳理推薦/搜索排序演算法脈絡,對項目實施與演進至關重要。一般而言,推薦/搜索排序系統包含召回、排序與干預三個階段。排序階段分為粗排與精排,具體業務不同,策略各異。網路上已有多樣豐富的資料,這里重點介紹排序任務的三種演算法設計方法:PointWise、PairWise與ListWise。
PointWise方法關注於每個查詢下的單個文檔絕對相關度,不考慮文檔間關系,最符合標准機器學習結構。PairWise方法則關注文檔間的相對相關度,即在給定查詢下,文檔之間的相對排序。ListWise方法則考慮整個搜索結果列表的排序,旨在優化文檔列表整體。
在演算法邏輯框架中,PointWise方法最為基礎,其直接應用機器學習標准;PairWise方法則專為排序場景設計,核心在於最小化文檔對的排序誤差,體現了數據科學家的深入思考與創新;ListWise方法在PairWise基礎上進行改進優化。LambdaMART作為ListWise模型的代表,曾贏得2010 Yahoo! Learning To Rank Challenge的冠軍。
RankNet作為LambdaMART的基礎模型,基於PairWise思想,被譽為排序學習演算法的「在天之靈」。其經典性與創新性使其成為研究領域不可或缺的里程碑。盡管深度神經網路在2016年後回潮,PointWise方法再次受到重視,但輕量級的LambdaMART在特定場景下仍具有高性價比。
美團在搜索排序應用的演進過程中,經歷了從邏輯回歸(LR)到LambdaMART再到各種深度神經網路結構的探索,最終從上一版升級至LambdaMART,實現了業務應用效果的質的飛躍。
理解LambdaMART的關鍵在於理解RankNet的核心思想:最小化文檔對的排序誤差。這一步驟是整個演算法設計的「神來之筆」,與標准機器學習數據結構相比,RankNet在數據定義、假設函數、目標函數與優化演算法設計上獨具匠心。
數據結構定義、假設函數設計與目標函數明確,為演算法提供堅實基礎。優化演算法通過分析文檔對的偏微分,揭示了排序誤差的最小化過程。在Python實現中,盡管沒有現成的RankNet介面,通過手寫代碼或利用XGBoost等工具,可以實現LambdaMART框架。
排序任務中,DMatrix數據結構的分組信息通過set_group()方法設置,以適應排序任務需求。LambdaMART的梯度向量在優化過程中融入評估指標信息,有效指導演算法優化,提升排序效果。