值得收藏! 深度學習推薦系統中各類流行的Embedding方法 (上)

2021-01-07 網易

  

  From: Microstrong

  將門好聲音第57

  

  Embedding方法概覽

  
1. Embedding簡介

  Embedding,中文直譯為「嵌入」,常被翻譯為「向量化」或者「向量映射」。在整個深度學習框架中都是十分重要的「基本操作」,不論是NLP(Natural Language Processing,自然語言處理)、搜索排序,還是推薦系統,或是CTR(Click-Through-Rate)模型,Embedding都扮演著重要的角色。

  1.1 什麼是Embedding

  形式上講,Embedding就是用一個低維稠密的向量「表示」一個對象,這裡所說的對象可以是一個詞(Word2Vec),也可以是一個物品(Item2Vec),亦或是網絡關係中的節點(Graph Embedding)。其中「表示」這個詞意味著Embedding向量能夠表達相應對象的某些特徵,同時向量之間的距離反映了對象之間的相似性。

  1.2 Embedding技術對於深度學習推薦系統的重要性

  在深度學習推薦系統中,為什麼說Embedding技術對於深度學習如此重要,甚至可以說是深度學習的「基本核心操作」呢?原因主要有以下四個:

  (1)在深度學習網絡中作為Embedding層,完成從高維稀疏特徵向量到低維稠密特徵向量的轉換(比如Wide&Deep、DIN等模型)。 推薦場景中大量使用One-hot編碼對類別、Id型特徵進行編碼,導致樣本特徵向量極度稀疏,而深度學習的結構特點使其不利於稀疏特徵向量的處理,因此幾乎所有的深度學習推薦模型都會由Embedding層負責將高維稀疏特徵向量轉換成稠密低維特徵向量。因此,掌握各類Embedding技術是構建深度學習推薦模型的基礎性操作。

  (2)作為預訓練的Embedding特徵向量,與其他特徵向量連接後,一同輸入深度學習網絡進行訓練(比如FNN模型)。Embedding本身就是極其重要的特徵向量。相比MF等傳統方法產生的特徵向量,Embedding的表達能力更強,特別是Graph Embedding技術被提出後,Embedding幾乎可以引入任何信息進行編碼,使其本身就包含大量有價值的信息。在此基礎上,Embedding向量往往會與其他推薦系統特徵連接後一同輸入後續深度學習網絡進行訓練。

  (3)通過計算用戶和物品的Embedding相似度,Embedding可以直接作為推薦系統的召回層或者召回策略之一(比如Youtube推薦模型等)。Embedding對物品、用戶相似度的計算是常用的推薦系統召回層技術。在局部敏感哈希(Locality-Sensitive Hashing)等快速最近鄰搜索技術應用於推薦系統後,Embedding更適用於對海量備選物品進行快速「篩選」,過濾出幾百到幾千量級的物品交由深度學習網絡進行「精排」。

  (4)通過計算用戶和物品的Embedding,將其作為實時特徵輸入到推薦或者搜索模型中(比如Airbnb的Embedding應用)。

  2. Word2Vec-Embedding流行起點

  關於Word2Vec的入門文章可以參考作者之前的一篇文章:。

  
