推薦系統工程師必看:Embedding技術在深度學習CTR模型中的應用

本文是王喆在 AI 前線 開設的原創技術專欄“深度學習 CTR 預估模型實踐”第五篇文章(以下“深度學習 CTR 預估模型實踐”簡稱“深度 CTR 模型”)。回顧王喆老師過往精彩文章:《谷歌、阿里等10大深度學習CTR模型最全演化圖譜》《重讀 Youtube 深度學習推薦系統論文,字字珠璣,驚爲神文》《YouTube 深度學習推薦系統的十大工程問題》

在專欄之前的文章中,我們總結了深度學習CTR模型的發展過程和各模型的特點。這篇文章中,我希望單獨將Embedding技術抽取出來進行講解。因爲作爲深度學習CTR模型中基礎性的,也是不可或缺的“基本操作”,Embedding技術發揮着至關重要的作用。具體來講,Embedding技術在深度學習CTR模型中主要應用在下面三個方向:

  1. 在深度學習網絡中作爲Embedding層,完成從高維稀疏特徵向量到低維稠密特徵向量的轉換;

  2. 作爲預訓練的Embedding特徵向量,與其他特徵向量連接後一同輸入深度學習網絡進行訓練;

  3. 通過計算用戶和物品的Embedding相似度,Embedding可以直接作爲推薦系統或計算廣告系統的召回層或者召回方法之一。

下面逐一介紹Embedding與深度學習CTR模型結合的具體方法。

一、深度學習網絡中的Embedding層

由於高維稀疏特徵向量天然不適合多層複雜神經網絡的訓練,因此如果使用深度學習模型處理高維稀疏特徵向量,幾乎都會在輸入層到全連接層之間加入Embedding層完成高維稀疏特徵向量到低維稠密特徵向量的轉換。典型的例子是微軟的Deep Crossing模型和Google的Wide&Deep模型的深度部分(如圖1)。

image
a 微軟Deep Crossing模型

image
b Google W&D 中的Deep部分

圖1 Deep Crossing和Wide&Deep模型結構

讀者可以清晰地看到Deep Crossing模型中的Embedding層將每一個Feature轉換成稠密向量,Wide&Deep模型中Deep部分的Dense Embeddings層同樣將稀疏特徵向量進行轉換。廣義來說,Embedding層的結構可以比較複雜,只要完成高維向量的降維就可以了,但一般爲了節省訓練時間,深度神經網絡中的Embedding層是一個高維向量向低維向量的直接映射(如圖2)。

image

圖2 Embedding層的圖示和矩陣表達

用矩陣的形式表達Embedding層,本質上是求解一個m(輸入高維稀疏向量的維度) x n(輸出稠密向量的維度)維的權重矩陣的過程。如果輸入向量是one-hot特徵向量的話,權重矩陣中的列向量即爲相應維度one-hot特徵的embedding向量。

將Embedding層與整個深度學習網絡整合後一同進行訓練是理論上最優的選擇,因爲上層梯度可以直接反向傳播到輸入層,模型整體是自洽和統一的。但這樣做的缺點同樣顯而易見的,由於Embedding層輸入向量的維度甚大,Embedding層的加入會拖慢整個神經網絡的收斂速度。

這裏可以做一個簡單的計算。假設輸入層維度是100,000,embedding輸出維度是32,上層再加5層32維的全連接層,最後輸出層維度是10,那麼輸出層到embedding層的參數數量是32100,000= 3,200,000,其餘所有層的參數總數是 (3232)4+3210=4416。那麼embedding層的權重總數佔比是 3,200,000 / (3,200,000 + 4416) = 99.86%。

也就是說embedding層的權重佔據了整個網絡權重的絕大部分。那麼訓練過程可想而知,大部分的訓練時間和計算開銷都被Embedding層所佔據。正因爲這個原因,Embedding層往往採用預訓練的方式完成。

二、Embedding的預訓練方法

通過上面對Embedding層的介紹,讀者們已經知道Embedding層的訓練開銷是巨大的。爲了解決這個問題,Embedding的訓練往往獨立於深度學習網絡進行。在得到稀疏特徵的稠密表達之後,再與其他特徵一起輸入神經網絡進行訓練。典型的採用Embedding預訓練方法的模型是FNN(如圖3)。

