深度學習技術在美圖個性化推薦的應用實踐

美圖秀秀社交化的推進過程中,沉澱了海量的優質內容和豐富的用戶行爲。推薦算法連接內容消費者和生產者,在促進平臺的繁榮方面有着非常大的價值 。本次分享探討美圖在內容社區推薦場景下應用深度學習技術提升點擊率、關注轉化率和人均時長等多目標的實踐經驗。

美圖社區個性化推薦場景與挑戰

1. 業務場景

美圖社區個性化推薦場景大大小小有十多個,其中流量比較大的場景是美圖秀秀 app 的社區內容推薦 tab ( 圖1 ),這個場景以雙列瀑布流的形態給用戶推薦他最感興趣的內容。

當用戶點擊感興趣的圖片後會進入圖1-2的相似推薦 feeds 流場景。在這個場景下, 用戶消費的圖片和視頻,都是和用戶剛剛點擊進來圖片是具有多種相似性的,如視覺、文本、topic 等。而如果用戶是從雙列瀑布流裏點擊視頻,則會進入到圖1-3的視頻 feeds 流場景。這個場景主打讓用戶有沉浸式的消費體驗。以上是美圖社區內容推薦的主要業務場景。

美圖個性化推薦業務場景
  1. 工作目標

個性化推薦的首要目標是理解內容。從內容本身的視覺、文本以及特定場景下用戶的行爲來理解社區裏可用於推薦的內容。接下來是理解用戶,通過用戶的基礎畫像 ( 年齡,性別等 )、設備畫像 ( OS,機型等 ),以及用戶的歷史行爲來挖掘其興趣偏好。

再理解了社區的內容和用戶之後,纔是通過大規模的機器學習算法進行精準推薦,千人千面地連接用戶與內容,從而持續提升用戶體驗,促進社區繁榮。

圖2 美圖個性化推薦業務目標

3. 挑戰

在實際生產實踐過程當中,主要遇到挑戰如下:

海量

美圖內容社區有月活超過1億的用戶,每天有100多萬的候選圖片和視頻。在這種數據規模下,只在小數據規模下驗證有效的複雜算法模型無法直接應用到工業界線上系統。

實時

算法需要在端到端小於 300ms 的時延裏,每天處理超過3億的個性化排序請求。這要求召回和排序算法不能過於複雜,要能夠進行高效的計算。

長尾

在實際場景中,用戶分佈以及 item 行爲分佈都是長尾的:

用戶分佈的長尾性:新用戶佔比超過27%;

曝光分佈的長尾性:關注<< 點擊<<曝光。

在這樣長尾數據上進行預估要求我們的模型具備穩定的泛化能力。

圖3 美圖個性化推薦的挑戰

美圖深度學習技術棧——召回端

在上述的應用場景和技術挑戰下,美圖是如何將深度學習應用到個性化推薦中的召回端和排序端的呢?我將會在下面爲大家一一介紹。

召回端的 Item embedding 技術和召回模型,用於從百萬級別的候選集裏挑選 TOP 500個用戶最感興趣的候選集。相對於召回端,排序端的深度排序模型能夠融合多種召回來源並進行統一排序,排序模型能包容規模更大的細粒度特徵,相對召回模型,排序模型能夠實現更加精準的推薦。

美圖目前部署在線上系統的召回技術主要包括 Item2vec,YouTubeNet,以及雙塔 DNN。

1. Item2vec

Item2vec,是一種通過用戶行爲來理解內容的方式。

傳統的理解內容方式是基於用戶行爲構造 item 側的統計類特徵,例如 item 的點擊率,收藏率等。這些特徵是非常有效的,但是對內容的理解維度比較單一。

另一種方式是從圖片的本身的視覺來提取比如圖片質量、清晰度、圖片物體等等。還可以通過內容本身的文本特徵,比如關鍵詞,實體詞等等,來幫助理解內容。這些維度的特徵在內容冷啓動中是很有效的。但是他們無法表達內容的某些潛在特性,比如某個內容是否給用戶呈現出清新有趣的感覺。這種潛在的特徵藉助用戶的行爲來理解比較合適。Item2vec 正是這樣一種技術,它基於短時間內被瀏覽的 item 具有內在相似性的假設來學習 item 的 embedding。

在圖4中可以看到 item2vec 在美圖社區圖片上的部分效果。可以看到和查詢圖在訓練數據中高頻共現和中頻共現的 item,在背景和主體人物上和查詢詞是高度相似的。而低頻共現的部分和我們的查詢圖片有些差異,不過主體內容總體上還是比較相似的。

總體而言,item2vec 是一種學習 item embedding 的成熟方案。