2.1 基於負採樣的Skip-gram

  這裡單獨把基於負採樣的Skip-gram模型再詳細描述一次,是因為這個模型太重要了,稍後講解的Item2Vec模型和Airbnb論文《Real-time Personalization using Embeddings for Search Ranking at Airbnb 》提出的模型都借鑑了基於負採樣的Skip-gram模型的思想。所以,我們務必要把基於負採樣的Skip-gram模型理解透徹。

  Skip-gram模型是由Mikolov等人提出的。下圖展示了Skip-gram模型的過程。該模型可以看做是CBOW模型的逆過程,CBOW模型的目標單詞在該模型中作為輸入,上下文則作為輸出。

  

  我們使用 來表示輸入層中唯一單詞(也叫中心詞)的輸入向量,所以這樣的話,對隱藏層 的定義意味著 僅僅只是簡單拷貝了輸入層到隱藏層的權重矩陣 中跟輸入單詞 相關的那一行。拷貝公式得到:

  在輸出層,我們輸出 個多項式分布來替代僅輸出一個多項式分布。每個輸出是由同一個隱藏層到輸出層矩陣計算得出的:

  

  這裡 是第 個輸出面上第 個單詞; 是中心詞對應的目標單詞中的第 個單詞; 是中心詞(唯一輸入單詞); 是第 個輸出面上第 個單元的輸出值; 是第 個輸出面上的第 個單元的輸入。因為輸出面共享同一權重矩陣,所以有:

  是詞彙表第 個單詞的輸出向量,可由 矩陣中的所對應的一列拷貝得到。

  Skip-gram的損失函數可以寫為:

  

  由於語料庫非常的大,直接計算中心詞與詞庫中每個單詞的softmax概率不現實。為了解決這個問題,Google提出了兩個方法,一個是Hierarchical Softmax,另一個方法是Negative Sampling。Negative Sampling的思想本身源自於對Noise Contrastive Estimation的一個簡化,具體的,把目標函數修正為:

  

  是噪聲分布 ( noise distribution )。即訓練目標是使用Logistic regression區分出目標詞和噪音詞。另外,由於自然語言中很多高頻詞出現頻率極高,但包含的信息量非常小(如'is' 'a' 'the')。為了平衡低頻詞和高頻詞,利用簡單的概率丟棄詞 :

  其中 是 的詞頻, 的確定比較trick,啟發式獲得。實際中 大約在 附近。

  推薦閱讀Airbnb論文:

  【1】Grbovic M, Cheng H. Real-time personalization using embeddings for search ranking at airbnb[C]//Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining. 2018: 311-320.

  2.2 關於Word2Vec幾個問題思考

  熟悉了Word2Vec的基本原理後,我 們來探究幾個關於Word2Vec的經典面試題。

  (1) Hierarchical Softmax方法中哈夫曼樹是如何初始化生成的?也就是哈夫曼樹是如何構建的呢?

  答:Hierarchical Softmax依據詞頻構建Huffman樹,詞頻大的節點離根節點較近,詞頻低的節點離根節點較遠,距離遠參數數量就多。

  (2)Hierarchical Softmax對詞頻低的和詞頻高的單詞有什麼影響?為什麼?

  答:詞頻高的節點離根節點較近,詞頻低的節點離根節點較遠,距離遠參數數量就多,在訓練的過程中,低頻詞的路徑上的參數能夠得到更多的訓練,所以Hierarchical Softmax對詞頻低的單詞效果會更好。

  (3)Hierarchical Softmax方法中其實是做了一個二分類任務,寫出它的目標函數?

  答:

  其中 是真實標籤, 是模型預測的標籤。

  (4)Negative Sampling是一種什麼採樣方式?是均勻採樣還是其它採樣方法?

  答:詞典 中的詞在語料 中出現的次數有高有低,對於那些高頻詞,被選為負樣本的概率就應該比較大,反之,對於那些低頻詞,其被選中的概率就應該比較小。這就是我們對採樣過程的一個大致要求,本質上就是一個帶權採樣問題。

  (5)詳細介紹一下Word2Vec中負採樣方法?

  答:先將概率以累積概率分布的形式分布到一條線段上,以 為例, 所處線段為 , 所處線段為 , 所處線段為 ,然後定義一個大小為 的數組,並把數組等距離劃分為 個單元,然後與上面的線段做一次映射,這樣我們便知道了數組內的每個單元所對應的字符了,這種情況下算法的時間複雜度為 ,空間複雜度為 , 越小精度越大。

  最後,我們來聊一聊Word2Vec對Embedding技術的奠基性意義。 Word2Vec是由谷歌於2013年正式提出的,其實它並不完全由谷歌原創,對詞向量的研究可以追溯到2003年論文《a neural probabilistic language model》,甚至更早。但正是谷歌對Word2Vec的成功應用,讓詞向量的技術得以在業界迅速推廣,使Embedding這一研究話題成為熱點。毫不誇張地說,Word2Vec對深度學習時代Embedding方向的研究具有奠基性的意義。

  從另一個角度看,在Word2Vec的研究中提出的模型結構、目標函數、負採樣方法及負採樣中的目標函數,在後續的研究中被重複使用並被屢次優化。掌握Word2Vec中的每一個細節成了研究Embedding的基礎。從這個意義上講,熟練掌握本節內容非常重要。

  3. Item2Vec-Word2Vec在推薦領域的推廣

  在Word2Vec誕生之後,Embedding的思想迅速從自然語言處理領域擴散到幾乎所有機器學習領域,推薦系統也不例外。既然Word2Vec可以對詞「序列」中的詞進行Embedding,那麼對於用戶購買「序列」中的一個商品,用戶觀看「序列」中的一個電影,也應該存在相應的Embedding方法,這就是Item2Vec方法的基本思想。

  推薦閱讀Item2Vec論文:

  【1】Barkan O , Koenigstein N . Item2Vec: Neural Item Embedding for Collaborative Filtering[J]. 2016.

  
