詳解TF-Ranking:Google開源的排序框架應用於郵件檢索、推薦系統

2020-09-13 比特到商業智能

今天分享的是一個有關LTR框架的介紹,LTR是Learning-To-Rank,解決的是排序問題。排序問題在人工智慧領域應用很廣,比如在Gmail裡搜索一個關鍵詞,返回最匹配的郵件。再比如進入Google Drive後的一些文章推薦。

傲海的分享主要參考Google2019年發布的一篇論文《TF-Ranking:Scalable TensorFlow Library for Learning-to-Rank》,蠻長的,看了小一周才學習完。這個庫已經開源了,大家可以在下方地址訪問並使用:

https://github.com/tensorflow/ranking

LTR三種模式:Pointwise、Pairwise、Listwise

介紹LTR的話先要講下Pointwise、Pairwise、Listwise這三個模式的區別,以生活中的一個例子說明:

上圖是一個點餐界面,假設我們強制用戶只能在界面中點一個菜,那麼Pointwise、Pairwise、Listwise是如何構建訓練過程的呢:

  • Pointwise:只關心單點的優化,比如用戶點了排骨。那麼就把排骨構建成正樣本,其它菜都是負樣本,構建成一個二分類問題,進行訓練。Pointwise的問題在於缺少對整個列表的關係屬性的挖掘
  • Pairwise:把優化問題看作兩個樣本的組合,訓練的時候輸入的是兩個樣本的特徵組合,返回值比較高的樣本
  • Listwise:把整個序列看作一個訓練樣本進行優化,Listwise也是目前比較好的一種推薦場景訓練模式,因為它會完全考慮所有樣本的關聯屬性。比方說我點了紅燒肉,那麼排骨也可能是我喜歡的即使我沒點,這種潛在的屬性挖掘用Listwise更合理

Pointwise、Pairwise、Listwise的訓練模式的不同主要會影響訓練中使用的Metrics評價方法,也就是DCG、NDCG等,這裡就不展開說。

TF-LTR Architecture工程框架

大部分同學可能還是偏應用層,所以廢話不多,直接介紹TF-LTR的框架。

TF裡面LTR框架把整個排序流程分為Training和Serving兩個部分,其中包含input_fn、transform_fn、scoring_fn、ranking head這幾個大的模塊,下面就分別介紹下。

1.input_fn

input_fn是一個數據IO的框架,這個框架可以從存儲空間拉取數據,也可以從進程中直接讀取。兼容了Libsvm、tf.sequence等數據格式,也可以自定義。

有一個定義挺有意思的,他把per item feature定義叫做3-D tensor,就是這樣的三元組(queries,items,feature)。context feature定義叫做2-D tensor,是個二元組(queries,feature)。PS:這個可以用到以後寫架構PPT裡面,看上去很專業的樣子。

2.transform_fn

這一步驟做的是特徵轉換,把sparse feature轉換成dense feature。總之,特徵embedding就得了,想辦法把特徵給embedding了。

3.scoring_fn

定義打分規則,在training和predicting的過程中用這個函數進行打分。官方給的例子挺奇怪,為啥打分函數要這麼複雜--

4.ranking模塊

首先要定義ranking loss和ranking metric,這也是模型訓練的最基本流程,按照Pointwise、Pairwise、Listwise的不同模式在這裡配置metric函數就好了。

ranking模塊的輸入是scoring_fn的分數以及真實的客戶行為label,根據這兩個反饋計算loss,根據metric不斷迭代模型,最終實現收斂。

總結一下

TensorFlow在向業務層不斷貢獻各種開源庫,把整個人工智慧應用領域的門檻降低,這是個挺好的現象,後續如果做推薦或者文章檢索可以考慮使用TF-LTR庫試試。

