深度學(xué)習(xí)( Deep learning , DL )是解決計算機視覺或自然語言等機器學(xué)習(xí)問題的最新方法,它的性能優(yōu)于其它方法。最近的趨勢包括將 DL 技術(shù)應(yīng)用于推薦引擎。許多大型公司,如 AirBnB 、 Facebook 、 Google 、 Home Depot 、 LinkedIn 和 Pinterest ,都分享了他們將 DL 用于推薦系統(tǒng)的經(jīng)驗。
最近, NVIDIA 和 RAPIDS 。 AI 團隊與 DL 贏得了三場比賽: VZX1 、 信號和日期挑戰(zhàn) 和 ACM WSDM2021 Booking 。 com 挑戰(zhàn)賽 。
推薦系統(tǒng)的領(lǐng)域是復(fù)雜的。在這篇文章中,我將重點介紹神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)及其組件,例如嵌入層和完全連接層、遞歸神經(jīng)網(wǎng)絡(luò)單元( LSTM 或 GRU )和變壓器塊。我討論了流行的網(wǎng)絡(luò)架構(gòu),比如 Google 的 Wide & Deep 和 Facebook 的 Deep Learning Recommender Model ( DLRM )。
DL 推薦系統(tǒng)的優(yōu)點
有許多不同的技術(shù)來設(shè)計推薦系統(tǒng),例如關(guān)聯(lián)規(guī)則、基于內(nèi)容或協(xié)同過濾、矩陣分解或訓(xùn)練線性或基于樹的模型來預(yù)測交互可能性。
使用神經(jīng)網(wǎng)絡(luò)的優(yōu)點是什么?一般來說, DL 模型可以獲得更高的精度。首先, DL 可以利用額外的數(shù)據(jù)。許多傳統(tǒng)的機器學(xué)習(xí)技術(shù)需要更多的數(shù)據(jù)。但是,當(dāng)您增加神經(jīng)網(wǎng)絡(luò)的容量時,該模型可以使用更多的數(shù)據(jù)來提高性能。
第二,神經(jīng)網(wǎng)絡(luò)的設(shè)計是靈活的。例如,您可以針對多個目標(多任務(wù)學(xué)習(xí))訓(xùn)練 DL 模型,例如“用戶是否將項目添加到購物車中?”、“使用項目開始結(jié)賬?”、或“購買項目?”。每個目標都有助于模型從數(shù)據(jù)中提取信息,并且目標可以相互支持。
其他設(shè)計方法包括向推薦模型中添加多模態(tài)數(shù)據(jù)。您可以通過使用卷積神經(jīng)網(wǎng)絡(luò)處理產(chǎn)品圖像或使用 NLP 模型處理產(chǎn)品描述來實現(xiàn)這一點。神經(jīng)網(wǎng)絡(luò)應(yīng)用于許多領(lǐng)域。您可以將新開發(fā)(如優(yōu)化器或新層)轉(zhuǎn)移到推薦系統(tǒng)。
最后, DL 框架經(jīng)過了高度優(yōu)化,可以處理各種域的數(shù) TB 到數(shù) PB 的數(shù)據(jù)。下面是如何為推薦系統(tǒng)設(shè)計神經(jīng)網(wǎng)絡(luò)。
基本構(gòu)造塊:嵌入層
嵌入層用密集向量表示類別。這種技術(shù)在自然語言處理中非常流行,可以嵌入具有密集表示的單詞。具有相似意義的詞具有相似的嵌入向量。
您可以將相同的技術(shù)應(yīng)用于推薦系統(tǒng)。最簡單的推薦系統(tǒng)是基于用戶和項目的:您應(yīng)該向用戶推薦哪些項目?您有用戶 ID 和項目 ID 。單詞是 users 和 items ,因此使用兩個嵌入表(圖 1 )。

圖 1 。嵌入維度為 4 的表
計算用戶嵌入和項目嵌入之間的點積,得到最終分數(shù),即用戶與項目交互的可能性。最后一步可以應(yīng)用 sigmoid 激活函數(shù)將輸出轉(zhuǎn)換為 0 到 1 之間的概率。