Item2vec 可視化效果

Item2vec 學習出來的 item 向量是美圖多種向量檢索式召回策略的底層數據,包括實時興趣,短期興趣等等。比如當用戶點擊了某個 item,系統會實時地通過向量內積運算查詢相似的 item 並插入到召回源頭部,用於下一輪的排序。

使用 item2vec 學習出來的 item 向量作爲底層數據的召回策略,在美圖應用非常廣泛,它們在整體曝光中佔了10%以上。

實際應用時,我們是基於 skip-gram+negative sampling 來做 item2vec 的。它是一個只有一個隱層的深度學習模型。輸入端是用戶的點擊序列, 輸出端是與輸入端的 target item 鄰近的64個 item。64相對於 NLP 裏取的5-6個是比較大的,這是因爲用戶的點擊序列不像自然語言那樣具有嚴格的局部空間句法結構。在比較大上下文窗口中,更容易找到和目標 item 相似的上下文 item,模型更容易學習。

圖5 item2vec 應用實踐

負採樣的個數是正樣本數的兩倍,這是一個效果和性能折中,在我們的應用中正負樣本數1:2,能夠在天級別模型更新情況下,取得比較好效果。隱層的 embedding size 取128可以得到比較好的效果, 這個取值同樣是效果和性能的折中。另外,我們過濾了點擊序列長度小於5的樣本,這樣過濾之後,我們的點擊序列能覆蓋99%候選圖片和視頻。

Item2vec 是學習 item embedding 向量的一種非常好的方案,它也覆蓋了美圖多個推薦業務。但是它不直接考慮用戶的個性化行爲,只考慮了訓練樣本中 item 與 item 之間的局部共現關係。如果要利用上豐富的用戶側特徵,實現個性化的話,那麼我們需要借鑑其他方案,而 YouTubeNet 正是這樣一種業界成熟的方案。

2. YouTubeNet

YouTubeNet 是 Google 於2016年提出的。與 item2vec 不同,YouTubeNet 在學習 item 向量的時候考慮了用戶向量。從模型的優化目標上可以看出,是在給定用戶向量的情況下,從候選池中篩選出該用戶最感興趣的 item 列表。

圖6-1 YouTubeNet 應用實踐

從上圖右側模型架構圖可以看到,模型訓練用的label是用戶最近點擊過的 item 列表,特徵包括兩部分,一部分是用戶更早之前點擊過的列表 ( clicked_item_list ),另一部分是用戶的 demographic 統計特徵,如年齡、性別等。引入上述用戶的個性化信息之後,模型通過學習 user embedding 和 item embedding,並離線導出用戶向量和 item 向量。線上使用時利用 FAISS 工具離線計算好每個用戶的 top N 候選 item 集,提供給排序算法使用。不過這種離線存儲候選集的方式,不能實時應對用戶不斷變化的興趣,要捕獲這種變化,需要實時採集用戶不斷變化的點擊 item 數據,實時計算用戶側向量。

實時計算用戶側向量的工作,一共分了兩部分:第一部分是離線部分,爲下圖右側的虛線部分,這裏模型一天一更新。離線部分基本流程和上一段所述相同,模型訓練完之後導出 item 向量並在 FAISS 中構建好索引。第二部分是實時部分,這一部分藉助 kafka,實時採集用戶點擊行爲數據並構建 clicked_item_list 特徵,接着請求離線訓練好的模型,計算出用戶側向量,最後從 FAISS 中查詢的候選集,輸出給排序服務。

使用 YouTubeNet 模型實現實時計算用戶側向量之後,曝光佔比22%的 YouTubeNet 給整體帶來了點擊率3.67%的提升,人均時長提升2.22%。

圖6-2 YouTubeNet 應用實踐
  1. 雙塔 DNN

雙塔 DNN 模型,聯合用戶行爲和 item 側特徵進行召回。雙塔 DNN 模型構建用戶側 embedding 的方式和 YouTubeNet 是一樣的:先給用戶的點擊行爲序列,年齡性別等稀疏的特徵做 embedding,再經過幾個簡單的全連接層,得到用戶側向量。對於 item 側特徵,雙塔 DNN 引入另一個子網絡來學習,學習方式和用戶側特徵是一樣的。

離線訓練完了之後和 YouTubeNet 還是一樣,把 item 向量提前導出並加載到 FAISS。在線上環境使用的時候,實時計算用戶側向量,來快速捕獲用戶興趣。引入 item 側特徵,使得線上用戶點擊率提升1.05%,人均時長提升0.76%。

圖7 雙塔 DNN
  1. 總結

