發布人:Google Research 軟件工程師 Michael Bendersky 和 Xuanhui Wang
2018 年 12 月,我們推出了 TF-Ranking,這是一個基于 TensorFlow 的開源代碼庫,用于開發可擴容的 learning-to-rank (LTR) 神經模型。當用戶期望收到有序的項目列表來輔助查詢時,該模型可以發揮出色作用。LTR 模型與一次只對一個項目進行分類的標準分類模型不同,它會將整個項目列表接收輸入,并學習排序,充分提升整個列表的效用。
TF-Ranking
https://github.com/tensorflow/ranking
雖然 LTR 模型最常用于搜索和推薦系統,但自其發布以來,我們已經看到 TF-Ranking 在除搜索以外的各領域,均有應用,其中包括電子商務、SAT 求解器和智能城市規劃等。
Learning-to-rank (LTR) 的目標是學習一個函數 f(),該函數會以項目列表(文件、產品、電影等)作為輸入,并以最佳排序(相關性降序)輸出項目列表。上圖中,深淺不一的綠色表示項目的相關性水平,標有 “x” 的紅色項目是不相關的
電子商務
https://dl.acm.org/doi/abs/10.1145/3308560.3316603
SAT 求解器
https://arxiv.org/abs/1904.12084
智能城市規劃
https://dl.acm.org/doi/abs/10.1145/3450267.3450538
2021 年 5 月,我們發布了 TF-Ranking 的一個重要版本,實現了全面支持使用 Keras(TensorFlow 2 的一個高階 API),以原生方式構建 LTR 模型。我們為原生 Keras 排序模型加入了全新的工作流設計,其中包括靈活的 ModelBuilder、用于設置訓練數據的 DatasetBuilder, 以及利用給定數據集訓練模型的 Pipeline。有了這些組件,構建自定義 LTR 模型會比以往更輕松,且有利于快速探索、生產和研究的新的模型結構。如果您選擇的工具是 RaggedTensors,TF-Ranking 現在也可以和這些工具協作。
重要版本
https://github.com/tensorflow/ranking/releases/tag/v0.4.0
TensorFlow 2
http://tensorflow.google.cn/
也
https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/examples/keras/antique_ragged.py
此外,我們在最新版本中結合了 Orbit 訓練庫,其中包含了許多進展成果,而這些成果正是近兩年半內,神經 LTR 研究結晶。下面我們分享一下 TF-Ranking 最新版本中的一些重要改進。
構建和訓練原生 Keras 排序模型的工作流。藍色模塊由 TF-Ranking 提供,綠色模塊支持自定義
最新版本
https://github.com/tensorflow/ranking/releases/tag/v0.4.2
Orbit
https://github.com/tensorflow/models/tree/master/orbit
利用 TFR-BERT 的
Learning-to-Rank
最近,BERT 之類的預訓練語言模型在各種語言理解任務中性能表現突出。為利用這些模型,TF-Ranking 實現了一個新穎的 TFR-BERT 架構——通過結合 BERT 與 LTR 的優勢,來優化列表輸入的排序過程。舉個例子,假設有一個查詢和一個由 n 個文件組成的列表,而人們想要在對此查詢響應中的文件進行排序。LTR 模型并不會為每個 《query, document》 學習獨立的 BERT 表示,而是會應用一個排序損失來共同學習 BERT 表示,充分提升整個排序列表相對于參照標準標簽的效用。
這個過程如下圖所示。首先,我們把查詢響應中需要排序的 n 個文件組成的列表扁平化為一個 《query, document》 元組列表。把這些元組反饋至預訓練的語言模型(例如 BERT)。然后用 TF-Ranking 中的專用排序損失,對整個文件列表的池化 BERT 輸出進行聯合微調。
排序損失
https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/python/losses.py
結果表明,這種 TFR-BERT 架構在預訓練的語言模型性能方面有了明顯改善,因此,可以在執行多個熱門排序任務時體現出十分優越的性能。若將多個預訓練的語言模型組合在一起,則效果更為突出。我們的用戶現在可以通過這個簡單的例子完成 TFR-BERT 入門。
TFR-BERT 架構的說明,在這個架構中,通過使用單個 《query, document》 對的 BERT 表示,在包含 n 個文件的列表上構建了一個聯合 LTR 模型
多個熱門
https://arxiv.org/abs/2010.00200
簡單的例子
https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/examples/keras/tfrbert_antique_train.py
具有可解釋性的
Learning-to-Rank
透明度和可解釋性是在排序系統中部署 LTR 模型的重要因素,在貸款資格評估、廣告定位或指導醫療決定等過程中,用戶可以利用這些系統來確定結果。在這種情況下,每個單獨的特征對最終排序的貢獻應具有可檢查性和可理解性,以此確保結果的透明度、問責制和公正性。
實現這一目標的可用方法之一是使用廣義加性模型 (Generalized additive model,GAM),這是一種具有內在可解釋性的機器學習模型,由唯一特征的平滑函數線性組合而成。然而,我們雖然已經在回歸 (Regression analysis) 和分類任務方面對 GAM 進行了廣泛的研究,但將其應用于排序設置的方法卻并不明確。舉個例子,雖然可以直接利用 GAM 對列表中的每個單獨項目進行建模,然而對項目的相互作用和這些項目的排序環境進行建模,仍是一個更具挑戰性的研究問題。為此,我們開發了神經排序 GAM,這是可為排序問題的廣義加性模型所用的擴展程序。
神經排序 GAM
https://arxiv.org/abs/2005.02553
與標準的 GAM 不同,神經排序 GAM 可以同時考慮到排序項目和背景特征(例如查詢或用戶資料),從而得出一個可解釋的緊湊模型。這同時確保了各項目級別特征與背景特征的貢獻具有可解釋性。例如,在下圖中,使用神經排序 GAM 可以看到在特定用戶設備的背景下,距離、價格和相關性是如何對酒店最終排序作出貢獻的。目前,神經排序 GAM 現已作為 TF-Ranking 的一部分發布。
為本地搜索應用神經排序 GAM 的示例。對于每個輸入特征(例如價格、距離),子模型會產生可以檢查的子分數,支持公開查看。背景特征(例如用戶設備類型)可以用于推算子模型的重要性權重
發布
https://github.com/tensorflow/ranking/issues/202
神經排序還是梯度提升?
神經模型雖然在多個領域展現出了十分優越的性能,但 LambdaMART 之類的專門梯度提升決策樹 (Gradient Boosted Decision Trees, GBDT) 仍然是利用各種開放 LTR 數據集時的性能標桿。GBDT 在開放數據集中的成功可歸結于幾個原因。首先,由于其規模相對較小,神經模型在這些數據集上容易過度擬合 (Overfitting)。其次,由于 GBDT 使用決策樹對其輸入特征空間進行劃分,它們自然更能適應待排序數據的數值尺度變化,這些數據通常包含具有 Zipfian (Zipf‘s law) 或其他偏斜分布的特征。然而,GBDT 在更為現實的排序場景中確實有其局限性,這些場景往往同時包含文本和數字特征。舉個例子,GBDT 不能直接應用于像原始文檔文本這種,較大的離散特征空間。一般來說,它們的可擴容性也要弱于神經排序模型。
因此,自 TF-Ranking 發布以來,我們團隊大大加深了對于神經模型在數字特征排序中優勢的理解。。最能充分體現出這種理解的是,ICLR 2021 的一篇論文中所描述的數據增強自覺潛在交叉 (DASALC) 模型,該模型首次在開放 LTR 數據集上建立了與強大的、與 LambdaMART 基線相同的神經排序模型,并且在某些方面取得了統計學上的重大改進。這一成就是通過各種技術的組合實現的,其中包括數據增強、神經特征轉換、用于建模文檔交互的自注意機制、列表式排序損失,以及類似 GBDT 中用于提升的模型組合。現在 DASALC 模型的架構完全由 TF-Ranking 庫實現。
ICLR 2021
https://research.google/pubs/pub50030/
結論
總而言之,我們相信基于 Keras 的 TF-Ranking 新版本能夠讓開展神經 LTR 研究和部署生產級排序系統變得更加輕松。我們鼓勵大家試用最新版本,并按照這個引導例子進行實踐體驗。雖然這個新版本讓我們感到非常激動,但我們的研發之旅遠未結束,所以我們將繼續深化對 learning-to-rank 問題的理解,并與用戶分享這些進展。
最新版本
https://github.com/tensorflow/ranking/releases/tag/v0.4.0
這個引導例子
https://github.com/tensorflow/ranking/blob/master/tensorflow_ranking/examples/keras/keras_dnn_tfrecord.py
致謝
本項目的實現離不開 TF-Ranking 團隊的現任和前任成員:Honglei Zhuang、?Le Yan、Rama Pasumarthi、Rolf Jagerman、Zhen Qin、Shuguang Han、Sebastian Bruch、Nathan Cordeiro、Marc Najork 和 Patrick McGregor。另外要特別感謝 Tensorflow 團隊的協作者:Zhenyu Tan、Goldie Gadde、Rick Chao、Yuefeng Zhou?、Hongkun Yu 和 Jing Li。
責任編輯:haq
-
模型
+關注
關注
1文章
3243瀏覽量
48840 -
代碼
+關注
關注
30文章
4788瀏覽量
68612 -
tensorflow
+關注
關注
13文章
329瀏覽量
60536
原文標題:TF-Ranking 中的 Keras API 讓 LTR 模型構建更輕松
文章出處:【微信號:yingjiansanrenxing,微信公眾號:硬件三人行】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論