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

這篇文章中,我希望單獨將 Embedding 技術抽取出來進行講解。因為作為深度學習 CTR 模型中基礎性的,也是不可或缺的“基本操作”,Embedding 技術發揮著至關重要的作用。

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

具體來講,Embedding 技術在深度學習 CTR 模型中主要應用在下面三個方向:

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

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

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

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


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

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

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

a 微軟 Deep Crossing 模型

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

b Google W&D 中的 Deep 部分

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

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

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

圖 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)。

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

圖 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)的解決方案是典型的做法。

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

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

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

大數據的學習有一定難度,加米穀大數據培訓,6月大數據開發0基礎班、提高班,成都小班面授,預報名中!完成大數據培訓的相關課程,可以在加米穀大數據申請考取[大數據專業人才技能證書](大數據工程師證書,數據分析師證書)。

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

作者:王喆,畢業於清華大學計算機系,現在美國最大的 smartTV 公司 Roku 任 senior machine learning engineer.

相關推薦

推薦中...