Item2vec 學習出來的 item 向量具有很好的相似性,作爲底層數據,服務了多個召回策略, 在美圖具有非常廣泛的應用。包括實時興趣,短期興趣等等,覆蓋了10%以上的曝光佔比。YouTubeNet 和雙塔 DNN 則分別引入用戶側和 item 側特徵,有監督地學習用戶最感興趣的 item 候選集,在美圖個性化推薦召回層,累計點擊率提升了4.72%,時長提升了2.98%。

美圖深度學習技術棧——排序端

1. 重新審視 NFM 模型

美圖的第一代模型主打 LR 爲主+人工特徵組合。隨着業務發展,大大小小的推薦場景越來越多,做特徵的人力越來越緊張。恰逢深度學習在工業級推薦系統有大規模應用落地實踐,因而逐漸將算法模型轉向深度學習。

圖8 NFM 模型

2018年年初,美圖用 NFM 模型首次打敗 LR 並取得穩定效果,NFM 模型創造性的將 FM 和深度模型端到端的聯合訓練,在底層就進行顯示的特徵交叉,NFM 論文的實驗和美圖數據集上的實驗都表明了模型能夠收斂更快也更加穩定。在美圖的實踐中,引入右側多層感知機學習隱式的高階特徵交叉之後,效果進一步提升,好於原始的 NFM 模型。改進後的 NFM 模型在我們的推薦流場景中取得了5.5%的點擊率,以及將近7%的時長提升。

在 NFM 模型取得穩定的正向效果之後,美圖推薦團隊繼續探索了業界更多的模型。不過都未能落地,主要有以下兩個原因。

第一個是像 Wide&Deep, DeepFM, DCN 等從模型的複雜度上看沒有比 NFM 擁有更強的預估能力,計算效率也沒有明顯優勢。離線評估和線上實驗上都沒有得到正向效果。

第二種情況是,xDeepFM 和 NFFM 離線指標提升了,但是計算複雜度很高。此外 NFFM 模型參數量大,內存是個瓶頸。導致它倆無法大規模落地。

經過一年多的探索,在業界的衆多模型中我們沒有找到合適美圖推薦場景的排序算法。另外,在我們引入行爲序列特徵之後,NFM 的計算複雜度已經不能很好的支持線上流量。在這樣的背景下,美圖算法團隊決定自行設計算法。

NFM 模型的優點在於,通過 Bi-Interaction,將 FM 模型端到端引入到深度模型,顯式構建特徵的乘性關係,加強模型預估能力,同時沒有增加時間複雜度。但是在實際生產實踐中,存在2個

不足:

(1) NFM 需要足夠的 Embedding layer 寬度來學習特徵。在實際場景下,其寬度取200左右,效果最好。但是隨着百萬級別用戶行爲序列特徵的加入,NFM 模型的計算量越來越大,越來越不能滿足線上小於 300ms 的時延要求。

(2) 另一個不足是,NFM 模型本身存在 co-training 的問題,即:一個特徵的學習,會不可避免地受到其他特徵的影響。例如,用戶的性別特徵,與用戶的網絡環境特徵是不相關的;但是 NFM 模型無法構建這種情況。

圖9 NFM 模型的不足

基於以上不足,我們先來看下業界相關經驗:

不管是在傳統淺層模型時代還是在深度學習時代,引入特徵的 field 信息之後,模型幾乎是總能帶來提升的。比如 FFM 仍然一直活躍在 Kaggle 等 CTR 預估比賽中,穩定的取得比不能建模 field 信息的 FM 更好的效果。而深度學習時代,業界很多公司比如2018年, 微軟離線驗證 xDeepFM 引入特徵的 field 信息之後,相對不能建模 field 信息的 DCN 同樣取得了很明顯的提升,即便在現在,xDeepFM 仍然是很優秀的模型。但是他們或者計算量太高或者參數量太大,導致無法大規模應用到線上系統。基於上面對 NFM 模型的優點的實驗和分析,美圖算法團隊開始嘗試 NFwFM 模型。

2. NFwFM 模型

2.1 模型整體架構

NFwFM 模型是在 FwFM 模型的基礎上演化出來的:通過 Field-wise Bi-Interaction 組件,將 FwFM 引入到深度模型裏面。

圖10-1 NFwFM 模型整體架構

上圖是 NFwFM 模型的整體架構,首先,把特徵按照邏輯分爲3個大模塊:用戶側特徵 ( 包括年齡、性別等 ),item 側特徵 ( 包括 item id,item 標籤等 ) 以及上下文側特徵。

