當前位置:
首頁 > 知識 > 深度學習在推薦系統上的應用

深度學習在推薦系統上的應用

本文作者陳仲銘,知乎 ID:ZOMI,AI 研習社獲其授權轉載。

深度學習最近大紅大紫,深度學習的爆發使得人工智慧進一步發展,阿里、騰訊、百度先後建立了自己的AI Labs,就連傳統的廠商OPPO、VIVO都在今年開始籌備建立自己的人工智慧研究所。

確實深度學習很火,近期深度學習的戰火燒到推薦系統,其強大的表徵能力和低准入門檻,已經成為各大高校和中國人改網路發paper的紅利時代。可是我還沒能發上那麼幾篇,之前面試大廠的AI labs被總監虐,感覺工作之後被壓榨太多,快乾了。


推薦系統為什麼引入深度學習?

為什麼我們會想到使用深度學習去處理推薦系統裡面的事情呢,推薦系統從基於內容的推薦,到協同過濾的推薦,協同過濾的推薦在整個推薦演算法領域裡獨領風騷了多年,從基本的基於用戶的協同過濾,基於item的協同過濾,到基於model的協同過濾等眾多演算法的延伸。或許深度學習在推薦系統裡面沒有像圖像處理演算法那樣一枝獨秀,但是深度學習對於推薦系統的幫助確實起到了,推波助瀾的功效。下面我們可以來看一下推薦系統使用深度學習的原因。

能夠直接從內容中提取特徵,表徵能力強

容易對雜訊數據進行處理,抗噪能量強

可以使用RNN循環神經網路對動態或者序列數據進行建模

可以更加準確的學習user和item的特徵

深度學習便於對負責數據進行統一處理


深度推薦系統

實際上深度學習在自然語言處理,圖像處理,圖像識別等領域迅猛發展的近4年來,深度學習在其他領域,例如強化學習,推薦系統也得到快速的發展。下面我們來看一下深度學習在推薦系統當中的一些應用,其主要分為5大類別,下面我們會重點介紹4個類別,分別是:

Learning item embeddings

Deep Collaborative filtering 深度協同過濾

Feature extraction directly from content 從內容中提取特徵

Session-based recommendation with RNN 使用RNN從會話中推薦

hybird combination algorithm 混合基於深度學習的推薦系統

1. Learning item embeddings & 2VEC models

Embedding 其實就是從輸入數據中學習到另外一組向量值的過程,通過另外一組向量去表達原來實際的向量。

在推薦系統裡面我們經常會使用基於矩陣分解的協同過濾的方法,去得到Latent feature vector,也就是潛在特徵向量。

這麼一說可能會比較含糊,embedding到底對推薦系統來說有什麼用,其實1)在更加高級的演算法那中對item進行表徵。2)能夠用於item to item的推薦演算法。

1.1 Embedding as MF

在推薦系統中我們現在常用的方法有矩陣分解 Matrix Factorization,MF。而矩陣分解實際上就是學習user & item的embedding向量。

學習相似特徵

我們可以通過深度學習去矩陣分解演算法中相類似的特徵向量。其中包括items vector, user vector, 用戶偏好向量。

MF可以看做一個簡單的神經網路

為什麼這麼說呢,其實我們可以這麼來看,矩陣分解之於神經網路。輸入是一個one-hot編碼的用戶id,對於數據的隱層權重向量來說是代表用戶特徵矩陣。對於隱層則可以是代表用戶特徵向量 user feature vector,對於隱層的輸出權重向量來說代表item特徵矩陣, Item feature maxtrix。最後該神經網路的輸出則是用戶對於該item的偏好。

1.2 Word2Vec

word2vec 對於做自然語言處理的人們來說,自然熟悉不過了。我覺得自己好多廢話,word2vec顧名思義就是把單詞編碼成向量,例如單詞 "拉稀" 編碼成 [0.4442, 0.11345]。

Word2Vec是從大量文本語料中以無監督的方式學習語義知識的一種模型,它被大量地用在自然語言處理(NLP)中。那麼它是如何幫助我們做自然語言處理呢?Word2Vec其實就是通過學習文本來用詞向量的方式表徵詞的語義信息,即通過一個嵌入空間使得語義上相似的單詞在該空間內距離很近。Embedding其實就是一個映射,將單詞從原先所屬的空間映射到新的多維空間中,也就是把原先詞所在空間嵌入到一個新的空間中去。

Word2Vec模型中,主要有Skip-Gram和Continous Bag of Words (CBOW)兩種模型,從直觀上理解,Skip-Gram是給定input word來預測上下文。而CBOW是給定上下文,來預測input word。

