9 月,我們開源了 TensorFlow Recommenders,這個庫能夠幫助您輕松構(gòu)建最先進的推薦系統(tǒng)模型。現(xiàn)在,我們高興地宣布 TensorFlow Recommenders (TFRS) 的新版本 v0.3.0。
v0.3.0
https://github.com/tensorflow/recommenders/releases/tag/v0.3.0
新版本引入了兩項重要功能,二者對于構(gòu)建和部署高質(zhì)量、可擴展的推薦模型至關(guān)重要。
第一項新增功能是對快速可擴展近似檢索提供內(nèi)置支持。通過利用 ScaNN,TFRS 現(xiàn)已能夠構(gòu)建在數(shù)毫秒內(nèi)即可從數(shù)以百萬計的條目中檢索出最佳候選條目的深度學(xué)習(xí)推薦模型,同時又保留了部署單個“輸入查詢特征即可輸出建議”的 SavedModel 對象的便利性。
第二項新增功能是支持用于特征交互建模的更出色技術(shù)。新版本 TFRS 包含了 Deep & Cross Network 的實現(xiàn):一種高效架構(gòu),用于學(xué)習(xí)深度學(xué)習(xí)推薦模型中使用的所有不同特征之間的交互。
Deep & Cross Network
https://arxiv.org/pdf/2008.13535.pdf
如果您迫切希望嘗試新增功能,可以直接前往我們的高效檢索和特征交互建模教程?;蚶^續(xù)閱讀以了解詳情!
[教程] 高效檢索
https://tensorflow.google.cn/recommenders/examples/efficient_serving
[教程] 特征交互建模
https://tensorflow.google.cn/recommenders/examples/dcn
高效檢索(粗排)
許多推薦系統(tǒng)的目標(biāo)都是要從數(shù)百萬或數(shù)千萬的候選條目中檢索出少量的優(yōu)質(zhì)推薦。推薦系統(tǒng)的粗排階段將解決“大海撈針”式的問題,從整個候選列表中獲取一份簡短且有價值的候選列表。
正如我們在之前的文章中所討論的那樣,TensorFlow Recommenders 使構(gòu)建雙塔檢索模型變得更加方便。此類模型執(zhí)行檢索分為兩個步驟:
將用戶輸入映射到嵌入向量
在嵌入向量空間內(nèi)尋找最佳候選條目
雙塔檢索模型
https://research.google/pubs/pub48840/
第一步的計算成本很大程度上取決于查詢塔模型的復(fù)雜性。例如,如果用戶輸入為文本,那么使用 8 層轉(zhuǎn)換器的查詢塔的計算成本大約是使用 4 層轉(zhuǎn)換器的查詢塔的兩倍。稀疏、量化和架構(gòu)優(yōu)化等技術(shù)都有助于降低這一計算成本。
架構(gòu)優(yōu)化
https://arxiv.org/abs/1905.11946
但是,對于具有數(shù)百萬個候選條目的大型數(shù)據(jù)庫而言,第二步通常對于實現(xiàn)快速推斷更為重要。我們的雙塔模型使用用戶輸入和候選嵌入向量的點積來計算候選條目相關(guān)性,盡管點積的計算成本相對較低,但需要針對數(shù)據(jù)庫中的每個嵌入向量各計算一次,計算量會隨數(shù)據(jù)庫的大小呈線性增長,因此很快便會喪失計算可行性。因此,快速最近鄰搜索 (NNS) 算法對于提高推薦系統(tǒng)的性能而言至關(guān)重要。
這正是 ScaNN 的價值所在。ScaNN 是由 Google Research 提供的最先進 NNS 庫。它明顯優(yōu)于其他標(biāo)準(zhǔn)水平的 NNS 庫。此外,它可與 TensorFlow Recommenders 無縫集成。如下所示,ScaNNKeras 層可無縫取代暴力檢索粗排:
ScaNN https://tensorflow.google.cn/recommenders/api_docs/python/tfrs/layers/factorized_top_k/ScaNN
由于是 Keras 層,因此 ScaNN 索引會序列化并自動與 TensorFlow Recommenders 模型的其余部分保持同步。另外,也不需要在模型和 ScaNN 之間來回傳送請求,因為所有內(nèi)容都已搭配好。隨著 NNS 算法的改進,ScaNN 的效率只會不斷提高并進一步優(yōu)化檢索準(zhǔn)確率和延遲。
ScaNN 可以將大型檢索模型提速 10 倍以上,同時仍能提供與暴力矢量檢索幾乎相同的檢索準(zhǔn)確率
我們相信,ScaNN 的功能將在部署最先進的深度檢索模型方面帶來巨大的變革,使其更為便利。如果您有興趣深入了解如何構(gòu)建和應(yīng)用基于 ScaNN 的模型,請查看我們的教程。
教程 https://tensorflow.google.cn/recommenders/examples/efficient_serving
Deep & Cross Network
對于許多預(yù)測模型而言,有效的特征交叉都是成功的關(guān)鍵。設(shè)想我們正在構(gòu)建一個基于用戶過往購買歷史記錄來銷售攪拌機的推薦系統(tǒng)。諸如香蕉和食譜購買數(shù)量一類的單個特征能夠為我們提供一些與用戶意愿有關(guān)的信息,但將同時購買了香蕉和食譜這兩項特征相結(jié)合,我們就得到了一個極為強烈的信號,表明用戶可能想要購買攪拌機。特征的這種組合即稱為特征交叉。
在大規(guī)?;ヂ?lián)網(wǎng)應(yīng)用中,數(shù)據(jù)大多是類別型的,這導(dǎo)致特征空間龐大而稀疏。要在這種背景下確定有效的特征交叉,通常需要進行人工特征工程或窮舉搜索。傳統(tǒng)的前饋多層感知器 (MLP) 模型是通用的函數(shù)逼近器。但是,正如 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 旨在幫助更加有效地學(xué)習(xí)顯式和有限階交叉特征。它們始于輸入層(通常是嵌入向量層),然后是對顯式特征交互建模的交叉網(wǎng)絡(luò),最后是對隱式特征交互建模的深度網(wǎng)絡(luò)。
交叉網(wǎng)絡(luò)
這是 DCN 的核心。它會在每個層上顯式應(yīng)用特征交叉,最高多項式次數(shù)(特征交叉階數(shù))隨著層深度的增加而提高。下圖顯示了第 (i+1) 個交叉層。
交叉層呈現(xiàn)效果。x0 為基礎(chǔ)層(通常設(shè)置為嵌入向量層),xi 為交叉層的輸入,☉ 表示逐元素相乘,矩陣 W 和向量 b 為要學(xué)習(xí)的參數(shù)
只有一個交叉層時,將在輸入特征之間創(chuàng)建二階(成對)特征交叉。在上文的攪拌機示例中,交叉層的輸入將為串聯(lián)三項特征的向量:[country, purchased_bananas, purchased_cookbooks]。然后,輸出的第一維將包含國家/地區(qū)與所有三項輸入特征之間成對交互的加權(quán)和,第二維將包含 purchased_bananas與其他所有特征的加權(quán)交互,以此類推。
這些交互項的權(quán)重構(gòu)成了矩陣 W:如果交互重要性低,則其權(quán)重將接近于零;如果重要性高,則將遠離零。
要創(chuàng)建更高階的特征交叉,我們可以堆疊更多的交叉層。例如,我們現(xiàn)在知道單個交叉層會輸出二階特征交叉,例如 purchased_bananas 與 purchased_cookbook 之間的交互。我們可以將這些二階交叉進一步傳遞至另一個交叉層。然后,特征交叉部分會將那些二階交叉與原始(一階)特征相乘,從而創(chuàng)建三階特征交叉,例如,國家/地區(qū)、purchased_bananas和 purchased_cookbooks 之間的交互。剩余連接將繼續(xù)作用于在上一層中已經(jīng)創(chuàng)建的那些特征交叉。
如果我們將 k個交叉層堆疊在一起,那么 k 層交叉網(wǎng)絡(luò)將創(chuàng)建高達 k+1 階的所有特征交叉,其重要性由權(quán)重矩陣和偏差向量中的參數(shù)來表征。
深度網(wǎng)絡(luò)
Deep & Cross Network 中的深度網(wǎng)絡(luò)部分是傳統(tǒng)的前饋多層感知器 (MLP)。
然后,將深度網(wǎng)絡(luò)和交叉網(wǎng)絡(luò)進行組合便構(gòu)成了 DCN。通常,我們可以在交叉網(wǎng)絡(luò)頂部堆疊深度網(wǎng)絡(luò)(堆疊結(jié)構(gòu));我們也可以將其并行放置(并行結(jié)構(gòu))。
Deep & Cross Network (DCN) 呈現(xiàn)效果。左:并行結(jié)構(gòu);右:堆疊結(jié)構(gòu)
DCN https://arxiv.org/pdf/2008.13535.pdf
模型理解
充分理解學(xué)習(xí)的特征交叉有助于提高模型的可理解性。幸運的是,交叉層中的權(quán)重矩陣揭示了模型所學(xué)特征交叉的重要性水平。
以向客戶銷售攪拌機為例。如果同時購買了香蕉和食譜是數(shù)據(jù)中最具預(yù)測性的信號,則 DCN 模型應(yīng)能捕獲這種關(guān)系。下圖展示了包含一個交叉層的 DCN 模型的學(xué)習(xí)矩陣,該模型基于合成數(shù)據(jù)訓(xùn)練,其中聯(lián)合購買特征的重要性最高。我們看到,在沒有應(yīng)用任何人工特征工程的情況下,模型自身已經(jīng)學(xué)習(xí)“purchased_bananas”和“purchased_cookbooks”之間的交互具有很高的重要性。
交叉層中學(xué)習(xí)的權(quán)重矩陣
TensorFlow Recommenders 中現(xiàn)已實現(xiàn)交叉層,您可以輕松地將其用作模型的構(gòu)建塊。要了解操作方法,請查看我們的教程以獲取示例用法和實際課程。如果您有興趣深入了解更多內(nèi)容,請參閱我們的研究論文 DCN 和 DCN v2。
實現(xiàn)交叉層 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) 所做的重要貢獻。我們還要感謝在從研究構(gòu)想到生產(chǎn)化的各個環(huán)節(jié)中,
為 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 所做的貢獻。
責(zé)任編輯:xj
原文標(biāo)題:TensorFlow Recommenders 迎來更新 — 可擴展檢索和特征交互建模
文章出處:【微信公眾號:TensorFlow】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
建模
+關(guān)注
關(guān)注
1文章
299瀏覽量
60713 -
交互
+關(guān)注
關(guān)注
1文章
67瀏覽量
14783 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5466瀏覽量
120891 -
tensorflow
+關(guān)注
關(guān)注
13文章
328瀏覽量
60474
原文標(biāo)題:TensorFlow Recommenders 迎來更新 — 可擴展檢索和特征交互建模
文章出處:【微信號:tensorflowers,微信公眾號:Tensorflowers】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論