基於深度學習的廣告CTR預估演算法

摘要:本文主要介紹了廣告CTR預估演算法在引入深度學習之後的基本演化過程及一些最新的進展,重點是從工業實現和應用的視角對Deep CTR模型進行剖析,探討為什麼這樣設計模型、模型的關鍵要點是什麼。主要內容按照「內」、「外」兩個不同的角度進行介紹:內部集中介紹了典型模型的網路結構演化過程,外部則關注於不同數據、場景和功能模塊下模型的設計思路。

演講嘉賓簡介:

朱小強,花名懷人,阿里媽媽高級演算法專家,領導了核心的排序演算法與機器學習平台團隊,負責阿里精準展示廣告的CTR/CVR預估系統/演算法和架構的設計優化、大規模分散式機器學習/深度學習平台建設等工作。

本次直播視頻精彩回顧,戳這裡!

以下內容根據演講嘉賓視頻分享以及PPT整理而成。

本次的分享主要圍繞以下三個方面:

一、CTR預估問題的特點與挑戰——以阿里定向廣告為例 網路爬蟲技術入門

二、基於深度學習的CTR預估演算法演化——內外兼修之道

三、總結與展望——新的起點

一、CTR預估問題的特點與挑戰——以阿里定向廣告為例

下圖中可以看到手機淘寶端的定向廣告形態。左邊是首焦場景,在淘寶頂端的位置會有浮動的Banner廣告。右邊是往下滑動時候的導購場景(猜你喜歡區塊),投放的是Item廣告。這些不同形態的定向廣告背後其實有一些內在的、從machine learning視角來看相似的特徵。簡單來說,可以歸納為幾個方面,一個方面是廣告中展現的創意圖片,第二個是圖片的文字信息,還有一些在背後看不到摸不到的統一的ID體系,比如某件商品是什麼商品,屬於哪個品牌等等信息。定向廣告複雜多樣的富媒介形態以及高維海量數據空間,給廣告點擊率預估問題帶來了不小的挑戰。

下圖是電商環境下CTR預估問題的數學化模擬。假設一位用戶登錄手機淘寶,我們首先可以拿到用戶的一些歷史行為數據,這些行為數據構成了我們對用戶興趣的表達刻畫。那麼下一步需要預估給用戶展現某個候選商品candidate,用戶發生點擊/購買的概率是多少。那麼如何實現預估?我們需要利用歷史行為數據建模出用戶的興趣偏好。

將用戶的行為按照時間排列,可以構成一個行為時間軸。每個時刻點可以稱為行為結構體,它包含了一系列表徵行為的關鍵信息:比如此刻的行為類型,點擊or購買某個商品;某個商品的文本描述信息;對應的創意圖片;行為發生的時間,行為發生的頻次;或者行為背後的粒度體系是什麼,對應的是什麼商品、什麼店鋪以及什麼品牌等等。

這些大量的行為信息可以足夠表達用戶的興趣偏好。時間軸左邊是歷史的靜態信息,稱為feature;右邊就是待預測的用戶的未來行為,如點擊行為(點擊概率)、購買行為(購買概率)等等。電商場景下的廣告預估問題相比於大家熟知的靜態預估模型有更大的挑戰。

第一個挑戰,在淘寶端每天有數億的用戶會登陸,併產生大量的行為。同時我們有海量的商品候選集,在淘寶中有大概10億到20億的商品,當然聚焦到廣告商品,可能會有所減少,但依然達到了千萬的數量級。如此,廣告預估問題就變成了數億用戶與千萬商品配對的點擊概率預估問題,規模極其龐大。第二個挑戰,每個用戶行為特徵背後,有大量的信號源,比如圖像信號、文字信號、品牌偏好信號等等,這些信號如何去捕捉,如何進行統一建模?第三個挑戰,在電商場景下用戶的行為非常豐富,反映出用戶的興趣多樣多變,尋找與建模用戶點擊某個廣告商品背後的規律是高度非線性的問題。