3.1 Item2Vec的基本原理

  由於Word2Vec的流行,越來越多的Embedding方法可以被直接用於物品Embedding向量的生成,而用戶Embedding向量則更多通過行為歷史中的物品Embedding平均或者聚類得到。利用用戶向量和物品向量的相似性,可以直接在推薦系統的召回層快速得到候選集合,或在排序層直接用於最終推薦列表的排序。正是基於這樣的技術背景,微軟於2016年提出了計算物品Embedding向量的方法Item2Vec。

  微軟將Skip-gram with negative sampling(SGNS)應用在用戶與物品的交互數據中,因此將該方法命名為Item2Vec。

  相比Word2Vec利用「詞序列」生成詞Embedding。Item2Vec利用的「物品集合」是由特定用戶的瀏覽、購買等行為產生的歷史行為記錄序列變成物品集合。通過從物品序列移動到集合,丟失了空間/時間信息,還無法對用戶行為程度建模(喜歡和購買是不同程度的強行為)。好處是可以忽略用戶和物品關係,即便獲得的訂單不包含用戶信息,也可以生成物品集合。而論文的結論證明,在一些場景下序列信息的丟失是可忍受的。

  Item2Vec中把用戶瀏覽的商品集合等價於Word2Vec中的word的序列,即句子(忽略了商品序列空間/時間信息)。出現在同一個集合的商品被視為positive。對於用戶歷史行為物品集合 ,Item2Vec的優化目標函數為:

  

  我們再來看一下,Skip-gram是如何定義目標函數的。給定一個訓練序列 ,模型的目標函數是最大化平均的log概率:

  

  通過觀察上面兩個式子會發現,Item2Vec和Word2Vec唯一的不同在於,Item2Vec丟棄了時間窗口的概念,認為序列中任意兩個物品都相關,因此在Item2Vec的目標函數中可以看到,其是兩兩物品的對數概率的和,而不僅是時間窗口內物品的對數概率之和。

  在優化目標定義好後,Item2Vec訓練和優化過程同Word2Vec一樣,利用負採樣,最終得到每個商品的Embedding representation。利用商品的向量表徵計算商品之間兩兩的cosine相似度即為商品的相似度。

  3.2 雙塔模型-"廣義"的Item2Vec

  3.2.1 DSSM語義召回

  DSSM模型是微軟2013年發表的一個關於query/doc的相似度計算模型,後來發展成為一種所謂」雙塔「的框架廣泛應用於廣告、推薦等領域的召回和排序問題中。我們自底向上來看下圖所示的網絡結構:

  

  

  首先特徵輸入層將Query和Doc(One-hot編碼)轉化為Embedding向量,原論文針對英文輸入還提出了一種word hashing的特殊Embedding方法用來降低字典規模。我們在針對中文Embedding時使用Word2Vec類常規操作即可;

  

  經過Embedding之後的詞向量,接下來是多層DNN網絡映射得到針對Query和Doc的128維語義特徵向量;

  

  最後會使用Query和Doc向量進行餘弦相似度計算得到相似度 ,然後進行softmax歸一化得到最終的指標後驗概率 ,訓練目標針對點擊的正樣本擬合 為 ,否則擬合 為 ;

  

  可以看到 DSSM的核心思想就是將不同對象映射到統一的語義空間中,利用該空間中對象的距離計算相似度 。這一思路被廣泛應用到了廣告、搜索以及推薦的召回和排序等各種工程實踐中。

  事實上,Embedding對物品進行向量化的方法遠不止Item2Vec。廣義上講, 任何能夠生成物品向量的方法都可以被稱為Item2Vec 。典型的例子是曾在百度、Facebook等公司成功應用的雙塔模型,如下圖所示。

  

  圖:百度的「雙塔」模型(來源於參考文獻11)

  百度的雙塔模型分別用複雜網絡對「用戶特徵」和「廣告特徵」進行了Embedding化,在最後的交叉層之前,用戶特徵和廣告特徵之間沒有任何交互,這就形成了兩個獨立的「塔」,因此稱為雙塔模型。

  在完成雙塔模型的訓練後,可以把最終的用戶Embedding和廣告Embedding存入內存資料庫。而在線上inference時,也不用復現複雜網絡,只需要實現最後一層的邏輯(即線上實現LR或淺層NN等輕量級模型擬合優化目標),再從內存資料庫中取出用戶Embedding和廣告Embedding之後,通過簡單計算即可得到最終的預估結果。

  總之,在廣告場景下的雙塔模型中,廣告側的模型結構實現的其實就是對物品進行Embedding的過程。該模型被稱為「雙塔模型」,因此以下將廣告側的模型結構稱為「物品塔」。那麼,「物品塔」起到的作用本質上是接收物品相關的特徵向量,經過「物品塔」內的多層神經網絡結構,最終生成一個多維的稠密向量。從Embedding的角度看,這個稠密向量其實就是物品的Embedding向量,只不過Embedding模型從Word2Vec變成了更為複雜靈活的「物品塔」模型,輸入特徵由用戶行為序列生成的One-hot特徵向量,變成了可包含更多信息的、全面的物品特徵向量。二者的最終目的都是把物品的原始特徵轉變為稠密的物品Embedding向量表達,因此不管其中的模型結構如何,都可以把這類模型稱為「廣義」上的Item2Vec類模型。

  Word2Vec和其衍生出的Item2Vec類模型是Embedding技術的基礎性方法,但二者都是建立在「序列」樣本(比如句子、用戶行為序列)的基礎上的。在網際網路場景下,數據對象之間更多呈現的是圖結構,所以Item2Vec在處理大量的網絡化數據時往往顯得捉襟見肘,這就是Graph Embedding技術出現的動因。

  篇幅有限,我們會在下一篇文章中接著給大家詳細介紹Graph Embedding的相關內容,請大家持續關注~

  
