Billion-scale Commodity Embedding for E-commerce Recommendation in Alibaba. 2018 論文讀書筆記

在之前的文章中,我們學習了word2vec基本概念,以及如何將類似的方法應用到電商場景中,也就是學習商品對應的embedding向量,可以更好地表達每一個商品的語義信息,從而幫助電商場景下更優的推薦策略。另一方面,我們還學習了基於圖模型的embedding向量,使得上述方法可以不僅限於時間序列化的數據,而適用於更廣泛的圖結構語料數據。

在這篇文章中我們可以看到阿里巴巴的同學們如何利用圖模型

的embedding解決電商場景下的embedding問題。一個非常有趣的應用場景可以幫助我們複習之前學習到的word2vec演算法,以及圖模型的基本操作;而這篇文章提到的很多實戰中會遇到的細節問題,是更加值得我們學習的。

在開始之前我們先對之前的知識做一些簡單的回顧。word2vec演算法的目標是將稀疏的詞語的one-hot向量表達為稠密的embedding向量,使得語義相近的詞語之前在embedding空間中距離更近。為瞭解決這個問題,我們假設語料庫中,上下文相鄰的詞語之間的語義互相依賴,因此語料庫中的每一個詞語以及它的上下文之前的其它詞語之間可以互相推測。這樣,一個兩層全連接的模型,即可以用來學習詞語的embedding向量。(更多的細節可以參考之前的文章zhuanlan.zhihu.com/p/64

word2vec模型結構

後來人們發現word2vec模型的強大能力可以用來學習其它場景下的稀疏物品的embedding向量,例如電商場景下的商品內容。這種稠密的embedding向量,有著強大的語義表達能力。但是這種方法要求訓練數據必須是序列化的,這就限制了它更廣泛的應用。為瞭解決這個問題,人們提出了基於圖模型的隨機遊走,將圖結構的訓練數據,通過隨機採樣的方式,構建序列化訓練數據,從而達到復用word2vec模型的能力,可以讓這種embedding向量的學習演算法有著更廣泛的應用。(更多的細節可以參考之前的文章zhuanlan.zhihu.com/p/67

阿里巴巴的這篇文章便是上述演算法的一個優秀的實踐示例。

  1. 圖結構訓練數據的構建方法

傳統的方法會忽略用戶行為的時間因素,而盲目的認為某個用戶相關的所有商品都有著相近的語義,事實上我們知道用戶的興趣是會隨著時間變化的,這篇文章中,作者僅僅選取用戶興趣的一個時間窗。我們定義訓練數據的圖 G=(V, E) ,其中的每一個點 v 代表一個商品,在某一個用戶session中連續出現的商品之間增加一個邊 e ,另外我們對每一個邊增加權重參數 w 代表了這個連邊在不同的用戶session中出現的次數, w 越大的兩個點之間有著越緊密的聯繫。

作者在這裡還列舉了一些數據清洗的方法:a. 停留時間較短的點擊無效,可能為誤點擊,應該濾除;b. 對短時間內大量點擊購買行為的殭屍用戶進行濾除;c. 商戶會對商品各項內容進行更新,更新一定次數之後應該被認為是一個新的商品。

2. 模型訓練

隨機遊走的word2vec模型,加上negative sampling。這裡前面已經回顧,不再贅述。

3. 冷啟動問題

冷啟動可以算是幾乎所有推薦系統都必須要認真對待的問題。這篇文章中作者提出的方案是利用商品的某些泛化屬性(例如商品價格,產地等冷啟動時即可以獲取到的泛化屬性),對每一種泛化屬性計算該屬性的各種不同取值的embedding向量,然後將這些向量直接連接在商品id的embedding向量後面,這樣就可以解決冷啟動場景中,新出現的商品ID,沒有合適的embedding向量,沒辦法得到相對靠譜的分發的問題了。

這種方法充分利用了各種泛化的商品屬性,可以在商品冷啟動的時候給出合適的推薦分發。但是簡單地將embedding向量拼接起來的方法忽略了各個屬性不同的重要性,因此,作者提出了一種改進的方案,增加一個weight,也就是給每一種商品屬性一個重要性參數,在訓練中對這個重要性參數進行調優,讓我們在學習到不同屬性不同取值的embedding的同時,也學習到不同屬性之間,誰對於商品語義表達有更重要的意義。

如下圖,我們保留了傳統的word2vec的模型結構,只是在dense embeddings和hidden層之間增加個a0~an的權重參數,在訓練中也同步梯度更新這些權重參數。

推薦閱讀:

相關文章