在點擊率預估問題上,傳統的解法一般採用邏輯回歸模型(Logistic Regression,LR)。但可惜的是,當數據本身有非常強的非線性pattern時,傳統的線性LR模型受到了很大的挑戰。在阿里廣告定向發展初期,也嘗試探索過線性模型的可能性,但由於線性模型本身過於簡化,演算法的發揮空間上受到了極大的壓制。

二、基於深度學習的CTR預估演算法演化——內外兼修之道

2012年左右,當深度學習逐漸從學術界遷移到工業界時,阿里發現深度學習成為了一個有力的武器,可以更好地幫助廣告CTR預估問題的求解。尤其是近幾年裡,基於Deep Learning的CTR預估演算法正在經歷快速的演變。下面主要介紹其演變背後的思路、核心關鍵以及具體可借鑒的要點。

1.深度學習在廣告領域遭遇的挑戰

傳統的圖像領域或NLP領域內,深度學習已經取得非常多的成果,在大多的問題上成為了state-of-the-art的方法。如圖中顯示,不同的領域有不同的適用結構。如圖像領域內的CNN結構、語音的RNN結構。那麼回到廣告領域內,究竟什麼結構是合適的?廣告預估問題有很強的特點,它的特徵極其的大規模和稀疏。典型的數量級從百萬級,千萬級到數億級都有,而且大都是0或1這類沒有直接意義的數據。這個問題一度成為廣告預估問題引入深入學習的關鍵點。

2.深度學習引入廣告預估問題後的演化

下面從兩個視角來介紹最近幾年學術界和工業界對於上面問題的探討,也叫做內外兼修。內部是指深度網路的核心結構如何演化,外部是指如何引入多模態的信號輸入,多場景的樣本遷移及多個模塊的功能聯動等等。

1)內部演化

下面主要介紹最近幾年Deep CTR Model的內部結構上的演化,並進行簡單梳理。

a. 混合Logistic Regression(MLR)模型

阿里自主研發的MLR模型是對線性LR模型的推廣,它利用分片線性方式對數據進行擬合。基本思路是採用分而治之的策略:如果分類空間本身是非線性的,則按照合適的方式把空間分為多個區域,每個區域裡面可以用線性的方式進行擬合,最後MLR的輸出就變為了多個子區域預測值的加權平均。在今天看來,MLR模型是帶有一個隱層的神經網路。

如下圖,X是大規模的稀疏輸入數據,MLR模型第一步是做了一個Embedding操作,分為兩個部分,一種叫聚類Embedding(綠色),另一種是分類Embedding(紅色)。兩個投影都投到低維的空間,緯度為M,對應的是MLR模型中的分片數。完成投影之後,通過很簡單的內積(Inner Product)操作便可以進行預測,得到輸出Y。右邊是不同節點上的激活函數Activation Function,已按不同顏色區分。

在2012年左右,MLR模型便在阿里的主流業務中進行服務,證明了其巨大的優越性。MLR模型最大的意義在於,它是首個在大規模稀疏數據上探索和實現了非線性擬合能力的模型,相關的細節內容可從論文中查詢:Gai et al, 「Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction」

b.DSSM模型

如果說MLR模型是阿里巴巴初次對於深度學習方面的探索,在深度學習真正引入到廣告預估問題中之後,出現了更多演變的模型。Deep Structured Semantic Model(DSSM)模型是微軟2013年提出的。雖然在最初DSSM模型不是用於廣告預估,但是現在看來,它為廣告預估提供了一個很好的思路。這裡主要關注下圖中紅色框內的部分,原理是把query/doc中的關鍵信息(Term Vector)提取出來進行簡單的Word Hashing之後,把query/doc域分別投影到300維的子空間去。query里的每個word都對應一個300維的向量,一個query里會有多個向量,後面用sum求和操作得到一個匯總的300維向量,這是一個典型的Embedding操作。從圖中可以看到,30k是指word字典的長度,300是embedding維數,30k*300≈千萬量級的參數。DSSM模型第一次探索了如何把大量稀疏的ID進行稠密表達的路徑。