Word2Vec-Continous Bag of Words (CBOW)

Continous Bag of Words 連續詞包的目標是使得給定上下文的目標詞概率最大化。對於這樣的深度學習模型來說,輸入是經過one-hot編碼的向量;經過神經網路的第一層E處,是對單詞one-hot向量的embedding操作;對於中間隱層,是上下文的壓縮編碼特徵;經過softmax轉變後得到給定語料單詞的最大似然估計。

上面就是word2vec的一個簡單過程,經過上面過程我們可以對單詞進行編碼,然後對所有單詞進行匯總求和分類,得到最後的語料向量。

Word2Vec-skip gram

skip-gram與CBOW相比,只有細微的不同。skip-gram的輸入是當前詞的詞向量,而輸出是周圍詞的詞向量。也就是說,通過當前詞來預測周圍的詞。

其中word2Vec部分與CBOW相同,但是根據論文和實踐證明,skip-gram的方式得到的準確率會更高。表徵能力也更強。

1.3 xxx2vec

當然,最常用的是上面2中,但是不乏近年來又衍生了更多的2vec變種,例如有的利用段落信息,有的利用整個文本的信息,有的則是在更高維度的item上進行2vec操作。下面我們一起來看看更多的衍生演算法,至於說哪個演算法哪個實現方式更好?筆者覺得應該尊重原數據,建立在理解業務的基礎上進行操作,例如對於短視頻的推薦與對於電影的推薦是不同,短視頻有其特別的屬性,例如搞笑、時間短、標題黨等諸多屬性需要去做去噪等工作。

其中有Paragraph2vec基於CBOW,把段落的ID作為屬性也納入計算當中。

不過我們也可以像Content2Vec或者meta-prod2vec那樣組合更多的特徵進行處理,在這裡以後再也不要說深度學習不需要特徵工程時間了,深度學習的表徵能力很好,但是工程師們仍然需要耗費大量的時間在選擇特徵這一件事情上,不懂特徵工程的機器學習工程師不是好的機器學習工程師。


2.Deep Collaborative Filtering, DCL

深度協同過濾,一聽名字就覺得逆天炸地。

2.1 Auto-encoders

Model-based方法的目的就是學習到User的隱向量矩陣U與Item的隱向量矩陣V。我們可以通過深度學習來學習這些抽象表示的隱向量。

Autoencoder(AE)是一個無監督學習模型,它利用反向傳播演算法,讓模型的輸出等於輸入。Autoencoder利用AE來預測用戶對物品missing的評分值,該模型的輸入為評分矩陣R中的一行(User-based)或者一列(Item-based),其目標函數通過計算輸入與輸出的損失來優化模型,而R中missing的評分值通過模型的輸出來預測,進而為用戶做推薦。

原論文的思路如下所示,對於autoencoders是一個自動編解碼器,對於同源編解碼器的訓練學習過程中,我們的輸入等於輸出,中間編碼向量作為特徵向量。

該神經網路設計的編解碼器一般只有3層,編碼層(輸入層),隱層,解碼層(輸出層)。

stacked denoising autoencoders

自從Autoencoders出現之後,確實是個好思想,但是後面我們迎來了DCL的黃金時代,確實DCL這篇文章首次提出讓深度學習與協同過濾相結合,效果在開源數據集中取得了一點點上升,即使是一點點上升,但也是很重要的,因為把深度學習與協同過濾有機地集合了在一起。

Denoising Autoencoder(DAE)是在AE的基礎之上,對輸入的訓練數據加入雜訊。所以DAE必須學習去除這些雜訊而獲得真正的沒有被雜訊污染過的輸入數據。因此,這就迫使編碼器去學習輸入數據的更加魯棒的表達,通常DAE的泛化能力比一般的AE強。Stacked Denoising Autoencoder(SDAE)是一個多層的AE組成的神經網路,其前一層自編碼器的輸出作為其後一層自編碼器的輸入。

在SDAE的基礎之上,又提出了Bayesian SDAE模型,並利用該模型來學習Item的隱向量,其輸入為Item的Side information。該模型假設SDAE中的參數滿足高斯分布,同時假設User的隱向量也滿足高斯分布,進而利用概率矩陣分解來擬合原始評分矩陣。該模型通過最大後驗估計(MAP)得到其要優化的目標函數,進而利用梯度下降學習模型參數,從而得到User與Item對應的隱向量矩陣。

Collaborative Recurrent Autoencoder

後來同一個作者又搗鼓出了CRAE.使用循環神經網路代替淺層的神經網路。看截圖的風格,可以很清晰地看到肯定是出於同一個作者之手。