【3】第四範式先薦 第5期 圖推薦算法在E&E問題上的應用,地址:https://mp.weixin.qq.com/s/RTAHBIAPQMqCM8WF6trwug
【4】圖推薦算法在E&E問題上的應用,地址:https://mp.weixin.qq.com/s/KSW47hbNLaHTw9Ib0wMO8g
【5】Embedding在推薦算法中的應用總結 - 夢想做個翟老師的文章 - 知乎 https://zhuanlan.zhihu.com/p/78144408
【6】Graph Embedding:深度學習推薦系統的"基本操作" - 顧鵬的文章 - 知乎 https://zhuanlan.zhihu.com/p/68247149
【7】word2vec詳解(CBOW,skip-gram,負採樣,分層Softmax) - 孫孫的文章 - 知乎 https://zhuanlan.zhihu.com/p/53425736
【8】推薦召回算法之深度召回模型串講 - 深度傳送門的文章 - 知乎 https://zhuanlan.zhihu.com/p/63343894
【9】現階段各家公司的廣告算法使用的主流模型有哪些?- 付鵬的回答 - 知乎 https://www.zhihu.com/question/352306163/answer/902698330
【10】深度學習技術在美圖個性化推薦的應用實踐,地址:https://mp.weixin.qq.com/s/b8DkQWZbUc5-jzWKBd8iUA
【11】如何解決推薦系統工程難題——深度學習推薦模型線上serving?- 王喆的文章 - 知乎 https://zhuanlan.zhihu.com/p/77664408

  正式啟動啦!

  關於我「門」

  

  將門是一家以專注於發掘、加速及投資技術驅動型創業公司的新型創投機構,旗下涵蓋將門創新服務將門技術社群以及將門創投基金

  將門成立於2015年底,創始團隊由微軟創投在中國的創始團隊原班人馬構建而成,曾為微軟優選和深度孵化了126家創新的技術型創業公司。

  如果您是技術領域的初創企業,不僅想獲得投資,還希望獲得一系列持續性、有價值的投後服務,歡迎發送或者推薦項目給「門」:

  bp@thejiangmen.com

  

  微信:thejiangmen

  bp@thejiangmen.com