當然,DSSM模型本意不是用於廣告預估問題。在深度學習最初引入CTR預估問題時,當時業界的一些公司如Google、百度等已經在探索如何把大量的稀疏數據進行降維的方法。一個典型的做法是用輔助的方式分兩階段進行:第一階段,用FM模型把大量的稀疏ID學習到對應的embedding表達,跟DSSM模型類似,能夠得到幾百維的稠密向量。第二階段是基於稠密的輸入用多層全連接網路預測最後的目標。從今天的視角來看,這種兩階段的方式是不如整體的端到端模型的。這個思考點在2013年-2014年左右一直有人進行嘗試,但當時一是因為深入學習框架的沒能普及,二是對整個計算力的估計不足,因此沒有達到比較好的進展,直到2016年左右,才有所突破,當然這裡面很重要的一點是得益於優秀的深度學習框架如TensorFlow、MXNet等的開源和普及,進一步促進了整個工業界的思考和前進。

c.稀疏分組嵌入網路結構(GwEN)

下面以阿里2016年的網格框架為例進行介紹。整個稀疏分組嵌入網路結構(GwEN)分為兩部分,如下圖左邊所示。第一部分,把大規模的稀疏特徵ID用Embedding操作映射為低維稠密的Embedding向量,然後把每個特徵組的 Embedding進行簡單的sum或average的pooling操作,得到Group-wise的Embedding向量。第二部分,多個特徵組的向量通過Concatenate操作連接在一起,構成原始樣本的完整稠密表達,餵給後續的全連接層。

GwEN網路結構是比較基礎的,但同樣也非常重要。因為在最初大家普遍的直觀思考是,假設有個高維的稀疏輸入,典型的數量級是,然後將每個ID學習到一個表達,如果表達太小,便不足以客刻畫信息本身,那麼設想投影維度控制在數百上千()估計是合適的。早期百度或Google的探索中,大概是一樣的量級。這樣算來,全空間便達到萬億()的量級,極其恐怖,一方面對於訓練樣本的要求,另一方面對於背後的計算能力的要求都非常高。Group-wise Embedding的核心想法是借鑒CNN網路的局部感知野(Local Receptive Field)的思想。以整體輸出表達向量為例,其實不需要每個ID達到千維()的表達,因為在分組表示學習中每個特徵組可以分別得到一個低維的表達,一共個分組,組裡面的每個ID只需要學習的表達即可。這樣,整個參數規模可以直接壓縮到百億的量級,這是工業界比較舒服的量級。儘管GwEN這種網路結構非常簡單,但提出了非常重要的Group-wise Embedding 的概念,現在也稱為求解大規模稀疏數據問題的通用網路單元。GwEN網格結構在2016年左右在阿里內部已經上線。

d.Wide & Deep Learning模型

與阿里同時期,Google推出了Wide & Deep Learning(WDL)模型,一個非常出名的模型。詳細內容可以從論文中查詢Cheng et al, 「Wide & deep learning for recommender systems」 。WDL模型也非常簡單,但巧妙的將傳統的特徵工程與深度模型進行了強強聯合。Wide部分是指人工先驗的交叉特徵,通過LR模型的形式做了直接的預測。右邊是Deep部分,與GwEN網路結構一樣,屬於分組的學習方式。WDL相當於LR模型與GwEN結合訓練的網路結構。

e.FNN/PNN/DeepFM模型

GwEN和WDL是目前比較常用的模型,非常簡單,所有後續人們繼續做了很多改進,例如FNN,PNN以及DeepFM等。這些模型基礎的部分與上面的GwEN和WDL模型類似,即Group-wise Embedding。改進的地方主要在後面的部分,引入了代數式的先驗pattern,如FM模式,比較簡單直接,可以給MLP 提供先驗的結構範式。雖然理論上說,MLP可以表達任意複雜的分類函數,但越泛化的表達,擬合到具體數據的特定模式越不容易,也就是著名的「No Free Lunch」定理。因此代數式的先驗結構引入確實有助於幫助MLP更好的學習。當然從另外的視角看,這種設定的結構範式比較簡單,過於底層,也使得學習本身比較低效。