2.2 DeepCF

下面我們要介紹幾個16-17年發表的DeepCF網路模型,雖然下面的網路模型不一定有用,但是其思想值得借鑒。

MV-DNN是基於多主題推薦,一個用戶與多個主題內容進行建模組成一個深度神經網路。有n個用戶則有n個神經網路,大量的神經網路進行組合成為一個龐大的DNN模型群。

TDSSM與MV-DNN有點類似,用於對用戶和item的短暫/臨時數據進行一起建模。

Coevolving Features匹配上用戶與item的瞬時信息,因為其相信隨著用戶在系統的瀏覽或者購買過程中,用戶的選擇偏好會不斷改變,而所被選擇的物品也會不斷變化,這兩者是一起發生變化的co-evolutionary。

Product Neural Network則是把產品的目錄結構也納入神經網路中進行計算,計算的同時考慮了產品目錄結構屬性。

2.3 google recommendations

下面兩個是google近年來推出較為經典的使用深度學習做推薦演算法的框架。其中Wide & Deep Learning網路模型由Wide Models和Deep Models組合而成,這裡的特徵組合方式非常巧妙。

YouTube Recommender,在今年的推薦系統頂級會議RecSys上,Google利用DNN來做YouTube的視頻推薦。通過對用戶觀看的視頻,搜索的關鍵字做embedding,然後在串聯上用戶的side information等信息,作為DNN的輸入,利用一個多層的DNN學習出用戶的隱向量,然後在其上面加上一層softmax學習出Item的隱向量,進而即可為用戶做Top-N的推薦。


3.Content Features in recommenders

在基於內容/上下文特徵的推薦中,我們的注意力對內容/上下文centent中,例如有圖像、文本、語音,這些內容都可以通過深度學習建模,獲得其高維特徵或者分類屬性,然後基於協同過濾演算法CF和基於內容的過濾演算法CBF的混合組合,進行推薦。

針對於圖像識別一類任務,深度學習已經取得了舉足的進展。深度神經挽留過模型設計一開始的時候模型權重越多模型越大,其精度越高,後來先後出現了GoogleNet、InceptionV1、INceptionV2、InceptionV3,resNet等著名的開源深度網路架構之後,在取得相同或者更高精度之下,其權重參數不斷下降。值得注意的是,並不是意味著橫坐標越往右,它的運算時間越大。在這裡並沒有對時間進行統計,而是對模型參數和網路的精度進行了縱橫對比。其中有幾個網路非常值得學習和經典的有:AlexNet、LeNet、GoogLeNet、VGG-16VGG-19。

針對文本處理我們在此前已經介紹過一系列的Word2vec技術,而音頻音樂方面的內容可以使用循環神經網路RNN進行序列數據建模。


4.Session-based neural recommendation

首先介紹下 session-based 的概念:session 是伺服器端用來記錄識別用戶的一種機制。典型的場景比如購物車,服務端為特定的對象創建了特定的 Session,用於標識這個對象,並且跟蹤用戶的瀏覽點擊行為。我們這裡可以將其理解為具有時序關係的一些記錄序列。

傳統的兩類推薦方法——基於內容的推薦演算法和協同過濾推薦演算法(model-based,memory-based)在刻畫序列數據中存在缺陷:每個 item 相互獨立,不能建模 session 中 item 的連續偏好信息。

在模型構建的時候,上圖使用了GRU,但是我們可以有很多選擇例如LSTM等,當然這些模型神經元的選擇主要原因是為了防止梯度消散對長時間序列記憶力下降而出現的。

我們出現了基於時間序列數據建模的循環神經網路RNN,把用戶的session信息看作是歷史序列數據,用戶的行為CTR作為循環神經網路RNN的預測輸出。


5.總結

本文介紹了一些深度學習在推薦領域的應用,我們發現一些常見的深度模型(DNN, AE, CNN等)都可以應用於推薦系統中,但是針對不同領域的推薦,我們需要更多的高效的模型。隨著深度學習技術的發展,我們相信深度學習將會成為推薦系統領域中一項非常重要的技術手段。

CCF ADL 系列又一誠意課程

兩位全球計算機領域 Top 10 大神加盟

——韓家煒 & Philip S Yu

共 13 位專家,覆蓋計算機學科研究熱點

新人福利

關注 AI 研習社(okweiwu),回復1領取

【超過 1000G 神經網路 / AI / 大數據,教程,論文】

一文詳解 AI 推薦系統三大演算法

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

50篇學術訪談實錄:一份557頁的年終答卷

TAG:AI研習社 |