1. 程式人生 > >谷歌開源 TF-Ranking,專用於排序學習的可擴充套件 TensorFlow 庫

谷歌開源 TF-Ranking,專用於排序學習的可擴充套件 TensorFlow 庫

  

日前,谷歌 AI 釋出了最新成果 TF-Ranking,它是一個專門針對排序學習(learning-to-rank)應用的可擴充套件 TensorFlow 庫。TF-Ranking 快速且易用,並能建立高質量的排序模型,對構建 web 搜尋或新聞推薦等基於真實世界資料的排序系統感興趣的人,都可以將 TF-Ranking 作為強穩的、可擴充套件的解決方案。

排序是一種以最大化整個列表效用為目的,對專案列表進行排序的過程,適用於搜尋引擎、推薦系統、機器翻譯、對話系統,甚至還能用於計算生物學等眾多領域。在諸如這些(以及其他諸多)應用中,研究人員經常使用一系列稱作排序學習的有監督的機器學習技術。在許多情況下,這些排序學習技術會被應用於大規模資料集,在這一場景中,TensorFlow 的可伸縮性會成為一個優勢。然而,目前 TensorFlow 還不能直接支援學習排序。並且,現在也還沒有其他專門針對排序學習技術規模化應用的開源庫。

現在,谷歌 AI 宣佈開源 TF-Ranking(https://github.com/tensorflow/ranking),它是一個可擴充套件的排序學習 TensorFlow 庫。正如谷歌在最近發表的論文(https://arxiv.org/abs/1812.00073)中所描述的,TF-Ranking 提供了一個統一的框架,該框架包括一套最先進的排序學習演算法,並且支援 Pairwise 和 Listwise 損失函式、多專案評分、排序度量優化和無偏見排序等等。

TF-Ranking 快速且易用,並能建立高質量的排序模型。該統一框架讓機器學習研究人員、實踐者和愛好者能夠在單個庫中評估和選擇一系列不同的排序模型。此外,谷歌 AI 團隊堅信一個有用的開源庫,它的關鍵不僅在於提供合理的預設值(sensible default),而且還在於能夠授權使用者開發自定義模型。為此,他們提供了靈活的 API,讓使用者可以在 API 中定義和插入自定義的損失函式、評分函式和指標。

現有演算法和指標支援

排序學習演算法的目標是最小化在專案列表上定義的損失函式,以優化任意給定請求的排序。TF-Ranking 支援在此前工作(https://en.wikipedia.org/wiki/Learning_to_rank#Approaches)中所描述的各類標準的 pointwise,pairwise 和 listwise 損失函式。這確保了使用 TF-Ranking 庫的研究人員能夠重現和擴充套件先前的 baseline,並且他們的請求可以得到最明智的選擇。此外,TF-Ranking 還可以通過嵌入來處理稀疏特徵(如原始文字)以及擴充套件到數億個訓練例項。因此,任何對構建 web 搜尋或新聞推薦等基於真實世界資料的排序系統感興趣的人,都可以將 TF-Ranking 作為強穩的、可擴充套件的解決方案。

經驗評估是所有機器學習或資訊檢索研究的重要組成部分。為了確保與先前工作的相容性,TF-Ranking 支援許多常用的排序評價指標,包括 Mean Reciprocal Rank(MRR,https://en.wikipedia.org/wiki/Discounted_cumulative_gain)和 Normalized Discounted Cumulative Gain(NDCG,https://en.wikipedia.org/wiki/Discounted_cumulative_gain),同時也讓研究人員在訓練期間更方便在 TensorBoard(開源 TensorFlow 視覺化儀表盤)上看到這些指標。

谷歌開源 TF-Ranking:專用於排序學習的可擴充套件 TensorFlow 庫

TensorBoard 上顯示的基於訓練步驟(X 軸)的 NDCG 指標 (Y 軸)示例,它表示了訓練期間指標的總體進度。不同的方法可直接在儀表板上進行比較,並基於指標選出最佳模型。

多條目評分

TF-Ranking 支援一種新的評分機制,在新的評分機制中可以對多個條目進行聯合評分,這是對只能對單個條目進行獨立評分的傳統評分機制的擴充套件。多條目評分面臨的一個挑戰是難以推斷哪些條目必須進行分組並在子組中評分。然後,每個條目累積下來的分數將被用於排序。TF-Ranking 提供了一個 List-In-List-Out(LILO)API,來將所有這些邏輯放入匯出的 TF 模型中。

谷歌開源 TF-Ranking:專用於排序學習的可擴充套件 TensorFlow 庫

TF-Ranking 庫支援擴充套件自傳統單條目評分的多條目評分架構。

正如谷歌 AI 在最近的工作(https://arxiv.org/abs/1811.04415)中所展示的,多條目評分在公共 LETOR 基準測試中的效能,與 RankNet,MART 和 LambdaMART 等最先進的排序學習模型相比具有競爭力。

排序評價指標優化

排序學習所面臨的一個重要研究挑戰是排序評價指標的優化(例如前面所提到的 NDCG 和 MRR)。雖然與 Area Under the Curve(AUC)之類的標準分類評價指標相比,這些評價指標能更好地衡量排序系統的效能,但可惜它們要麼不連續,要麼平滑。因此,這些評價指標的標準隨機梯度下降優化存在困難。

在最近的一項工作(https://ai.google/research/pubs/pub47258)中,谷歌 AI 提出了一種新的方法——LambdaLoss,它為排序評價指標優化提供了一個統一的概率框架。在這個框架中,可以通過期望最大化的過程來設計和優化由評價指標驅動的損失函式。TF-Ranking 庫集成了評價指標優化的最新成果,並提供了 LambdaLoss 的實現。谷歌 AI 表示,TF-Ranking 未來有望鼓舞和推動排序評價指標優化這一重要領域的更深入的研究進展。

無偏見排序學習

此前的研究(https://ai.google/research/pubs/pub45286)表明,給定一個專案的排序列表,使用者更有可能重點檢視前面幾個結果,而忽略結果之間的相關性。這一發現激發了大家對於無偏見排序學習的研究興趣,並且帶來了無偏見評估和基於訓練例項重複加權的幾種無偏見學習演算法的發展。

開啟 TF-Ranking 的使用

TF-Ranking 實現了 TensorFlow Estimator 介面,它通過封裝訓練、評估、預測和匯出服務,可以大大簡化機器學習程式設計。

TF-Ranking 完美地集成了豐富的 TensorFlow 生態系統。如上所述,你可以使用 Tensorboard 將 NDCG 和 MRR 等排序評價指標視覺化,以及使用這些評價指標選擇最佳模型檢查點。一旦你的模型準備就緒,便可使用 TensorFlow 服務(https://www.tensorflow.org/serving/),輕而易舉地將其部署到生產。

如果大家有興趣嘗試 TF-Ranking,可以前往谷歌 AI 的 GitHub 儲存庫(https://github.com/tensorflow/ranking),並參考教程示例(https://github.com/tensorflow/ranking/tree/master/tensorflow_ranking/examples