f.DIN模型

另外一個工作是阿里在2017年發表的用戶興趣分布網路DIN模型。與上面的FNN,PNN等引入低階代數範式不同,DIN的核心是基於數據的內在特點,引入了更高階的學習範式。互聯網上用戶興趣是多種多樣的,從數學的角度來看,用戶的興趣在興趣空間是一個多峰分布。在預測多興趣的用戶點擊某個商品的概率時,其實用戶的很多興趣跟候選商品是無關的,也就是說我們只需要考慮用戶跟商品相關的局部興趣。所以DIN網路結構引入了興趣局部激活單元,它受attention機制啟發,從用戶大量的行為集合中捕獲到與candidate商品相關的行為子簇,對於用戶行為子簇,通過Embedding操作,做weighted sum便可很好的預估出用戶與candidate相關的興趣度。傳統的GwEN、WDL、FNN等模型在刻畫用戶興趣分布時,會簡單的將用戶興趣特徵組做sum或average的pooling操作,這會把用戶真正相關的興趣淹沒在pooling過程中。DIN模型的具體細節可以參考論文:Zhou et al, 「Deep Interest Network for click-through rate prediction」 。

2)外部演化

假設固定網路結構,那麼外部演化則考慮的是有沒有一些更好的特徵輸入或樣本的方式可以幫助模型學習的更好。

a.多模態信號輸入

首先介紹阿里在2017年發表的用戶行為ID+圖像的多模態學習模型的工作。用戶在看到某個商品之後,映入眼帘的除了商品是什麼的信息外,還有一系列的圖片創意內容。比如下圖是一款兒童畫板商品,畫板的大小、顏色甚至小寶寶可愛的模樣等信息可能激發了用戶點擊的慾望。這類信息是無法單純地通過畫板這個ID完全表達的。所以這裡面我們主要做的事情就是對於用戶行為,除了商品ID之外,把對應的圖像也放進來,統一表徵用戶的行為。

下圖中左邊部分描述了整個結構。與上面的DIN網路結構一致的是也使用了attention機制,引入Ad與User之間的相關性,不同的是網路結構將用戶行為的ID特徵與圖片特徵兩種不同模態很自然的揉合在一起,解決了預測問題。這種做法在演算法中非常直觀,但事實上在背後真正建立模型時工程上面有很大的挑戰。假設某個業務場景中有100億的樣本,每個樣本有500個對應的用戶行為ID特徵,每個ID背後都有對應的圖片。從圖片視角來看,圖片訓練集有5億張,多達8T數據,如果將圖片訓練裝配到樣本中平鋪開來會接近800TB的數據。就算存儲在SSD(2TB)磁碟上,也需要400台機器存儲,何況要考慮更複雜的網路操作、圖片載入到內存進行計算的巨大開銷等等。為此,阿里研發設計了一種更高階的AMS深度學習訓練架構,AMS比傳統的Parameter Server(PS)架構更高階,具體細節可參見論文Ge et al, 「Image Matters: Visually modeling user behaviors using Advanced Model Server」 。

b.多場景遷移學習

對於模型而言,如果有更多的數據進行模型訓練,效果一般都能得到提高。在手機淘寶端,我們有很多不同場景的廣告位,如首頁焦點圖,導購場景等等。每個場景蘊含了用戶的不同興趣的表達。將不同場景直接進行合併用來訓練模型,結果不是很樂觀。因為不同場景之間的樣本分布存在diff,直接累加樣本會導致效果負向。

隨著深度學習發展,發現用Multi-task learning(MTL)的方式可以很漂亮的解決這個問題。如上圖中左邊的例子,分為兩個task,即分為兩個子網路,對於底層的難以學習的Embedding層(或稱為特徵稀疏表達層)做了表示學習的共享(Shared Lookup Table),這種共享有助於大樣本的子任務幫助小樣本的子任務,使得底層的表達學習更加充分。對於上層的子網路,不同的task是分拆為不同的子網路,這樣每個子網路可以各自去擬合自己task對應的概念分布。當然,在一些更複雜的問題中,需要進一步考慮不同task之間存在的關係,這種關係也可以幫助task達到更好的預測效果,這裡叫做Label Information Transfer。MTL給跨場景遷移應用打開了一扇新的大門,可以充分的挖掘不同場景之間的獨立性和關聯性,從而幫助每個場景達到更好的效果。

