作者丨gongyouliu 編輯丨lily 來源 | 大數據與人工智能(ID:) 前言 作者曾在《矩陣分解推薦算法》 這篇文章中提到,矩陣分解算法是一類嵌入方法,通過將用戶行為矩陣分解為用戶特征矩陣和標的物特征矩陣的乘積,最終將用戶和標的物嵌入到低維空間中,通過用戶特征向量和標的物特征向量的內積來計算用戶對標的物的偏好。 Word2Vec也是一類嵌入方法,通過構建雙層神經網絡模型,將詞嵌入到低維向量空間,詞向量保持了詞的句法和語義關系,可以解決各類語言學問題。自從2013年Google發明Word2Vec算法后,Worde2Vec在機器學習領域得到大規模采用,在NLP、推薦、搜索等領域產生了深遠的影響。 本文我們主要講解嵌入方法在推薦系統上的應用,上面提到的矩陣分解和Word2Vec兩類算法是推薦嵌入方法的核心思想來源,下面講到的很多嵌入方法思路都來源于此。 本文會從嵌入方法簡介、嵌入方法應用于推薦系統的一般思路、幾種用于推薦系統的嵌入方法的算法原理介紹、嵌入方法在推薦系統中的應用案例介紹、利用嵌入方法解決冷啟動等5部分來講解嵌入方法。希望通過本文的學習讀者可以很好地理解嵌入方法的思想、原理、價值以及典型的嵌入方法在推薦系統上的應用,最終能夠將嵌入方法應用到具體的推薦業務上。 一、嵌入方法簡介 詞嵌入方法最早在自然語言處理領域得到大規模的使用(見參考文獻1、2、3、4),可以通過學習詞的低維向量表示,用于解決詞的句法和語義相關的NLP問題,如詞性標注、關鍵詞提取、句子相似度等等,并且取得了非常好的效果。這種嵌入技術吸引了很多其他領域的研究者進行嘗試用于更多的業務場景,如搜索(參考文獻11、21)、推薦等,并取得了很好的效果。 熟悉深度學習的讀者肯定知道,深度學習模型隱含層的向量可以作為一種生成嵌入表示的方法。自編碼器和表示學習的一些方法和技術可以很好地用作嵌入,隨著深度學習的發展壯大,嵌入方法得到大量使用。Word2Vec本身也是一種淺層的神經網絡模型。 嵌入方法有很強的數學背景,在數學領域大量采用,幾何學中有所謂的嵌入存在定理,像PCA分析本質上是一種高維空間到低維空間的嵌入。在數學上有所謂的射影幾何學,研究的就是圖形的射影性質,即它們經過射影變換后,依然保持不變的圖形性質??梢哉f從高維空間到低維空間的任何一種映射其實就是一種嵌入。 在這里,我給嵌入方法一個很形式化的數學定義,讓讀者更好理解。假設 是n維空間中的一個二元組,S是由向量組成的集合,F是S中元素滿足的某種關系。那么嵌入方法就是需要我們找到一個映射: ,使得 在 中也大致滿足(可能有一定的信息損耗)關系F。 現實生活中嵌入的案例很多,比如我們在平面中畫三維物體其實是一種嵌入,我們需要保持物體之間的相對距離、位置以及遮擋關系,這種關系保持得越好,那么畫的就越逼真。 霍夫曼編碼就是一種采用最小信息量來編碼的方式,我們也可以將從一種可行的長編碼到最短霍夫曼編碼的映射關系看成是一種嵌入。 通過嵌入,我們可以在更低的維度解決問題,人類的大腦是比較善于處理低維(三維以下)問題的,對高維問題更難理解,所以嵌入方法也是一類方便我們理解和認知的方法。 為什么嵌入方法有效呢?是因為高維空間表達能力太強,現實生活中的樣本數量一般是較小的(相比于高維空間近乎無限的表達能力),只能“占據”高維空間很小的一個區域(這個區域一般等價于一個很低維的空間),所以我們可以將這些樣本投影到等價的低維空間中,也能讓它們有一定的區分度。 總結一下,嵌入方法是指通過數學變換(機器學習算法)將高維空間的對象映射到低維空間并保持相關性質的一種方法。 除了方便人類理解外,通過嵌入我們至少可以獲得如下價值: 1.嵌入到低維空間再處理,可以減少數據存儲與計算成本(高維空間有維數災難); 2.嵌入到低維空間,雖有部分信息損耗,但是這樣反而可能提升模型的泛化能力(樣本一般含有噪音,通過嵌入低維空間,其實可以“過濾掉”部分噪音); 本篇文章我們主要講解嵌入方法在推薦系統上的應用,下面我們從嵌入方法的基本原理開始介紹。 二、嵌入方法應用于推薦系統的一般思路 上一節對嵌入方法做了一個比較簡單的介紹,在本節我們來講解嵌入方法怎么應用于推薦業務上。一般來說,在推薦系統上,可以采用以下兩種嵌入方式進行推薦,下面我們分別介紹。 在講之前,先說明一下,對于推薦業務來說,最主要的兩種推薦(產品)形態是標的物關聯標的物推薦和完全個性化推薦,這里我們講嵌入方法在推薦上的應用,主要是應用于這兩種推薦場景。
通過構建算法模型,基于用戶行為數據、標的物metadata數據將標的物嵌入到低維空間中,得到每個標的物的嵌入向量表示。有了標的物的嵌入向量,我們可以通過如下三種方式用于推薦業務。 (1) 構建標的物關聯推薦 將標的物嵌入到同一個空間后,“距離”越近的標的物往往越相似。我們可以利用該性質來計算兩個標的物之間的相似性。一般計算相似性可以采用cosine余弦的方法。 我們可以為每個標的物求出最相似的K個標的物作為關聯推薦。具體在大規模數據情況下,怎么分布式求topK相似度,我在《協同過濾推薦算法》 第三節計算topK相似度中有詳細講解怎么利用Spark來分布式計算,這里不再贅述。 (2) 對標的物進行聚類,形成個性化專題,用于產品運營,也可以用于關聯推薦 有了標的物的向量表示,我們還可以對標的物進行聚類,同一類的標的物往往是相似的,這一類標的物可以用于制作專題,通過人工增減部分標的物,給專題起一個描述性的標題,就可以用于人工運營,這是算法和人工配合的很好的一個案例,特別適合長視頻行業。 另外,聚類后的標的物也可以作為關聯推薦,將同一類的其他標的物作為關聯推薦列表。 (3) 為用戶推薦個性化的標的物 有了標的物的嵌入向量表示,我們可以非常容易地為用戶進行個性化推薦。具體的推薦策略有如下兩個:
通過用戶操作過的標的物的嵌入的“聚合”來獲得用戶的嵌入表示,可以采用(加權)平均或者RNN(見參考文獻15,本文不講解)等方式來聚合。 ,記 是用戶按照時間順序最近操作過的k個標的物( 是最近操作過的),標的物 的嵌入表示記為 ,那么我們可以用如下方式來獲得用戶的嵌入表示 其中, 是標的物 的權重,我們可以取 ,這時不同時間段的標的物權重是一樣的,也可以按照時間做等差或者等比的衰減,保證時間最近的標的物權重最大。 通過上面方法獲得了用戶對標的物的評分,計算出用戶與每個標的物的評分,按照評分降序排序取TopN作為推薦列表(剔除用戶已經操作過的標的物)。
該方法可以將用戶最近操作過的標的物作為種子標的物,將種子標的物最相似的N個標的物作為推薦的候選集。具體如下: 當然,上面只是選擇出了候選集,一般我們還要給候選集中的標的物打分,按照分值高低將高分的topN推薦給用戶,本文我們不講解怎么對候選集排序,未來會單獨出一篇關于推薦系統排序的文章。
嵌入方法還有一種使用方式是將用戶和標的物同時嵌入同一個低維空間中,這樣就可以獲得用戶和標的物的特征向量,它們是同一維度的。這時我們可以用用戶向量和標的物向量的內積作為用戶對標的物的偏好評分,獲得了評分就可以采用前面講的方式給用戶做推薦了。這種嵌入應用方式的典型代表就是矩陣分解算法,讀者可以從我之前寫的《矩陣分解推薦算法》這篇文章中進行更加深入的了解。后面我們也會講解這種聯合嵌入的實際案例。 三、幾種用于推薦系統的嵌入方法的算法原理介紹 前面講解完了嵌入方法應用于推薦的一般思路,在本節我們對幾種用于推薦系統上的嵌入方法的算法原理進行簡單介紹。
假設有評分的 對( 代表用戶, 代表標的物)組成的集合為 :,通過矩陣分解將用戶 和標的物 嵌入k維特征空間的嵌入向量分別為: 那么用戶 對標的物 的預測評分為 ,真實值與預測值之間的誤差為。如果預測得越準,那么 越小,針對所有用戶評分過的 對,如果我們可以保證這些誤差之和盡量小,那么有理由認為我們的預測是精準的。 有了上面的分析,我們就可以將矩陣分解轉化為一個機器學習問題。具體地說,我們可以將矩陣分解轉化為如下等價的求最小值的最優化問題。 公式1:矩陣分解等價的最優化問題 其中 是超參數,可以通過交叉驗證等方式來確定, 是正則項,避免模型過擬合。通過求解該最優化問題,我們就可以獲得用戶和標的物的特征嵌入。
SGNS(Skip-Gram with Negative Sampling),是Word2Vec(Google工程師在2013年提出的一種淺層神經網絡嵌入方法)中一類重要方法,主要目的是將詞嵌入到低維向量空間,可以捕獲詞上下文之間的關系。該方法自從被提出后在各類NLP任務中獲得了非常好的效果,并被拓展到包括推薦系統等在內的多種業務場景中。 下面對該算法的原理做簡單介紹。后面講到的很多推薦系統嵌入方法都是從該算法吸收靈感而提出的。 假設 是有限詞匯表 中的一個詞序列。Word2Vec方法將求解詞嵌入問題轉化為求解下面的目標函數的極大值問題 公式2:Word2Vec的目標函數 其中,c是詞 的上下文(附近的詞)窗口的大小, 是下面的softmax函數: 和 分別是詞 的目標(target)和上下文(context)嵌入表示,這里 ,參數m是嵌入空間的維數。 直接優化公式2的目標函數是非常困難的,因為求 計算量太大,是詞庫大小N的線性函數,一般N是百萬級別以上。 我們可以通過負采樣(Negative Sampling)來減少計算量,具體來說,就是用如下的公式來代替上面的softmax函數。 這里 是logistic函數,M是采樣的負樣本(這里負樣本是指抽樣的詞不在詞目標的上下文中)數量。 最終可以用隨機梯度下降算法來訓練公式2中的模型,估計出U 、V。讀者可以閱讀參考文獻1、2、3、4對Word2Vec進行深入學習和了解。 參考文獻12提出了一個CoFactor模型,將矩陣分解和Word2Vec(參考文獻27中證明Word2Vec嵌入等價于一類PMI矩陣的分解,本文作者也是采用的PMI分解的思路,而不是直接用Word2Vec)整合到一個模型中來學習嵌入并最終給用戶做推薦,也是一個非常不錯的思路。 參考文獻28借助Word2Vec的思路,提出了Prod2Vec模型,該算法利用發給用戶的電子郵件廣告數據,根據用戶的郵件點擊購買回執了解用戶的偏好行為,通過將用戶的行為序列等價為詞序列,采用Word2Vec類似的方法進行嵌入學習獲得商品的嵌入向量,最終給用戶進行個性化推薦。該算法部署到線上,有9%點擊率的提升。參考文獻16基于Prod2Vec模型,提出了一種整合商品metadata等附加信息的Meta-Prod2Vec算法模型,提升了準確率,并且可以有效解決冷啟動問題,感興趣的讀者可以閱讀學習這兩篇文章。 有很多開源的軟件有Word2Vec的實現,比如Spark、gensim、TensorFlow、Pytorch等。我們公司采用的是gensim,使用下來效果不錯。
給定一個圖 ,V、E分別代表圖的頂點和邊的集合。所謂圖嵌入就是學習每個頂點在低維空間 中的向量表示。利用數學的術語就是學習一個映射:,將圖中每個頂點v映射為d維空間中的一個向量 。 基于Word2Vec和參考文獻23的思路,我們可以先通過隨機游走(random walk)生成圖頂點的序列,再利用Word2Vec的Skip-Gram算法學習每個頂點的向量表示。為了保留圖的拓撲結構,我們需要求解如下的目標函數: 這里N(v)是頂點v的鄰域,可以定義為通過頂點v通過一步或者兩步可達的所有其他頂點的集合。 是給定一個頂點v,通過隨機游走獲得v的一個鄰域頂點的概率。 有了上面的定義和說明,剩下的處理流程和思路跟Word2Vec是一樣的了,這里不再贅述。 參考文獻6、19分別提供了基于圖嵌入進行個性化推薦的解決方案,其中6我們會在第四節4中詳細介紹。19提供了一個在異構信息網絡(Heterogeneous Information Network,簡寫為HIN)中通過隨機游走生成節點序列,再將節點序列嵌入低維空間,通過一組fusion函數變換后整合到矩陣分解模型中進行聯合訓練,通過求解聯合模型最終進行推薦的方法,該方法也可以有效地解決冷啟動問題,具體架構圖如下,感興趣的讀者可以參考原文。隨著互聯網的深入發展,異構信息網絡是一類非常重要的網絡,在當前的互聯網產品中(社交網絡產品、生活服務產品等)大量存在,基于HIN的個性化推薦也是未來一個比較火的方向之一。 圖1:基于HIN推薦的架構 圖嵌入通過將圖中節點變換為節點序列再利用Word2Vec思路做嵌入,本質就是Word2Vec的思路。只是不同的圖嵌入方法將圖中節點變換為節點序列的實現方案不一樣。
最近幾年深度學習驅動的人工智能第三次浪潮對計算機視覺、語音識別、自然語言處理領域有極大的推動作用,在部分機器學習任務(如圖像分類、機器閱讀理解精確匹配等)上的表現超越了人類的水平。同樣深度學習在推薦上也有大量應用,并且在工業界取得了不錯的效果。 利用深度學習嵌入進行推薦是深度學習推薦系統中的一類重要方法,其實Word2Vec嵌入也是一個神經網絡模型,只不過是淺層神經網絡。這里我們簡單介紹一下,關于深度學習推薦系統作者會單獨寫一篇文章詳細介紹。 我們知道自編碼器是深度學習中一類非常重要的表示學習技術,通過自編碼器,可以獲得輸入向量的低維表示,這個表示其實就是一種嵌入,我們可以利用這種嵌入來進行推薦。關于利用自編碼器技術做推薦的文章有很多,參考文獻25利用自編輯器聯合矩陣分解將附加信息整合到推薦模型中在部分推薦公開數據集上獲得了不錯的效果。參考文獻15、26也是利用自編碼器來做嵌入進行推薦的例子。建議讀者可以學習一下參考文獻15,是雅虎給出的一個基于自編碼器做推薦的案例,并且應用到了雅虎新聞的推薦中,取得了很好的效果,該文的方法也很新穎,值得學習了解。 另外,YouTube的一篇非常出名的奠基性的深度學習文章(見參考文獻24),這篇文章中將推薦問題看成一個分類問題(類別的數量等于視頻個數),基于用戶過去觀看記錄預測用戶下一個要觀看的視頻的類別。文章利用深度學習來進行嵌入,將用戶和標的物嵌入同一個低維空間,通過softmax激活函數來預測用戶用戶在時間點t觀看視頻i的的概率問題。具體預測概率公式見下圖: 其中u、v分別是用戶和視頻的嵌入向量。U是用戶集,C是上下文。該方法也是通過一個(深度學習)模型來一次性學習出用戶和視頻的嵌入向量。感興趣的讀者可以參考閱讀,我在下一篇文章《深度學習推薦算法》中會詳細講解該文章算法原理和核心思想。 四、嵌入方法在推薦系統中的應用案例介紹 上一節講解了4類用于推薦系統的嵌入方法,基于這4類方法,我們在本節介紹幾個有代表性的嵌入方法在推薦系統中的應用案例,讓大家可以更好地了解嵌入方法怎么做推薦。這幾個案例都是在真實的工業級場景得到驗證的方法,值得大家學習和借鑒。
通過第三節1的矩陣分解的介紹,當我們獲得了用戶和標的物嵌入后,我們計算出用戶u的嵌入向量與每個標的物嵌入向量的內積 ,再按照內積的值從大到小降序排列,剔除掉用戶已經操作過的標的物,將topN推薦給用戶。讀者可以參考我以前寫的《矩陣分解推薦算法》這篇文章進行深入了解。
微軟在2016年基于Word2Vec提出了item2vec(參考文獻14),基于用戶的操作行為,通過將標的物嵌入到低維空間的方式來計算標的物之間的相似度,進行關聯推薦。下面對該方法進行簡單介紹。 我們可以將用戶操作過的所有標的物看成詞序列,這里每個標的物就相當于一個詞,只是這里用戶操作過的標的物是一個集合,不是一個有序序列。雖然用戶操作標的物是有時間順序的,但是標的物之間不像詞序列是有上下文關系的(一般不存在一個用戶看了電影A之后才能看電影B,但是在句子中,詞的搭配是有序關系的),因此這里當成集合會更合適。所以,我們需要對Word2Vec的目標函數進行適當修改,最終我們可以將item2vec的目標函數定義為 這里不存在固定的窗口大小了,窗口的大小就是用戶操作過的標的物集合的大小。而其他部分跟Word2Vec的優化目標函數一模一樣。 最終用向量 來表示標的物的嵌入,用cosine余弦相似度來計算兩個標的物的相似度。也可以用 、 、 ( 和 拼接在一起的向量)來表示標的物的嵌入。 我們公司也采用了item2vec算法來對視頻進行嵌入,用于視頻的相似推薦中,點擊率效果比原來的基于矩陣分解的嵌入有較大幅度的提升。
阿里盒馬利用Word2Vec思想對不同類別的ID(item ID、product ID、brand ID、store ID等)進行聯合嵌入學習,獲得每個ID的嵌入表示,下面我們對該方法進行簡單介紹(見參考文獻7)。 給定一個item序列 ,Skip-Gram模型通過優化如下的平均對數概率目標函數 這里C是上下文窗口的長度。下圖是某個用戶的瀏覽序列,其中前5個瀏覽記錄是一個session(用戶的一次交互序列,可以按照時間,比如按照一個小時切分,將用戶在APP上的操作分為多個session)。 圖2:用戶在APP上的行為序列 其中, 定義如下 分別是item和context的嵌入表示,m是嵌入空間的維數,D是總的item數,也就是盒馬上的所有商品數量。 上述公式求導計算復雜度正比于D,往往D是非常大的,所以類似Word2Vec,可以采用如下的負采樣技術減少計算量 公式3:item的對數條件概率 這里S是從正樣本item的噪音分布 (item及其上下文之外的物品的分布)中抽取的負樣本的數量。 一般取均勻分布,但是對于商品來說,分布其實是不均勻,很多商品是熱門商品,搜索購買的人多,另外一些相對冷門。因此,為了平衡商品之間的冷熱情況,最終從Zipfian分布來抽取負樣本。具體采樣方式如下: 先將所有樣本按照訪問量降序排列按照[0,D)來索引,我們可以用如下公式來近似Zipfian分布 累積分布函數可以記為 令 ,這里r是從均勻分布 抽取的隨機數,那么Zipfian分布可以近似表示為 即負采樣可以先從 抽取隨機數r,按照上面公式計算出index,這個index對應的item就是采樣的item(要提出掉item本身及它的context中的物品)。通過該方式采樣可以大大加速訓練過程。 講解完了item ID的嵌入方法,下面我們來說下怎么對多個ID進行聯合嵌入訓練。對于商品來說,每個商品都有對應的產品、品牌、供應商,并且還有不同維度的分類。下面給出一個item關聯的6個ID,分別是product ID、brand ID、store ID、cate-level1 -ID、cate-level2 -ID、cate-level3 -ID。拿蘋果手機舉例來說,item ID代表的是iPhone X 64G 黑色版對應的ID,而product ID對應的是iPhone X的ID,brand ID對應的是Apple的ID,storeID對應的是蘋果官方旗艦店的ID,cate-level1 -ID、cate-level2 -ID、cate-level3 -ID分別是科技產品、消費類電子產品、智能手機等分層次的類別。 上圖是item ID和它的屬性ID之間的關聯關系,假設有K個ID,我們按照順序記為 這里 ,而 分別是product ID、brand ID、store ID等。那么類似上面對獨立item的對數條件概率公式3,對于多ID聯合嵌入,我們有如下公式 上式中, 和 分別是第k個ID的context和target嵌入表示, 是嵌入空間的維數,不同類型的ID可以嵌入到不同維數的空間中, 是 的權重系數。假設第k個ID(比如brand ID)包含 個不同的item(這個品牌包含 個不同的item),即 這里 ,我將 定義為 的倒數是合理的,具體有 舉例來說,我們始終有 ,如果 包含10個不同的item,那么 。item ID與它的屬性ID之間是有很強的關聯的。如果兩個item ID的嵌入向量相似,那么他們的對應屬性ID的向量也是相似的,反之亦然。因此我們定義 公式4:item的條件概率公式 這里 是將嵌入向量 變換到與 同一緯度的矩陣變換。最終的聯合嵌入最優化問題可以定義為 其中 都是超參數。由于各類ID是相對固定的,上述模型可以較長時間(比如一周)訓練一次,也不太會影響最終推薦的精度。 通過上述最優化問題求解,獲得了item的嵌入表示,那么我們可以采用第二節1中(3)的方法來為用戶做個性化推薦,這里不細說了。讀者可以閱讀參考文獻7,對技術細節做更細致了解。
我們在第三節3有向圖嵌入中對圖嵌入方案進行了介紹,在這里我們詳細講解淘寶基于圖嵌入做推薦的一個算法模型,感興趣的讀者可以詳細閱讀參考文獻6了解更多細節介紹。下面我們分4個部分來分別介紹。 (1) 從用戶行為構建item有向圖 用戶在淘寶上的訪問行為是有時間順序的,是一個行為序列,一般協同過濾只考慮了用戶訪問的商品是否在同一個行為序列中,而忽略了訪問的序關系,而序關系可能反應了用戶的興趣特征。一般不會考慮用戶整個訪問歷史,因為這樣計算量大,并且用戶興趣是隨著時間變化的。所以將用戶在一段時間內(比如一個小時)的行為作為一個session來考慮。 我們可以通過如下步驟來構建用戶行為session的有向圖(參考下圖中a、b兩個步驟):所有商品構成圖的頂點,如果兩個商品在某個用戶的一個session中是相鄰的(即該用戶連續訪問了這兩個商品),那么我們就可以在這兩個頂點構建一條有向邊(用戶訪問節點的次序就是邊的方向),邊的權重可以是這兩個商品在所有用戶session中出現的次數。通過這個方式,我們就可以構建出基于用戶行為的有向圖了。這時邊的權重就代表了兩個頂點之間基于用戶行為的相似度。 圖3:構建用戶行為有向圖 (2) 圖嵌入 構建好有向圖后,我們就可以采用隨機游走(參考文獻23的DeepWalk方法,參考文獻13、17、18提供了其他利用圖嵌入的方法,其中17、18提供了比其他圖嵌入方法更高效的實現方案,可以大大節省嵌入訓練的時間)的方式生成行為序列(參見圖2中的c)。后面我們再用Skip-Gram算法學習圖的頂點(商品)的嵌入表示(參考圖2中d的Skip-Gram模型)。我們需要最大化通過隨機游走生成序列中的兩個頂點同時出現的概率,具體來說,我們需要求解如下最優化問題: 上式中w是生成的序列中上下文節點的窗口大小??梢约僭O窗口中不同的節點是獨立的。那么可以做如下簡化 利用Word2Vec中提到的負采樣技術,最終的優化目標函數為 上式中 是為 采樣的負樣本集合, 是logistic函數, 越大,采樣樣本越多,模型最終效果越好。 (3) 圖嵌入整合附加信息 每個商品是包含價格、品牌、店鋪等附加信息的,這些附加信息可以整合到Skip-Gram模型中,這樣即使該商品沒有用戶行為,也可以用附加信息的嵌入獲得嵌入向量,從而解決冷啟動問題。 具體來說,可以將附加信息跟商品拼接起來,在模型中增加一個聚合層,將商品和它的附加信息嵌入平均化,即通過下式來獲取隱含層的表示(參見圖4的模型表示)。 上式中, 是商品v的嵌入表示, 是附加信息的嵌入表示,我們假設商品嵌入和附加信息嵌入到相同維度的空間中,這樣才可以求平均。 圖4:在Skip-gram中整合附加信息 (4) 增強的圖嵌入整合附加信息 (3)中假設所有的附加信息權重是一樣的,實際上不同的附加信息權重不一樣,我們可以給不同附加信息不同權重,讓模型效果更好。不同的附加信息的權重可以根據經驗給定,或者作為模型參數來學習獲得。 通過圖嵌入,有了商品的嵌入向量表示,我們就可以用第二節1(3)中的第2個方法給用戶做推薦。
參考文獻10中提出了一種整合物品圖像、標題、描述文本、協同信息的Content2Vec模型,該方法將不同類型的信息通過不同的嵌入方法生成的嵌入向量聚合起來,形成一個統一的模型來預測兩個商品是否會被一起購買的概率,該模型的架構如下圖。 圖5:多源信息嵌入預測兩個商品被一起購買的概率 具體來說,該模型包含三個主要模塊: (1) 內容嵌入模塊 通過不同的算法將商品不同維度的信息嵌入到低維空間中,這些不同源的信息嵌入過程是解耦合的、可插拔的,可以用不同的算法來取代。圖像嵌入可以用圖像分類的算法獲得(如AlexNet等),而文本的嵌入可以用Word2Vec獲得,協同信息的嵌入可以用矩陣分解算法獲得。外鏈代發 (2) 多源聯合嵌入模塊 該模塊將(1)不同源的商品信息嵌入向量,通過一個統一的模型獲得聯合嵌入表示。 (3) 輸出層 輸出層結合兩個商品的聯合嵌入向量,計算出這兩個商品被一起購買的概率。具體來說,兩個商品的聯合嵌入向量通過求內積,再經過sigmod函數變換獲得概率值。 通過上述方法可以獲得每個商品的嵌入向量,我們就可以用第二節1(3)中的第2個方法給用戶做推薦。 五、利用嵌入方法解決冷啟動問題 嵌入方法除了可以用于推薦外,通過整合附加信息(side information)到嵌入模型中,可以很好地解決冷啟動問題。我們知道基于內容的推薦可以緩解冷啟動問題,這些附加信息也一般是內容相關的信息,所以整合進嵌入模型中就可以用于解決冷啟動。下面我們簡單介紹4種通過嵌入解決冷啟動的案例。 1、通過在矩陣分解中整合內容相關信息解決冷啟動 參考文獻9中給出了一種在矩陣分解中整合用戶特征和標的物特征的方案,可以有效地解決用戶和標的物冷啟動問題。這篇文章我們在《矩陣分解推薦算法》第四節6中進行過介紹,這里不再贅述。 2、通過不同ID間的結構鏈接關系及不同平臺用戶的特征遷移來解決冷啟動 參考文獻7中,每個item ID會關聯對應的product ID、brand ID、store ID等,對于一個新的item來說,這個item所屬的產品、品牌或者店鋪可能會存在其他的item被用戶點擊購買過,那么一種很自然的方式是用這個item關聯的其他ID的嵌入向量來構造該item的近似嵌入表示。 因為 是單調遞增函數,結合第四節3介紹的阿里盒馬的聯合嵌入模型中公式4,那么我們就有如下近似公式 要想讓上式取值最大,當 與后面括號中的向量方向一致才可能達到。那么我們就可以用 來近似item的嵌入。當然不是跟item ID關聯的所有ID都有嵌入,我們只需要選擇有嵌入的ID代入上式中即可。通過模型線上驗證,這種方式得到的嵌入效果還是很不錯的,可以很好地解決商品冷啟動問題。 同時,這篇文章中通過不同APP用戶特征的遷移可以解決用戶冷啟動,下面也做簡單介紹。 盒馬和淘寶都屬于阿里的電商平臺,淘寶通過這么多年的發展已經覆蓋了絕大多數的用戶群,大部分盒馬的用戶其實也是淘寶的用戶,那么對于盒馬上的新用戶,就可以用該用戶在淘寶上的特征,將特征遷移到盒馬上來,為他做推薦。下面來簡要介紹推薦的流程與方法。 假設淘寶的用戶為 ,盒馬上的用戶為 ,他們的交集為 ( )。那么按照下面流程就可以為盒馬的新用戶做推薦了: (1)采用第四節3的方案計算出淘寶平臺上用戶的嵌入向量; (2) 將 的用戶根據在淘寶上的嵌入向量用kmeans聚類聚成1000類; (3) 對于(2)中的每一類,將這一類用戶在盒馬上購買的topN熱門商品計算出來作為推薦候選集; (4) 對于從淘寶來的新的盒馬用戶,我們先從上面的1000類中找到與該用戶最近的類(該用戶的嵌入向量與類中心距離最近); (5) 將該新用戶最近的類的topN熱門商品推薦給該用戶。 下面的圖6可以更好地幫助大家理解上面的流程。通過這5步就可以為盒馬的新用戶做推薦了。當然如果一個用戶是盒馬的新用戶但不是淘寶的用戶或者也是淘寶的新用戶,那么這個方法就無能為力了,但是這種情況畢竟是很少的(因為淘寶覆蓋了中國絕大多數的電商用戶),所以該方法基本解決了盒馬大部分新用戶的冷啟動推薦問題。 圖6:通過跨平臺特征遷移來為新用戶做推薦 3、通過在圖嵌入中整合附加信息解決冷啟動 我們在第四節4中已經說明了在有向圖嵌入構建Skip-Gram模型過程中整合附加信息可以解決冷啟動問題,這里不再說明。 4、通過圖片、文本內容嵌入解決冷啟動問題 前面我們在第四節5中講解了Content2Vec模型,該模型通過將圖片、文本、類別等metadata信息嵌入,再將這些不同源的嵌入向量通過一個統一的模型獲得聯合嵌入表示,最終通過(A、B是兩個商品的嵌入向量)輸出層來訓練獲得最終的商品嵌入表示。通過該方法,即使沒有足夠多的用戶行為,因為模型整合了圖片、文本信息,可以有效避免冷啟動問題。 上面只是列舉了第四節案例中幾種可以解決冷啟動的算法模型,其他可以解決冷啟動的模型這里不一一列舉。總結下來,只要是模型中整合了附加信息,基本都可以有效緩解冷啟動問題。 總結 隨著Word2Vec等嵌入方法在NLP、推薦、搜素等各個領域的成功運用,嵌入方法越來越受歡迎。本文講解了嵌入方法的思想、嵌入方法在推薦上的應用思路、介紹了用于推薦業務的幾種嵌入方法的一般原理,最后給出了幾個工業界利用嵌入方法做推薦的算法案例及怎么利用嵌入方法緩解冷啟動問題。參考文獻整理了很多關于嵌入方法理論及其在搜素推薦中的應用的論文,值得大家研究和學習。 從數學的角度來說,嵌入方法就是一種投影映射,通過選擇合適的映射將復雜空間的向量投影到低維空間,保持某些性質的不變性,可以更容易地解決很多機器學習問題。目前嵌入方法在推薦上的應用基本都是基于矩陣分解、Word2Vec及深度學習的思想通過部分整合附加信息來實現的。我相信未來有更多的理論知識的突破來支持嵌入方法更好地用于推薦業務,嵌入方法未來一定有更大的發展前景和應用價值,讓我們拭目以待! 【參考文獻】 1.[Word2Vec] Distributed Representations of Words and Phrases and their Compositionality (Google 2013) 2.[Word2Vec] Efficient Estimation of Word Representations in Vector Space (Google 2013) 3.[Word2Vec] Word2vec Parameter Learning Explained (UMich 2016) 4.Network–Efficient Distributed Word2vec Training System for Large Vocabularies 5.A Deep Embedding Model for Co-occurrence Learning 6.[2018 阿里] Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba 7.[2018 阿里] Learning and Transferring IDs Representation in E-commerce 8.[2017 facebook] StarSpace:Embed All The Things 9.[2015] Metadata Embeddings for User and Item Cold-start Recommendations 10.[2017 Criteo] Specializing Joint Representations for the task of Product Recommendation 11.[2018 Airbnb] Real-time Personalization using Embeddings for Search Ranking at Airbnb 12.[2016 Netflix] Factorization Meets the Item Embedding- Regularizing Matrix Factorization with Item Co-occurrence 13.[2016] node2vec- Scalable Feature Learning for Networks 14.[2016 微軟] Item2Vec- Neural Item Embedding for Collaborative Filtering 15.[2017 Yahoo] Embedding-based News Recommendation for Millions of Users 16.[2016] Meta-Prod2Vec: Product Embeddings Using Side-Information for Recommendation 17.[WWW 19] NetSMF: Large-Scale Network Embedding as Sparse Matrix Factorization 18.[IJCAI 19] ProNE: Fast and Scalable Network Representation Learning 19.[2017] Heterogeneous Information Network Embedding for Recommendation 20.Representation learning: A review and new perspectives 21.[2017] Learning a Hierarchical Embedding Model for Personalized Product Search 22.[2017] MRLR: Multi-level Representation Learning for Personalized Ranking in Recommendation 23.Deepwalk: Online learning of social representations 24.[YouTube 2016] Deep Neural Networks for YouTube Recommendations 25.[2017 攜程] A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems 26.[2015] Deep Collaborative Filtering via Marginalized Denoising Auto-encoder 27.[2014] Neural Word Embedding as Implicit Matrix Factorization 28.[2016 Yahoo] E-commerce in Your Inbox: Product Recommendations at Scale ◆ ◆ |
|
來自: 昵稱66099194 > 《待分類》