相關焦點

  • 深度學習推薦系統中各類流行的Embedding方法 (下)
    形式上來說,Embedding就是用一個低維的向量表示一個物體,可以是一個詞,一個商品,或是一個電影。作為深度學習的「基本核心操作」,Embedding技術已經在深度學習推薦系統中被廣泛應用,在Youtube、Airbnb等各類推薦系統中都有涉及。更多Embedding技術,可以參考往期文章:深度學習推薦系統中各類流行的Embedding方法 (上)。
  • 深度學習中不得不學的Graph Embedding方法
    word2vec和由其衍生出的item2vec是embedding技術的基礎性方法(我在之前的文章中也詳細介紹了二者的技術原理,王喆:萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec,連結:https://zhuanlan.zhihu.com/p/53194407),但二者都是建立在「序列」樣本(比如句子、推薦列表)
  • Graph Embedding:深度學習推薦系統的基本操作
    本期我們關注 Graph Embedding,不但可以「實踐」很多圖算法,更可以快速了解 Embedding 在深度學習推薦系統中的使用,從 Word2Vec 到 DeepWalk,從 LINE 到 Node2Vec,希望能收穫滿滿~ 另外,推薦一個知乎專欄:王喆的機器學習筆記,關於 Graph Embedding,專欄用了幾篇文章相對系統地進行了說明,閱讀之後受益很多。
  • 深度學習在推薦系統上的應用
    確實深度學習很火,近期深度學習的戰火燒到推薦系統,其強大的表徵能力和低準入門檻,已經成為各大高校和中國人改網絡發paper的紅利時代。可是我還沒能發上那麼幾篇,之前面試大廠的AI labs被總監虐,感覺工作之後被壓榨太多,快幹了。推薦系統為什麼引入深度學習?
  • 萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec
    (https://zhuanlan.zhihu.com/wangzhenotes) 的第四篇文章,之前我們一起討論了阿里的DIN,YouTube的深度學習推薦系統,本來今天想再分享另一篇科技巨頭的業界前沿文章,Airbnb的Embedding方法 但因為文章中涉及word2vec的技術細節,為了保證一些初學者的知識是自洽的,我還是想在此之前詳細介紹一下深度學習的基本操作
  • 重讀Youtube深度學習推薦系統論文,字字珠璣,驚為神文
    AI 前線導讀:2016 年,Youtube 發布了一篇深度推薦系統論文《Deep Neural Networks for YouTube Recommendations》,按照今天的標準來看,已經沒有什麼新穎的地方。
  • 重讀 Youtube 深度學習推薦系統論文,字字珠璣,驚為神文
    第一遍讀這篇論文的時候,我想所有人都是衝著算法的架構去的,在深度學習推薦系統已經成為各大公司「基本操作」的今天,Youtube 在算法架構上並無驚奇之處,我們來快速介紹一下文章中的深度學習推薦系統的算法架構。Youtube 的用戶推薦場景自不必多說,作為全球最大的 UGC 的視頻網站,需要在百萬量級的視頻規模下進行個性化推薦。
  • 【推薦實踐】深度學習在阿里B2B電商推薦系統中的實踐
    推薦導購場景在電商中是重要的滿足用戶"逛"和"買"的場景,本次分享我們聚焦深度學習在阿里B2B電商 ( 1688 ) 推薦系統中的應用,其中包括商品推薦中召回 ( 多興趣Deep Match ),排序 ( 自研DMR ) 的相關工作,以及在新興的互動內容場景 ( 直播、短視頻 ) 中通過異構網絡來解決異構信息的精準匹配問題。
  • YouTube深度學習推薦系統的十大工程問題
    文 | 王喆源 | https://zhuanlan.zhihu.com/p/52504407這篇文章主要介紹了YouTube深度學習系統論文中的十個工程問題,為了方便進行問題定位,我們還是簡單介紹一下背景知識,簡單回顧一下YouTube的深度推薦系統論文Deep Neural Networks
  • 推薦系統遇上深度學習(八)--AFM模型理論和實踐
    推薦系統遇上深度學習系列:推薦系統遇上深度學習(一)--FM模型理論和實踐推薦系統遇上深度學習(二)--FFM
  • 應用在大規模推薦系統,Facebook提出組合embedding方法|KDD 2020
    實驗結果表明,該方法比hash技巧更有效,同時也能使參數量減小,可減少模型損失和準確性,減少embedding table的大小。問題現有的推薦系統一般將類別特徵用embedding表示,對於那種千萬維度的特徵,將其映射為100維的embedding 向量。
  • 深度學習Keras中的Embedding層的理解與使用
    相反,在嵌入中,單詞由密集向量表示,其中向量表示將單詞投影到連續向量空間中。向量空間中的單詞的位置是從文本中學習的,並且基於在使用單詞時圍繞單詞的單詞。學習到的向量空間中的單詞的位置被稱為它的嵌入:Embedding。
  • 推薦系統遇上深度學習(六)--PNN模型理論和實踐
    作者:石曉文   中國人民大學信息學院在讀研究生個人公眾號:小小挖掘機(ID:wAIsjwj)
  • 深度學習算法(第24期)----自然語言處理中的Word Embedding
    上期我們一起學習了RNN的GRU模塊,深度學習算法(第23期)----RNN中的
  • 深度學習與PaddlePaddle的應用-個性化推薦
    作者:沈克強 來源:人工智慧學習圈I 研究背景推薦系統(Recommender System)是向用戶建議有用物品的軟體工具和技術,它運用數據分析、數據挖掘等技術,實現對用戶瀏覽信息或商品進行智能推薦,是機器學習,尤其是深度學習算法的重要應用場景。
  • 推薦系統遇上深度學習(二十)--貝葉斯個性化排序(BPR)算法原理及實戰
    ,並使用現有分類、回歸等方法進行實現。第二類排序算法是成對方法(Pairwise Approach),在序列方法中,排序被轉化為對序列分類或對序列回歸。所謂的pair就是成對的排序,比如(a,b)一組表明a比b排的靠前。第三類排序算法是列表方法(Listwise Approach),它採用更加直接的方法對排序問題進行了處理。它在學習和預測過程中都將排序列表作為一個樣本。排序的組結構被保持。
  • 看Youtube怎麼利用深度學習做推薦
    該文是對《Deep Neural Networks for YouTube Recommendations》論文的精讀筆記,這篇論文是介紹深度學習在推薦系統領域應用的經典之作。可以想見,Youtube的推薦系統所要面臨的問題:如何平衡Explore/Exploit,使模型具備「推新」能力而正如文中所說,Youtube與Google的其他業務線,正在經歷一次技術變革,即,將深度學習技術作為一種通用解決方案,來解決所有機器學習問題。因此,看Youtube是如何在運用深度學習的過程中,解決以上這些難題,對於搭建我們自己的推薦系統,具有極大的借鑑意義。
  • Tensroflow練習,包括強化學習、推薦系統、nlp等
    4、推薦系統推薦系統遇上深度學習(一)--FM模型理論和實踐推薦系統遇上深度學習(二)--FFM模型理論和實踐推薦系統遇上深度學習(三)--DeepFM模型理論和實踐推薦系統遇上深度學習(四)--多值離散特徵的embedding解決方案推薦系統遇上深度學習(五)--Deep&Cross Network模型理論和實踐推薦系統遇上深度學習
  • 多目標學習在推薦系統中的應用
    多目標學習提出的背景一般來說在搜索和推薦等信息檢索場景下,最基礎的一個目標就是用戶的 CTR,即用戶看見了一篇內容之後會不會去點擊閱讀。但其實用戶在產品上的行為是多種多樣的。比如在微信的訂閱號中,用戶可以對某個內容進行點讚,可以收藏這個內容,可以把它分享出去,甚至某篇文章如果他覺得比較符合他的興趣,也可以進行留言。
  • 用DNN構建推薦系統-Deep Neural Networks for YouTube Recommendations論文精讀
    之所以要在推薦系統中應用DNN解決問題,一個重要原因是google內部在機器學習問題上的通用solution的趨勢正轉移到Deep learning,系統實際部署在基於tensorflow的Google Brain上。一、系統概覽在工業界工作的同學對下圖的系統劃分並不陌生。