接下來將 FwFM 分解成了3個子模塊:第一個模塊是線性加和模塊 ( 上圖中 S 表示 ),不區別 field 學習的特徵;第二個模塊是矩陣分解模塊 ( 上圖中的 MF 部分 ),用來學習 field 粒度下的特徵組合,比如 user field 和 item field 的二階交叉;第三個模塊是 FM 模塊,用來學習 field 內部 feature 粒度的特徵組合。

2.2 FwFM 和 FFM 相比

(1) FwFM 模型尺寸相對 FFM 少 M-1 倍。在美圖實際應用中,特徵量大約可減少30倍。

(2) FwFM 模型引入了 Field 相關的權重 ri,j ,解決了 FM 存在的不相關特徵在學習過程中互相干擾的問題。

(3) 離線評估顯示,FwFM 模型的預測性能 ( 例如 AUC 指標 ) 和 FFM 基本一致,而參數規模大大降低。

FwFM 模型由於要建模 field 信息,導致它無法像 FM 那樣具備良好的線性時間複雜度。因此,需要將 FwFM 做矩陣分解 ( 上面架構圖中的 MF 模塊 )。

2.3 MF 模塊

如下圖所示,模型分別從用戶側和 item 側提取特徵向量 v i   和 v j ,在這兩個向量上進行矩陣分解,用來學習 field 粒度的特徵組合。實際應用中,需要分別對用戶側、item 側、context 側進行兩兩矩陣分解,因此共有3個矩陣分解子模塊。

通過離線評估顯示,MF 分解前後的 FwFM 模型,其 AUC 等指標持平,但是相同參數規模下計算量降低 M*M 倍,計算效率大大提升。

2.4 FM 模塊

但是,MF 分解也會存在不足,例如:對於用戶側存在的豐富多樣的特徵,沒有辦法使用矩陣分解進行兩兩二階交叉。

因此,在 field 內部引入 FM,用來顯式學習用戶側 feature 粒度的所有特徵的二階交叉組合。具體來講,給 user field 引入一個 FM 模型,對用戶的年齡、性別等特徵的二階交叉,同樣的算法也用於 item field 等。這樣,FwFM 模型就演化成了下圖這樣一個 Field-wise Bi-Interaction 組件。引入 FM 模型後,模型的 AUC 指標提升了約0.002。

2.5 解決特徵間干擾問題

但是這樣並沒有解決最一開始提到的問題:FM 模型在學習過程中,特徵存在互相干擾的情況。

回顧一下前文所述的特徵間干擾問題,即 FM 的 co-training 問題:

模型在對每一個特徵進行學習的時候,都需要和其他特徵進行交叉。例如,用戶性別特徵和網絡環境特徵應該是不相關的,但是模型在學習性別特徵的時候不可避免地受到網絡環境的影響。

爲解決這一問題,借鑑 dropout 思路:模型訓練完成 Bi-Interaction 後,按照伯努利分佈 ( 期望爲 β ) 隨機丟棄部分二階交叉項,以解決部分 co-training 問題。

具體來講,先從伯努利分佈中採樣出由{0,1}組成的向量,再用該向量和 FM 模型計算得到的表示二階特徵交叉組合的向量進行相乘,這樣可以隨機丟棄部分二階交叉項。在預估的時候是將 FM 做了 Bi-Interaction 後得到的向量,乘以伯努利分佈的期望 β,用來對齊計算過程中丟失的數據的大小。引入如上思路之後,AUC 提升約0.001。

2.6 總結

總體來講,我們從 FwFM 演化出 Field-wise Bi-Interaction 組件,包含線性加和模塊用來學習一階特徵,還包括矩陣分解 ( MF ) 模塊和 FM 模塊,用來學習特徵 field 粒度和 feature 粒度的特徵交叉。相比於上一代 NFM 模型,使用這樣的模型,在計算量和參數量都減少了6倍的情況下,點擊率得到了5.19%的提升。

3. Multi-task NFwFM

3.1 多任務基本架構

接下來是多任務方面的工作。在深度學習時代,深度模型能夠包含多種不同分佈的樣本,釋放了多任務學習的最大價值。從實踐角度考量,爲使離線訓練和在線預估效率較高,目標個數具有可拓展性。業界通常會選擇下圖中這種底層硬共享 ( hard-sharing ) 隱層的多任務架構,在這種架構下,因爲點擊率和關注轉化率任務是強相關的工作,能增加共享隱層的學習速度,從而增加模型的收斂效率,而這兩個任務中不相關的部分可以認爲是相互任務的噪聲,可以增強模型的泛化能力。