圖 2 。具有兩個嵌入表和點積輸出的神經(jīng)網(wǎng)絡(luò)
該方法等價于矩陣分解或交替最小二乘法( ALS )。
具有完全連接層的較深模型
神經(jīng)網(wǎng)絡(luò)的性能是基于具有多個非線性層的深層結(jié)構(gòu)。通過將嵌入層的輸出通過多個具有 ReLU 激活的完全連接層提供,可以擴展先前的模型。
一個設(shè)計選擇是如何組合兩個嵌入向量。您可以僅串聯(lián)嵌入向量,也可以將向量逐元素相乘,類似于點積。輸出之后是多個隱藏層。

圖 3 。具有兩個嵌入表和多個完全連接層的神經(jīng)網(wǎng)絡(luò)
向神經(jīng)網(wǎng)絡(luò)中添加元數(shù)據(jù)信息
到目前為止,您只使用了用戶 ID 和產(chǎn)品 ID 作為輸入,但是您通??梢垣@得更多的信息。其他用戶信息可以是性別、年齡、城市(地址)、自上次訪問以來的時間或用于支付的信用卡。一件商品通常有一個品牌、價格、類別或在過去 7 天內(nèi)售出的數(shù)量。這些信息有助于模型更好地推廣。修改神經(jīng)網(wǎng)絡(luò)以使用附加特征作為輸入。

圖 4 。具有元信息和多個完全連接層的神經(jīng)網(wǎng)絡(luò)
流行建筑
嵌入層和完全連接層是理解一些最新出版的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的主要組成部分。在這篇文章中,我將從 2016 年開始報道谷歌的廣度和深度,從 2019 年開始報道 Facebook 的 DLRM 。
谷歌的廣度和深度
谷歌的廣度和深度包含兩個部分:
記憶共同特征組合的寬塔
用來概括罕見或未觀察到的特征組合的深塔
創(chuàng)新之處在于,這兩個組件同時訓(xùn)練,這是可能的,因為神經(jīng)網(wǎng)絡(luò)是靈活的。深塔通過嵌入層提供分類特征,并將輸出與數(shù)字輸入特征連接起來。級聯(lián)向量通過多個完全連接的層饋送。
你聽上去熟悉嗎?是的,那是你以前的神經(jīng)網(wǎng)絡(luò)設(shè)計。新的組成部分是寬塔,它只是輸入特征的線性組合,具有類似的線性/邏輯回歸。每個塔的輸出相加,得到最終的預(yù)測值。
Facebook 的 DLRM
Facebook 的 DLRM 與帶有元數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)類似,但有一些特定的差異。數(shù)據(jù)集可以包含多個分類特征。 DLRM 要求所有的分類輸入都通過一個具有相同維數(shù)的嵌入層。稍后,我將討論這一點的重要性。
接下來,將連續(xù)的輸入串聯(lián)起來并通過稱為底部多層感知器( MLP )的多個完全連接的層饋送。底層 MLP 的最后一層具有與嵌入層向量相同的維數(shù)。
DLRM 使用了一個新的組合層。它在所有嵌入向量對和底部 MLP 輸出之間應(yīng)用按元素相乘。這就是為什么每個向量都有相同的維數(shù)。所得到的向量被串聯(lián)并饋送到另一組完全連接的層(頂部 MLP )。

圖 5 。左側(cè)顯示廣度和深度架構(gòu),右側(cè)顯示 DLRM 架構(gòu)。
基于會話的推薦系統(tǒng)
當(dāng)我為推薦系統(tǒng)分析不同的基于 DL 的體系結(jié)構(gòu)時,我假設(shè)輸入具有表格數(shù)據(jù)結(jié)構(gòu),而忽略了用戶交互的本質(zhì)。但是,用戶在訪問網(wǎng)站時,在一個會話中有多個交互。例如,他們訪問一家商店并查看多個產(chǎn)品頁面。您可以使用用戶交互序列作為輸入來提取模式嗎?
在一個會話中,用戶連續(xù)查看多條牛仔褲,您應(yīng)該推薦另一條牛仔褲。在另一個會話中,同一個用戶連續(xù)查看多雙鞋,您應(yīng)該推薦另一雙鞋。這就是基于會話的推薦系統(tǒng)背后的直覺。
謝天謝地,您可以將 NLP 中的一些技術(shù)應(yīng)用于推薦系統(tǒng)域。用戶的交互具有順序結(jié)構(gòu)。

