9 月,我們開源了 TensorFlow Recommenders,這個庫能夠幫助您輕松構建最先進的推薦系統模型。現在,我們高興地宣布 TensorFlow Recommenders (TFRS) 的新版本 v0.3.0。
v0.3.0
https://github.com/tensorflow/recommenders/releases/tag/v0.3.0
新版本引入了兩項重要功能,二者對于構建和部署高質量、可擴展的推薦模型至關重要。
第一項新增功能是對快速可擴展近似檢索提供內置支持。通過利用 ScaNN,TFRS 現已能夠構建在數毫秒內即可從數以百萬計的條目中檢索出最佳候選條目的深度學習推薦模型,同時又保留了部署單個“輸入查詢特征即可輸出建議”的 SavedModel 對象的便利性。
第二項新增功能是支持用于特征交互建模的更出色技術。新版本 TFRS 包含了 Deep & Cross Network 的實現:一種高效架構,用于學習深度學習推薦模型中使用的所有不同特征之間的交互。
Deep & Cross Network
https://arxiv.org/pdf/2008.13535.pdf
如果您迫切希望嘗試新增功能,可以直接前往我們的高效檢索和特征交互建模教程。或繼續閱讀以了解詳情!
[教程] 高效檢索
https://tensorflow.google.cn/recommenders/examples/efficient_serving
[教程] 特征交互建模
https://tensorflow.google.cn/recommenders/examples/dcn
高效檢索(粗排)
許多推薦系統的目標都是要從數百萬或數千萬的候選條目中檢索出少量的優質推薦。推薦系統的粗排階段將解決“大海撈針”式的問題,從整個候選列表中獲取一份簡短且有價值的候選列表。
正如我們在之前的文章中所討論的那樣,TensorFlow Recommenders 使構建雙塔檢索模型變得更加方便。此類模型執行檢索分為兩個步驟:
將用戶輸入映射到嵌入向量
在嵌入向量空間內尋找最佳候選條目
雙塔檢索模型
https://research.google/pubs/pub48840/
第一步的計算成本很大程度上取決于查詢塔模型的復雜性。例如,如果用戶輸入為文本,那么使用 8 層轉換器的查詢塔的計算成本大約是使用 4 層轉換器的查詢塔的兩倍。稀疏、量化和架構優化等技術都有助于降低這一計算成本。
架構優化
https://arxiv.org/abs/1905.11946
但是,對于具有數百萬個候選條目的大型數據庫而言,第二步通常對于實現快速推斷更為重要。我們的雙塔模型使用用戶輸入和候選嵌入向量的點積來計算候選條目相關性,盡管點積的計算成本相對較低,但需要針對數據庫中的每個嵌入向量各計算一次,計算量會隨數據庫的大小呈線性增長,因此很快便會喪失計算可行性。因此,快速最近鄰搜索 (NNS) 算法對于提高推薦系統的性能而言至關重要。
這正是 ScaNN 的價值所在。ScaNN 是由 Google Research 提供的最先進 NNS 庫。它明顯優于其他標準水平的 NNS 庫。此外,它可與 TensorFlow Recommenders 無縫集成。如下所示,ScaNNKeras 層可無縫取代暴力檢索粗排:
ScaNN https://tensorflow.google.cn/recommenders/api_docs/python/tfrs/layers/factorized_top_k/ScaNN
由于是 Keras 層,因此 ScaNN 索引會序列化并自動與 TensorFlow Recommenders 模型的其余部分保持同步。另外,也不需要在模型和 ScaNN 之間來回傳送請求,因為所有內容都已搭配好。隨著 NNS 算法的改進,ScaNN 的效率只會不斷提高并進一步優化檢索準確率和延遲。
ScaNN 可以將大型檢索模型提速 10 倍以上,同時仍能提供與暴力矢量檢索幾乎相同的檢索準確率
我們相信,ScaNN 的功能將在部署最先進的深度檢索模型方面帶來巨大的變革,使其更為便利。如果您有興趣深入了解如何構建和應用基于 ScaNN 的模型,請查看我們的教程。
教程 https://tensorflow.google.cn/recommenders/examples/efficient_serving
Deep & Cross Network
對于許多預測模型而言,有效的特征交叉都是成功的關鍵。設想我們正在構建一個基于用戶過往購買歷史記錄來銷售攪拌機的推薦系統。諸如香蕉和食譜購買數量一類的單個特征能夠為我們提供一些與用戶意愿有關的信息,但將同時購買了香蕉和食譜這兩項特征相結合,我們就得到了一個極為強烈的信號,表明用戶可能想要購買攪拌機。特征的這種組合即稱為特征交叉。
在大規模互聯網應用中,數據大多是類別型的,這導致特征空間龐大而稀疏。要在這種背景下確定有效的特征交叉,通常需要進行人工特征工程或窮舉搜索。傳統的前饋多層感知器 (MLP) 模型是通用的函數逼近器。但是,正如 Deep & Cross Network 和 Latent Cross 兩篇論文中指出的那樣,它們甚至無法有效地逼近二階或三階特征交叉。
Deep & Cross Network https://arxiv.org/pdf/2008.13535.pdf
Latent Cross https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/18fa88ad519f25dc4860567e19ab00beff3f01cb.pdf
什么是 Deep & Cross Network (DCN)?
DCN 旨在幫助更加有效地學習顯式和有限階交叉特征。它們始于輸入層(通常是嵌入向量層),然后是對顯式特征交互建模的交叉網絡,最后是對隱式特征交互建模的深度網絡。
交叉網絡
這是 DCN 的核心。它會在每個層上顯式應用特征交叉,最高多項式次數(特征交叉階數)隨著層深度的增加而提高。下圖顯示了第 (i+1) 個交叉層。
交叉層呈現效果。x0 為基礎層(通常設置為嵌入向量層),xi 為交叉層的輸入,☉ 表示逐元素相乘,矩陣 W 和向量 b 為要學習的參數
只有一個交叉層時,將在輸入特征之間創建二階(成對)特征交叉。在上文的攪拌機示例中,交叉層的輸入將為串聯三項特征的向量:[country, purchased_bananas, purchased_cookbooks]。然后,輸出的第一維將包含國家/地區與所有三項輸入特征之間成對交互的加權和,第二維將包含 purchased_bananas與其他所有特征的加權交互,以此類推。
這些交互項的權重構成了矩陣 W:如果交互重要性低,則其權重將接近于零;如果重要性高,則將遠離零。
要創建更高階的特征交叉,我們可以堆疊更多的交叉層。例如,我們現在知道單個交叉層會輸出二階特征交叉,例如 purchased_bananas 與 purchased_cookbook 之間的交互。我們可以將這些二階交叉進一步傳遞至另一個交叉層。然后,特征交叉部分會將那些二階交叉與原始(一階)特征相乘,從而創建三階特征交叉,例如,國家/地區、purchased_bananas和 purchased_cookbooks 之間的交互。剩余連接將繼續作用于在上一層中已經創建的那些特征交叉。
如果我們將 k個交叉層堆疊在一起,那么 k 層交叉網絡將創建高達 k+1 階的所有特征交叉,其重要性由權重矩陣和偏差向量中的參數來表征。
深度網絡
Deep & Cross Network 中的深度網絡部分是傳統的前饋多層感知器 (MLP)。
然后,將深度網絡和交叉網絡進行組合便構成了 DCN。通常,我們可以在交叉網絡頂部堆疊深度網絡(堆疊結構);我們也可以將其并行放置(并行結構)。
Deep & Cross Network (DCN) 呈現效果。左:并行結構;右:堆疊結構
DCN https://arxiv.org/pdf/2008.13535.pdf
模型理解
充分理解學習的特征交叉有助于提高模型的可理解性。幸運的是,交叉層中的權重矩陣揭示了模型所學特征交叉的重要性水平。
以向客戶銷售攪拌機為例。如果同時購買了香蕉和食譜是數據中最具預測性的信號,則 DCN 模型應能捕獲這種關系。下圖展示了包含一個交叉層的 DCN 模型的學習矩陣,該模型基于合成數據訓練,其中聯合購買特征的重要性最高。我們看到,在沒有應用任何人工特征工程的情況下,模型自身已經學習“purchased_bananas”和“purchased_cookbooks”之間的交互具有很高的重要性。
交叉層中學習的權重矩陣
TensorFlow Recommenders 中現已實現交叉層,您可以輕松地將其用作模型的構建塊。要了解操作方法,請查看我們的教程以獲取示例用法和實際課程。如果您有興趣深入了解更多內容,請參閱我們的研究論文 DCN 和 DCN v2。
實現交叉層 https://tensorflow.google.cn/recommenders/api_docs/python/tfrs/layers/dcn/Cross
教程 https://tensorflow.google.cn/recommenders/examples/dcn
DCN https://arxiv.org/pdf/1708.05123.pdf
DCN v2 https://arxiv.org/pdf/2008.13535.pdf
致謝
我們要特別感謝 Derek Zhiyuan Cheng、Sagar Jain、Shirley Zhe Chen、Dong Lin、Lichan Hong、Ed H. Chi、Bin Fu、Gang (Thomas) Fu 和 Mingliang Wang 對 Deep & Cross Network (DCN) 所做的重要貢獻。我們還要感謝在從研究構想到生產化的各個環節中,
為 DCN 工作提供幫助和支持的所有人士:Shawn Andrews、Sugato Basu、Jakob Bauer、Nick Bridle、Gianni Campion、Jilin Chen、Ting Chen、James Chen、Tianshuo Deng、Evan Ettinger、Eu-Jin Goh、Vidur Goyal、Julian Grady、Gary Holt、Samuel Ieong、Asif Islam、Tom Jablin、Jarrod Kahn、Duo Li、Yang Li、Albert Liang、Wenjing Ma、Aniruddh Nath、Todd Phillips、Ardian Poernomo、Kevin Regan、Olcay Sertel、Anusha Sriraman、Myles Sussman、Zhenyu Tan、Jiaxi Tang、Yayang Tian、Jason Trader、Tatiana Veremeenko、Jingjing Wang、Li Wei、Cliff Young、Shuying Zhang、Jie (Jerry) Zhang、Jinyin Zhang、Zhe Zhao 以及更多參與人士(按字母順序排序)。
我們還要感謝 David Simcha、Erik Lindgren、Felix Chern、Nathan Cordeiro、Ruiqi Guo、Sanjiv Kumar、Sebastian Claici 和 Zonglin Li 對 ScaNN 所做的貢獻。
責任編輯:xj
原文標題:TensorFlow Recommenders 迎來更新 — 可擴展檢索和特征交互建模
文章出處:【微信公眾號:TensorFlow】歡迎添加關注!文章轉載請注明出處。
-
建模
+關注
關注
1文章
309瀏覽量
60788 -
交互
+關注
關注
1文章
69瀏覽量
14806 -
深度學習
+關注
關注
73文章
5507瀏覽量
121272 -
tensorflow
+關注
關注
13文章
329瀏覽量
60540
原文標題:TensorFlow Recommenders 迎來更新 — 可擴展檢索和特征交互建模
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論