相關焦點

  • 谷歌開源 TF-Ranking:專用於排序學習的可擴展 TensorFlow 庫
    雷鋒網 AI 科技評論按:日前,谷歌 AI 發布了最新成果 TF-Ranking,它是一個專門針對排序學習(learning-to-rank)應用的可擴展 TensorFlow 庫。TF-Ranking 快速且易用,並能創建高質量的排序模型,對構建 web 搜索或新聞推薦等基於真實世界數據的排序系統感興趣的人,都可以將 TF-Ranking 作為強穩的、可擴展的解決方案。
  • 谷歌推出TF-Ranking:用於排序算法的可擴展TensorFlow庫
    它提供了一個統一的框架,其中包括一套最先進的Learning to Rank算法,並支持成對或列表丟失函數,多項目評分,排名度量優化等等。  排序,是一種適用於搜尋引擎、系統推薦以及機器翻譯等的重要操作。  在諸如此類的應用程式中,研究人員經常使用一組名叫Learning to Rank的有監督機器學習技術。
  • 京東電商推薦系統實踐
    但是,現在絕大多數推薦系統都不會直接使用協同過濾來做推薦。目前主要用的是 learning to rank 框架。這裡,是推薦系統的框架,整個推薦系統可以分為兩部分,主要模塊有召回、排序和對結果的調整。離線部分主要是對用戶日誌的數據分析,應用於線上。整個推薦系統大概就是這樣的一個框架。
  • Google AI地標檢索識別競賽雙料獲勝方案|飛槳PaddlePaddle開源
    此外,比賽過程中還基於 Npairs Loss[9],以及將 index 集合的 80 萬張圖像聚類後加入訓練,學習更多種不同維度的特徵,提升整個系統的泛化能力。所有訓練檢索特徵的代碼也已經在飛槳的 Github 度量學習項目中開源 [10]。
  • 開源公司黃頁之 Google 開源軟體推薦
    開源中國社區目前收錄了Google 259 款開源軟體,詳見:http://www.oschina.net/project/google與iPhone相似,Android採用WebKit瀏覽器引擎,具備觸控螢幕、高級圖形顯示和上網功能,用戶能夠在手機上查看電子郵件、搜索網址和觀看視頻節目等,比iPhone等其他手機更強調搜索功能,界面更強大,可以說是一種融入全部Web應用的單一平臺,下圖是 Android 手機平臺開發工具包說提供的模擬器界面截圖:
  • RankNet 信息檢索排序算法
    排序算法是信息檢索裡面很重要的一環,例如用戶提交了一個查詢 q,搜尋引擎會返回很多相關的文檔,然後需要採用排序算法根據文檔與 q 的相關性對文檔進行排序。可以採用機器學習的方法解決排序的問題,稱為 Learning To Rank (LTR) 。
  • 一窺谷歌神經機器翻譯模型真面貌,其底層框架開源!
    現在,它已經用於谷歌翻譯的產品系統。雖然消費者感受到的提升並不十分明顯,谷歌宣稱,GNMT 對翻譯質量帶來了巨大飛躍。但谷歌想做的顯然不止於此。其在官方博客表示:「由於外部研究人員無法獲取訓練這些模型的框架,GNMT 的影響力受到了束縛。」如何把該技術的影響力最大化?答案只有一個——開源。
  • 谷歌發布「與書對話」檢索引擎,從字裡行間邂逅心儀書籍
    地址:https://research.google.com/semanticexperiences/雷鋒網了解到,谷歌還發布了「通用語句編碼器」(Universal Sentence Encoder),更加詳細地呈現了上述示例所使用的模型;當然,谷歌還為開源社區提供了一個預訓練的 TensorFlow 模型,開發者可以測試自己的句子及短語編碼。
  • 4款基於Django框架的開源軟體推薦
    Django是一款高性能的Python web框架,鼓勵快速開發和乾淨、務實的設計。Django項目是一個定製框架,它源自一個在線新聞Web站點,於2005年以開源的形式被釋放出來。Django的重點是儘可能地自動化,堅持DRY原則。
  • 4 款基於 Django 框架的開源軟體推薦
    Django 項目是一個定製框架,它源自一個在線新聞 Web 站點,於 2005 年以開源的形式被釋放出來。Django的重點是儘可能地自動化,堅持DRY原則。 下面介紹4款基於Django 框架的開源項目: 1、CMS 建站系統 Django-Cms
  • 優必選獲TRECVID 2017 VTT matching and ranking任務冠軍
    數據顯示,人們在視頻上花費的時間是圖片的 2.6 倍,因此視頻領域的研究具有巨大的研究意義和應用價值。與圖像相比,視頻擁有更加豐富的信息,該領域的研究也更富挑戰性。今年,優必選雪梨 AI 研究院組隊參加了 TRECVID 2017 視頻到句子匹配和排序的任務(VTT matching and ranking)。
  • 自動生成代碼:TensorFlow工具TF-Coder開源
    最近,谷歌 TensorFlow 開源了一個幫助開發者寫 TensorFlow 代碼的程序合成工具 TF-Coder。google.com/github/google-research/tensorflow-coder/blob/master/TF-Coder_Colab.ipynb論文地址:https://arxiv.org/pdf/2003.09040
  • 輸入示例,自動生成代碼:TensorFlow官方工具TF-Coder已開源
    最近,谷歌 TensorFlow 開源了一個幫助開發者寫 TensorFlow 代碼的程序合成工具 TF-Coder。項目地址:https://github.com/google-research/tensorflow-coderGoogle Colab 試用地址:https://colab.research.google.com/github/google-research/tensorflow-coder/blob/master/TF-Coder_Colab.ipynb
  • 中科院研究所開源深度文本匹配開源工具MatchZoo
    【PConline資訊】消息,中國科學院計算技術研究所網絡數據科學與技術重點實驗室近日發布了深度文本匹配開源項目MatchZoo。MatchZoo是一個Python環境下基於TensorFlow開發的開源文本匹配工具,可以應用於文本檢索、自動問答、複述問題、對話系統等多種應用任務場景。
  • 中科院計算所開源深度文本匹配開源工具 MatchZoo
    via GitHub雷鋒網 AI 科技評論消息,中國科學院計算技術研究所網絡數據科學與技術重點實驗室近日發布了深度文本匹配開源項目 MatchZoo。MatchZoo 是一個 Python 環境下基於 TensorFlow 開發的開源文本匹配工具,可以應用於文本檢索、自動問答、複述問題、對話系統等多種應用任務場景。
  • 擁有10 億月活躍用戶的 Instagram 是怎麼設計內容推薦系統的?
    雷鋒網(公眾號:雷鋒網) AI 開發者按:近日,擁有 10 億月活用戶的 Instagram 分享了其內容推薦系統的關鍵內容,包括:Explore 基礎構建模塊的開發、元語言 IGQL工具、Explore 系統框架等。據官方數據,超過一半的用戶每月都會通過 Instagram Explore 來搜索視頻、圖片、直播和各種文章。
  • 極鏈科技兩次奪冠Google AI地標識別大賽,識別檢索技術再進階
    今年,谷歌又發布了一個全新的、更大的地標數據集google-landmarks-v2。這是一個全新的、甚至更大的地標識別數據集,該數據集中包含了413萬張圖片,是去年的3倍以上,地標數量更是達到20萬種不同的地標。這些地標包括德國新天鵝堡、美國金門大橋、日本清水寺、吉薩大獅身人面像、馬丘比丘等。
  • Google 開源 AdaNet:快速靈活的輕量級 AutoML 框架
    開源了輕量級 AutoML 框架—— AdaNet,該框架基於 TensorFlow,只需要少量的專家幹預便能自動學習高質量模型,在提供學習保證(learning guarantee)的同時也能保持快速、靈活。
  • 智能重排序在推薦場景中的應用
    ,個性化推薦基於用戶歷史行為,構建數學模型,猜測用戶興趣偏好,為用戶提供個性化的信息推薦;第三種方式是用戶通過產品提供的篩選、列表等模塊自己逐個找尋、檢索自己需要的信息。首先,我們可以將智能重排序看成是對已經召回的內容(即需要智能重排的標的物列表)的排序,從這個角度看,智能重排序就等價於推薦系統的排序模塊。其次,我們可以將智能重排序看成限定範圍的推薦,我們將推薦內容限定在需要排序的列表中的標的物上,需要通過排序將列表中的標的物推薦給用戶,並且是全部推薦給用戶。不管是上面哪一個角度看智能重排序,它都可以看成是推薦系統的一種特例。
  • 輸入示例,自動生成代碼:TensorFlow官方工具TF-Coder已開源
    最近,谷歌 TensorFlow 開源了一個幫助開發者寫 TensorFlow 代碼的程序合成工具 TF-Coder。google.com/github/google-research/tensorflow-coder/blob/master/TF-Coder_Colab.ipynb論文地址:https://arxiv.org/pdf/2003.09040.pdf