圖 6 。基于會話的神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu)
序列可以通過使用遞歸神經(jīng)網(wǎng)絡(luò)( RNN )或基于變壓器的結(jié)構(gòu)作為序列層來處理。用嵌入向量表示項目 ID ,并通過序列層提供輸出。序列層的隱藏表示可以添加為深度學(xué)習(xí)體系結(jié)構(gòu)的輸入。
其他選擇
當(dāng)我把這篇文章的重點放在將 DL 應(yīng)用于推薦系統(tǒng)的理論上時,我沒有涉及到很多其他的挑戰(zhàn)。我在這里簡要介紹一下,以提供一個起點:
嵌入表可以超過 CPU 或 GPU 內(nèi)存。由于在線服務(wù)可能有數(shù)百萬用戶,嵌入表可以達到數(shù)兆字節(jié)。 NVIDIA 提供了 HugeCTR 框架,可以將嵌入表擴展到 CPU 或 GPU 內(nèi)存之外。
在培訓(xùn)期間最大限度地利用 GPU ?;?DL 的推薦系統(tǒng)有一個淺層的網(wǎng)絡(luò)結(jié)構(gòu),只有幾個完全連接的層。數(shù)據(jù)加載器有時是訓(xùn)練管道中的瓶頸。為了抵消這一點, NVIDIA 為 PyTorch 和 TensorFlow 開發(fā)了一個 高度優(yōu)化的 GPU 數(shù)據(jù)加載器 。
生成建議需要對用戶項對進行評分。最壞的情況是預(yù)測所有可用產(chǎn)品的可能性,并選擇最佳產(chǎn)品。在實踐中,這是不可行的,候選人產(chǎn)生了一個低開銷的模型,如近似近鄰。
概括
這篇文章向您介紹了基于 DL 的推薦系統(tǒng)。我首先介紹了基于兩個輸入的基本矩陣分解,然后介紹了使用 transformer 層的最新基于會話的體系結(jié)構(gòu)。
您可以使用遞歸神經(jīng)網(wǎng)絡(luò)( RNN )或基于轉(zhuǎn)換器的體系結(jié)構(gòu)作為序列層來處理序列。用嵌入向量表示項目 ID ,并通過序列層提供輸出。添加序列層的隱藏表示作為 DL 架構(gòu)的輸入。
關(guān)于作者
Benedikt Schifferer 是 NVIDIA 的深度學(xué)習(xí)工程師,致力于推薦系統(tǒng)。在他在 NVIDIA 的工作之前,他畢業(yè)于紐約哥倫比亞大學(xué)的數(shù)據(jù)科學(xué)碩士,并為德國電子商務(wù)公司開發(fā)了推薦系統(tǒng)。
審核編輯:郭婷
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5717瀏覽量
110196 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5613瀏覽量
124706
發(fā)布評論請先 登錄
基于神經(jīng)網(wǎng)絡(luò)的負載機械速度估計器實現(xiàn)方案
為什么 VisionFive V1 板上的 JH7100 中并存 NVDLA 引擎和神經(jīng)網(wǎng)絡(luò)引擎?
神經(jīng)網(wǎng)絡(luò)的初步認識
CNN卷積神經(jīng)網(wǎng)絡(luò)設(shè)計原理及在MCU200T上仿真測試
NMSIS神經(jīng)網(wǎng)絡(luò)庫使用介紹
如何將訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型部署到蜂鳥e203開發(fā)板上
在Ubuntu20.04系統(tǒng)中訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型的一些經(jīng)驗
CICC2033神經(jīng)網(wǎng)絡(luò)部署相關(guān)操作
液態(tài)神經(jīng)網(wǎng)絡(luò)(LNN):時間連續(xù)性與動態(tài)適應(yīng)性的神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)的并行計算與加速技術(shù)
基于神經(jīng)網(wǎng)絡(luò)的數(shù)字預(yù)失真模型解決方案
無刷電機小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測方法的研究
神經(jīng)網(wǎng)絡(luò)專家系統(tǒng)在電機故障診斷中的應(yīng)用
神經(jīng)網(wǎng)絡(luò)RAS在異步電機轉(zhuǎn)速估計中的仿真研究
基于FPGA搭建神經(jīng)網(wǎng)絡(luò)的步驟解析
如何將神經(jīng)網(wǎng)絡(luò)用于推薦系統(tǒng)應(yīng)用
評論