在學習的過程中,是利用兩個任務簡單加和的方式來學習多目標的。這個方式的離線 AUC 和單獨的點擊用戶模型的 AUC 基本持平;線上點擊率提升1.93%,關注轉化率提升2.90%。

在實際情況中,點擊和關注的樣本比例大概爲100:1;在這樣很少的關注樣本的情況下,使用上述的多任務架構就可以得到穩定的提升;這驅使我們引入更多的關注數據,來壓榨多任務模型學習更多更高質量數據的能力。

3.2 樣本 reweight

具體來說,我們引入一個樣本 reweight 的概念,主要目的是爲了引入更多更高質量的關注行爲數據。因爲無數的經驗告訴我們這是非常有效的做法。

以下圖爲例,假設有A、B、C、D這4個 item,圖中實線部分表示 item 的真實 CTR ( 由大到小分別是 C > D > B > A );而實際的關注轉化率的關係是 A > C > B > D = 0。

我們用實際的關注轉化率取 reweight 這個樣本之後,得到下圖虛線部分的結果:C > D > A > B,即原本點擊率最低的 item A,在 reweight 之後由於關注轉化率高而變得點擊率比 B 更高,這樣 item A 更容易被模型推薦出來, 這樣就能夠提升整體的關注轉化率,並且因爲 C、D 等因爲本身點擊率較高或者沒有關注行爲,它們不受分佈改變的影響,因此他們的 CTR 大小關係不受影響。換一種理解,我們是在僅僅改變了有關注 item 的點擊率分佈的基礎中引入了更多更高質量的關注行爲數據。對原來的點擊率預估模型的侵入很少,整體點擊率不會下跌太多。該工作提高關注轉化率14.93%,但是點擊率提升很少 ( 約0.84% )。

3.3 Homoscedastic Uncertainty 學習方式

上述工作點擊率提升很少的原因是 reweight 模型過於簡單。如前文所述,多任務的缺點是在參數共享的情況下,如果兩個任務有不相關的部分,兩個任務就會互相干擾,從而影響效果。學術界將這種現象稱爲共享衝突。共享衝突這一問題分析和解決起來較爲複雜。針對美圖的具體場景,減少共享衝突的一種方法是加大點擊率預估任務的重要性,讓點擊率預估任務主導底部共享參數學習,進而讓整體模型優先正確預估點擊率模型,再去預估點擊轉化率任務。

在實踐中,我們用同方差不確定性來學習每個任務對整體的主導能力。具體來說,分別給點擊率任務和關注轉化率任務各自一個參數 ( θclick 和 θfollow ) 用來表示各自的不確定性;不確定性越小的任務對模型整體的主導性越強。

從下圖可以看出,左圖的關注轉化的不確定性達到0.76,確實比右圖的點擊率的不確定性 ( 約0.42 ) 更高;因此,讓點擊率預估任務主導整個模型的學習。

這樣可以避免點擊率下跌的風險 ( 實際上,點擊率提升了1.57% ),而關注轉化率的提升達到了15.65%。

4. 總結

排序端的工作,美圖經歷了從 LR 模型到深度學習模型的引進:

(1) 引入 NFM 模型,點擊率提升了5.53%,人均時長提升6.97%

(2) NFwFM 模型在引入了特徵 Filed 信息後,在模型尺寸和計算複雜度可控的情況下,點擊率提升了5.19%,人均時長提升了2.93%;

多目標 NFwFM 模型,在引入更多更高質量數據之後,不僅關注轉化率提升了15.65%,點擊率也提升了1.57%。

參考文獻

1. Covington P, Adams J, Sargin E. Deep neural networks for youtube recommendations

2. Ma J, Zhao Z, Yi X, et al. Modeling task relationships in multi-task learning with multi-gate mixture-of-experts

3. Rich Caruana. 1998. Multitask learning. In Learning to learn

4. Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection

5. Kendall A, Gal Y, Cipolla R. Multi-task learning using uncertainty to weigh losses for scene geometry and semantics

6. [白楊-2018]基於用戶行爲的視頻聚類方案

https://cloud.tencent.com/developer/article/1193177

7. [蔣文瑞 2018]. 深度模型 DNN 在個性化推薦場景中的應用

https://cloud.tencent.com/developer/article/1193180

8. [陳文強 2019]. 多任務學習在美圖推薦排序的近期實踐

https://cloud.tencent.com/developer/article/1475686

作者介紹

陳文強、白楊、黃海勇,來自於美圖公司數據智能部。該團隊負責美圖大數據和 AI,通過用戶畫像、推薦算法、內容理解、大數據等,對公司的產品、技術、運營、商業化等賦能。

本文經授權轉載自 DataFunTalk

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