image

圖3 FMM模型結構

FNN利用了FM訓練得到的物品向量,作爲Embedding層的初始化權重,從而加快了整個網絡的收斂速度。在實際工程中,直接採用FM的物品向量作爲Embedding特徵向量輸入到後續深度學習網絡也是可行的辦法。

再延伸一點講,Embedding的本質是建立高維向量到低維向量的映射,而“映射”的方法並不侷限於神經網絡,實質上可以是任何異構模型,這也是Embedding預訓練的另一大優勢。典型的例子是2013年Facebook提出的著名的GBDT+LR的模型,其中GBDT的部分本質上是完成了一次特徵轉換,也可以看作是利用GBDT模型完成Embedding預訓練之後,將Embedding輸入單層神經網絡進行CTR預估的過程。

2015年以來,隨着大量Graph Embedding技術的發展,Embedding本身的表達能力進一步增強,而且能夠將各類特徵全部融合進Embedding之中,這使Embedding本身成爲非常有價值的特徵。這些特點都使Embedding預訓練成爲更被青睞的技術途徑。

誠然,將Embedding過程與深度網絡的訓練過程割裂,必然會損失一定的信息,但訓練過程的獨立也帶來了訓練靈活性的提升。舉例來說,由於物品或用戶的Embedding天然是比較穩定的(因爲用戶的興趣、物品的屬性不可能在幾天內發生巨大的變化),Embedding的訓練頻率其實不需要很高,甚至可以降低到周的級別,但上層神經網絡爲了儘快抓住最新的正樣本信息,往往需要高頻訓練甚至實時訓練。使用不同的訓練頻率更新Embedding模型和神經網絡模型,是訓練開銷和模型效果二者之間權衡後的最優方案。

三、Embedding作爲推薦系統或計算廣告系統的召回層

隨着Embedding技術的進步,Embedding自身的表達能力也逐步增強,利用Embedding向量的相似性,直接將Embedding作爲推薦系統召回層的方案越來越多的被採用。其中Youtube推薦系統召回層(如圖4)的解決方案是典型的做法。

image

圖4 Youtube採用Embedding作爲推薦系統召回層

我曾經在文章《重讀Youtube深度學習推薦系統論文,字字珠璣,驚爲神文》中介紹過了Youtube利用深度學習網絡生成Video Embedding和User Embedding的方法。利用最終的Softmax層的權重矩陣,每個Video對應的列向量就是其Item Embedding,而Softmax前一層的輸出就是User Embedding。在模型部署過程中,沒有必要部署整個深度學習網絡來完成從原始特徵向量到最終輸出的預測過程,只需要將User Embedding和Item Embedding存儲到線上內存數據庫,通過內積運算再排序的方法就可以得到item的排名。這大大加快了召回層的召回效率。

事實上,除了上述的三種主要的Embedding應用方向,業界對於Embedding的創新性研究不僅沒有停止,而且有愈演愈烈之勢,阿里的EGES,Pinterest的GNN應用,Airbnb基於Embedding的搜索模型等大量表達能力非常強的Embedding方法的誕生,使Embedding本身就已經成爲了優秀的CTR模型和推薦系統模型。作爲計算廣告和推薦系統領域的從業者,無論如何強調Embedding的重要性都不過分,也希望今後能與大家繼續分享Embedding領域的前沿知識。

《深度學習 CTR 預估模型實踐》專欄內容回顧:

  1. 深度學習 CTR 預估模型憑什麼成爲互聯網增長的關鍵?

  2. 前深度學習時代 CTR 預估模型的演化之路——從 LR 到 FFM

  3. 盤點前深度學習時代阿里、谷歌、Facebook的CTR預估模型

  4. 谷歌、阿里等10大深度學習CTR模型最全演化圖譜

作者介紹

王喆,畢業於清華大學計算機系,現在美國最大的 smartTV 公司 Roku 任 senior machine learning engineer,曾任 hulu senior research SDE,7 年計算廣告、推薦系統領域業界經驗,相關專利 3 項,論文 7 篇,《機器學習實踐指南》、《百面機器學習》作者之一。知乎專欄 / 微信公衆號:王喆的機器學習筆記。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章