c.深度個性化質量分網路

當用戶在訪問手機淘寶時,一瞬間,系統會有數千萬的候選廣告可以展現給用戶,那具體展現哪些廣告?下圖中有簡單的篩選過程。最開始通過一層匹配演算法,圈出10萬量級廣告。這些廣告需要在幾十毫秒內展現給用戶,如果全部進行複雜的模型打分,計算量是無法想像的,所以一般是分階段進行:第一步利用簡單的質量分數進行海選(Qscore是對每個Ad點擊率的簡單度量)。第二步利用DQM模型進行初排,這是一個從1萬到1千的篩選過程。最後,用最複雜精細的模型,如DIN ,從1千中獲取10個非常精準的廣告。

在第二步中,因為需要在幾個毫秒內完成近萬廣告的打分過程,所以這個模型結構不能過於複雜。DQM模型類似與DSSM模型,分成不同域,如用戶域,廣告域以及場景域。將這些域表達成向量形式,最後的輸出是通過向量間的簡單操作,如內積操作,生成分數。相比傳統的靜態質量分Qscore模型,DQM引入了個性化,所以比Qscore好很多。

三、總結與展望——新的起點

1.怎麼看深度學習技術?

我們認為,深度學習技術有三點優勢。第一點,模型設計組件化。組件化是指在構建模型時,可以更多的關注idea和motivation本身,在真正數學化實現時可以像搭積木一樣進行網路結構的設計和搭建。第二點,優化方法標準化。在2010年以前,Machine Learning還是一個要求較高的領域。它要求不僅了解問題、能定義出數學化的formulation,而且需要掌握很好的優化技巧,針對對應的問題設計具體的優化方法。但是在現在,深度學習因為模型結構上的變化,使得工業界可以用標準的SGD或SGD變種,很輕鬆的得到很好的優化解。第三點,深度學習可以幫助我們實現設計與優化的解耦,將設計和優化分階段進行。對於工業界的同學來說,可以更加關注從問題本身出發,抽象和擬合領域知識。然後用一些標準的優化方法和框架來進行求解。

2.變革與展望

正是因為上面的優勢,在最近兩年內,整個工業界,包括整個阿里的廣告體系裡面,產生了革命性的技術模式變革。作為影響到廣告營收的核心技術,CTR預估一直是互聯網公司研究的焦點,很多公司都投入了大量的人力和物力進行研發。以前大家更多的是從特徵工程的角度,結合人的先驗去挖掘比較好的交叉組合特徵。現在隨著深度學習的引入,模式發生了巨大的轉換。我提了一個新的概念,叫模型工程,現在我們可以用模型的方式以更少的人力、更高效的方式進行模式挖掘。這種變革在2015年到2017年間,在工業界的領先公司內,都成為了比較普遍的趨勢。尤其在阿里內部,幾乎是用比較野蠻的方式去革新了廣告系統中方方面面的演算法技術,不僅僅對CTR預估演算法,還有匹配召回演算法,以及一些機制和決策模型。現在,阿里認為深度學習處於V2.0時代。V1.0是屬於掘金時代,大家都認為深度學習非常好用,野蠻式的發展。在V2.0時代,深度學習進入了精耕細作時代,當深度學習變成基礎設施之後(比如微信已經成為日常生活中的工具),大家便可以利用這個工具,結合領域知識,更好的進行打磨並創新。

原文鏈接

更多技術乾貨敬請關注云棲社區知乎機構號:阿里云云棲社區 - 知乎

推薦閱讀:

快速排序
數論及數論四大定理
最萌編程高手是這樣煉成的
包含min函數的棧

TAG:深度學習DeepLearning | 演算法 |