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