當前位置:
首頁 > 最新 > 效果廣告點擊率預估近期實踐:深度學習

效果廣告點擊率預估近期實踐:深度學習

更多騰訊海量技術文章,請關注騰訊雲+社區:

https://cloud.tencent.com/developer

作者簡介: 薛偉, 騰訊專家工程師。


1. 引言

深度學習可以說是目前機器學習和人工智慧領域最熱的辭彙了,已經熱了數年,而且有望繼續熱下去。深度學習技術自橫空出世以來,在多個應用領域刷新了歷史記錄,如語音識別、圖像識別、自然語言處理等等,且其後勁甚足,不斷有新的記錄出現。近日,來自Google和Facebook的兩個科學家團隊又在體現高級人工智慧的計算機圍棋上以深度學習技術取得突破,大大提升了計算機棋手的棋力,取得了對一些人類棋手的勝利。Google的這一突破還登上了Nature雜誌的封面,並再次刷爆了筆者的朋友圈。

鑒於深度學習技術的輝煌戰績,以及目前來看深不可測的巨大潛力,各大IT和互聯網公司紛紛投入資源開展研究與應用,以深度學習為方向的科研院所和創業企業也是層出不窮。鵝廠雖尚無深度學習研究院之類的獨立部門,但是各BG不乏在深度學習研究和應用上頗有建樹的團隊,深度學習技術已經廣泛應用於鵝廠各類產品,支持更好的語音識別、人臉識別、物體識別、商品識別、圖片分類和檢索、自然語言處理等等。本文將要分享的是筆者所在團隊將深度學習技術應用於效果廣告點擊率預估的一些思考和實踐經驗。如筆者前文[1]所言,本文是一個有點遲到的開篇,一些平台方面的工作在之前的KM文章中已有介紹,後面還會陸續補充一些細節內容。

2. 從特徵工程到端對端學習

需求來自於業務,方向來自於痛點。將深度學習技術應用於效果廣告點擊率預估並不是為了附庸風雅,而是因為有實際的需求和痛點。

時間回到三年前,當時現網點擊率預估的主力演算法模型是邏輯回歸(logistic regression, LR)。這是一個簡單的廣義線性模型(generalized linear model, GLM),一般的機器學習和統計類教科書都有原理介紹,我們求極大似然估計(MLE),常用演算法有並行隨機梯度下降(parallel stochastic gradient descent,PSGD)和L-BFGS。模型和演算法相對簡單,但是特徵工程(feature engineering)方面的工作量卻是相當大的。

一種歷史悠久並被廣泛接受的觀點[2]認為,特徵工程的本質是個表示(representation)問題。如果說機器學習演算法是要從樣本數據中學習出一個解(模型)的話,特徵工程就是要尋找樣本數據的最佳表示,使學到的模型更靈活、更簡單、更準確。一般所說的特徵工程大致包含了特徵提取/構造(feature extraction / feature construction)和特徵選擇(feature selection)兩個部分。

特徵提取/構造是指自動(特徵提取)/手動(特徵構造)地從原始數據出發構造新的特徵的過程。自動特徵提取方法包括從原始數據出發計算各種簡單統計量、主成分分析(principal component analysis)、無監督聚類(unsupervised clustering)、圖像中的線和邊的檢測等等,這些方法中有的還提供了對原始數據降維的功能。手動特徵構造則是特徵工程中更偏「藝術」的部分,通常要藉助人的領域知識,以及對原始數據的深入觀察和創造性思考。儘管在特徵構造過程中可能會用到各種自動工具來輔助分析和可視化,在構造方法確定後,可能將其變成一個自動化的數據處理流程,但是特徵構造過程的核心還是手動的。

特徵選擇是指從眾多特徵中挑選出少許有用特徵的過程。和學習目標不相關的特徵和冗餘特徵需要被剔除,如果計算資源不足或者對模型的複雜性有限制的話,還需要選擇丟棄一些不重要的特徵。特徵選擇方法大致可以分為三類:過濾器(filter)方法、包裹器(wrapper)方法和嵌入式(embedded)方法。過濾器方法會為每個特徵計算某種統計量(如與目標變數的互信息(mutual information,有時也稱作信息增益IG)),作為對這些特徵的打分,然後按照打分對特徵排序,過濾掉排名靠後的特徵。包裹器方法會在由所有特徵子集構成的空間中進行搜索,每次都用選中的特徵子集訓練一個模型,以該模型的精度作為對這個特徵子集的打分。由於特徵子集太多,所以這個搜索過程往往會使用啟發式方法。嵌入式方法則是在訓練模型的同時判斷什麼特徵對模型精度的貢獻大。一般是通過給模型引入正則化項,驅使學習演算法產出複雜度相對較低的模型,從而達到上述目的。

效果廣告點擊率預估模型使用到了用戶側、廣告側和上下文側的很多特徵,持續的特徵工程始終是模型效果提升的堅實基礎。以用戶興趣類特徵[3]為例,依託賬號打通[4]的公司產品數據和廣告數據,筆者所在的團隊為各類精準推薦的場景打造了廣告興趣、App興趣、群興趣、訂閱興趣、微信商業興趣等等一系列的興趣特徵,並且還在持續豐富、改進和融合當中。用戶興趣類特徵在點擊率預估問題上的信息增益頗高,所以我們很早就將其加入模型,並帶來了顯著的效果提升,但是這個過程並不輕鬆,因為僅興趣單獨加入模型是不夠的。當我們使用LR這樣的廣義線性模型時,除了引入用戶側、廣告側和上下文側的眾多基本特徵之外,我們還需要引入交叉維度的特徵。然而,特徵交叉的空間是非常龐大的,即便是模型比較簡單,也不可能無限制地做特徵組合交叉並加入模型。興趣類特徵本就維度比較高,交叉後規模爆炸更快。此時的重擔就壓到了特徵選擇上,不是只挑選基本特徵就好,還需要挑選交叉維度的特徵。我們效仿Google實現了一套大規模特徵選擇工具[5][6] ,並在應用中引入一些領域知識來約簡搜索空間。儘管如此,特徵選擇的開銷,不論是人力資源還是計算資源,仍然是非常大的。

不僅如此,特徵構造方面我們也面臨著挑戰。身處大數據時代,每天有大量的數據接入數平的數據平台並得到處理。筆者所在團隊的同學每天都在想辦法從數據中提取有價值的信息,進而構造有助於效果提升的特徵。仍以用戶興趣類特徵為例,目前用於構造這些特徵的數據處理方法、工具和模型都是經過多年打磨的。每當有新的數據源接入,在打通用戶賬號後,負責興趣特徵構造的同學就會嘗試從該數據源提取信息來豐富現有的興趣,或者創建新的興趣。如果新的數據源和已有數據源性質接近,現有的方法和工具可繼續支持,僅需少許人工干預,例如參數調整。如果新的數據源和已有數據源異構性比較強,那麼就需要設計新的特徵構造方法。長遠來看,我們需要有自動化程度更高的方法,用來從各類源數據出發構造特徵。不僅如此,我們希望這種特徵構造方法能夠在一開始就和其最終服務的目標——效果廣告點擊率預估——對齊。這樣做的好處是顯而易見的,可以確保構造出來的特徵不僅是與問題相關的,而且是精鍊的。

特徵選擇開銷大,特徵構造成本高,這兩個痛點是我們在實踐中感受到並總結出來的。在效果廣告業務開展的初期,這方面的痛感還不是非常強烈,或者說,尚未制約到效果的提升。但是隨著業務的發展,對點擊率預估模型的要求越來越高,特徵工程的巨大工作量對效果提升的制約已經相當明顯。從那時起,我們就開始思考和尋找各種技術手段來解決這個痛點,除了前面提到的自動化特徵選擇工具之外,我們還實現並生產應用了FM(factorization machines)[7]等一批自動學習特徵交互的模型。這些工作讓我們對上述痛點有了更深入的認識,積累了經驗,並最終促使我們轉向深度學習尋找答案。

深度學習的演算法模型眾多,應用廣泛,究其共性的話,表示學習(representation learning)是一個核心的基本點。深度學習演算法基於分散式表示(distributed representation)[8],分散式表示假設我們所觀察到的數據都是由因子(factor)之間的交互而生成的,而這些因子是按層(layer)來組織的。深度學習進一步假設這些由因子構成的層對應的是抽象(abstraction)或者組合(composition)的不同層級。對照前面我們的痛點,就不難理解我們為何會轉向深度學習了。面對效果廣告點擊率預估這樣一個有監督學習的問題,我們希望藉助於深度學習來節約特徵工程中的巨大投入(當然,無法完全避免),更多地讓點擊率預估模型和各輔助模型自動完成特徵構造和特徵選擇的工作(這也被稱作特徵學習,feature learning),並始終和點擊率預估的目標保持一致。端對端學習(end to end learning,也稱作端到端學習)這個術語常被用來描述這個目標,這也是深度學習常被人推崇的能力。

筆者所在的團隊在將深度學習技術應用於效果廣告點擊率預估之前,在深度學習平台[9]、深度學習+語音識別[10]、深度學習+圖像識別[11]等方面積累了一些研究和應用的經驗。然而效果廣告點擊率預估的場景和上述場景有一些差別,目標和約束不盡相同,在追求端對端學習的過程中所做的取捨也有所不同,本文稍作闡述。

3. 技術方案和應用效果

圖1 Mariana 2.0功能模塊示意圖


目前線上使用的深度學習點擊率預估模型,其模型訓練所用的架構同之前的模型差別不大。當事件(點擊/曝光/轉化等等)發生時,會實時地由上游生成最初的日誌,然後經由TDBank[12]接入數據處理平台,再用TDP[12]流式拓撲來給日誌關聯各種特徵,形成訓練數據,最後交給模型訓練程序來訓練點擊率預估模型。模型會定期推送到實時推薦引擎,供運行時預估使用。

與點擊率預估模型訓練強調流式和實時不同,用於特徵學習的深度學習模型的訓練對延遲要求不高,目前還是離線批處理為主。例如,我們會定期爬取廣告的落地頁,從中獲得廣告的圖片和文字描述,我們還會收集一些用戶訂閱和UGC的內容,用戶觀看和點擊廣告的行為自然也在收集之列。在積累了足夠多的數據後,我們會不定期啟動訓練深度學習模型來學慣用戶側和廣告側的特徵。此類模型的效果調優目前仍需要有人來操作,每次得到一個較好的模型後會持續使用一段時間,學習到的用戶側和廣告側特徵會存入內存資料庫TDE[12]供查詢。


前面提到,效果廣告點擊率預估的場景和語音識別、圖像識別之類的場景對深度學習模型有不同的約束。其中一個很重要的約束就是運行時延遲的約束。

在效果廣告的應用場景中,用於展示廣告的廣告位可以是QQ客戶端窗口中的某個位置、QQ空間頁面中的某個位置、微信公眾號文章頁中的某個位置、手機QQ app中的某個位置,或者外部合作手機app中的某個位置。廣告需要在用戶打開或者刷新這些窗口/頁面時立即得到呈現,以免破壞整個窗口/頁面的展現效果,影響用戶體驗,所以留給廣告系統的響應時間不多。我們知道,一個廣告系統的架構和請求處理流程還是比較複雜的[13],當收到廣告請求時,先要檢索出符合流量和定向要求的廣告,然後粗篩篩掉大部分的候選廣告,然後請求pCTR模塊和pCVR模塊分別估計點擊率和轉化率,然後再做精排並返回最後排名在前的幾個廣告。這個處理流程中各個環節之間可並行的餘地不是很大,所以留給點擊率預估的處理時間就更少了。按照目前的經驗約定,當候選廣告的個數在100左右時,從請求pCTR服務到返回結果的平均延遲不應超過幾十個毫秒,移動端廣告位的延遲要求通常還要更高一些。

雖然點擊率預估服務的介面很簡單,傳入用戶、上下文和候選廣告的信息,返回每個候選廣告的點擊率估值,但是背後仍然是一套比較複雜的系統,涉及到請求路由和負載均衡,分散式K/V存儲和緩存等等,並不僅僅是模型運算。所以實際用於模型運算的耗時還要再少一點。在這種情況下,用於運行時點擊率預估的模型的規模和計算複雜度不能太大。

因此,我們把端對端學習的過程分成了兩個階段,用到的深度學習模型也相應劃分成兩類,前面其實已經提到了。一類是運行時用做點擊率預估的模型,一類是輔助構造抽象特徵的模型,這兩類模型從設計到訓練都對齊點擊率預估的目標。前者的深度目前控制在2~4隱層,每層的寬度也不是很大,不過還有進一步加深加寬的餘地。這類模型的複雜度不高,但可以比較有效地解決前面提到的特徵選擇的痛點,無需手動嘗試所有輸入特徵的組合,模型可以學到比較合理的組合方法,多個隱層可以捕捉到不同層次的特徵交互。

後一類模型的規模和複雜度基本不受限制,因為其使用流程獨立於運行時的點擊率預估流程,延遲要求不高。例如,用於提取訂單側抽象特徵的模型是在訂單信息接入處理流程中被調用的,提取的特徵向量會先入庫TDE,然後再用於點擊率預估模型。這塊我們還在不斷地做實驗,嘗試用不同的數據源和網路結構來提取與點擊行為潛在相關的用戶側和廣告側的特徵。與此同時,我們對「傳統」特徵構造方法的改進和推廣應用仍在繼續,我們認為這兩種方法仍將在未來一段時間內並存和相互補充,它們的產出都會交給前一類模型作為輸入,並在那裡完成交互和融合。

到目前為止,我們主要談的是對深度學習模型端對端學習能力的運用。不過,換個角度來看,神經網路模型的強大擬合能力也是我們所看中的,特別是當特徵變多了之後,我們更需要藉助神經網路強大的非線性函數擬合能力。

有了模型,還需要有演算法來訓練模型,近年來這塊的研究也比較熱,但我們目前使用的仍然主要是隨機梯度下降及其各種自適應變體,配合適當網路結構設計,對於我們手頭的模型來說基本夠用。


深度學習在學術界和工業界的火爆有目共睹,較為成熟的軟體工具和平台也有不少[8],近期各大公司也紛紛開源了一些自用的機器學習平台,如Google開源的TensorFlow[14],微軟開源的DMTK[15]和CNTK[16],基於這些平台也可以開發深度學習的演算法程序。筆者所在的團隊前幾年積累了一些使用和開發深度學習工具和平台的經驗[17],當時主要還是針對語音識別和圖像識別等應用場景。在綜合考慮了其他目標應用場景的需求,包括點擊率預估的需求後,我們基於開源社區的Caffe[18]推出了Mariana 2.0平台[19][20][21][22],如圖1[20]所示。

我們為Mariana 2.0平台設立的技術目標有這麼幾個。首先,滿足多個領域常見的深度學習模型的訓練需求,實驗成本低且有充分的可擴展性,特別是要支持效果廣告點擊率預估相關的端對端學習需求,既支持相對規模較小的點擊率預估模型,也支持大規模的特徵挖掘模型,且可以根據需要擴展新的模型結構。其次,既能用於訓練,也能用於運行時預測,一套代碼搞定,且執行效率可以接受。第三,支持GPU/CPU異構計算和並行加速,從而充分發揮GPU伺服器設備強大計算能力和高速網路通信能力。第四,依託Docker on Gaia[22]實現雲化部署和管理。Mariana 2.0基本達到了上述目標,目前已經用於效果廣告點擊率預估的生產環境。對此平台感興趣的同學可以看一下此前筆者團隊發表的KM文章。


基於深度學習的點擊率預估模型從2015年年中開始應用於廣點通現網,上半年在廣點通Feeds廣告位取得CTR+CPM 10%+的提升,下半年推廣覆蓋了其他移動內部站點、微信以及移動聯盟,並在移動內部站點進一步帶來CTR+CPM 8%+的提升,在微信廣告位帶來12%左右的提升。與此同時,特徵工程的人力和計算資源消耗明顯減少,新特徵的實驗周期明顯縮短。


4. 展望

需求來自業務,方向來自痛點。於工作中體會到特徵工程的一些痛點,促使我們轉向深度學習。我們開發了平台,設計了模型,並在效果廣告點擊率預估應用中取得了較好的提升。深度學習技術的研究和應用方興未艾,我們所涉獵的只是很小的一塊。我們在實踐中邊總結邊改進,還有很多的工作可以做,像模型結構設計、演算法改進、系統性能調優,都需要繼續投入。除此以外,深度學習和在線學習的融合也是我們重點關注的方向,我們在這方面的探索已經開始。


5. 後記

點擊率預估模型的深度學習和在線學習融合方案已經在16年年中的時候實現,並用於年中的線上放量,進一步提升了廣點通效果廣告的線上效果。目前使用的融合方案有兩種,一種是快速增量更新DNN模型,實現近似在線更新的效果,好處是部署和運維比較簡單,另一種則是將在線貝葉斯學習的方法推廣到DNN模型,實現純在線學習,其部署和運維略複雜一點。這兩種方案的線上效果經在線對比實驗確認是比較接近的,目前已經分別用於覆蓋一些重要的流量。深度學習和在線學習的融合使得我們可以兼得二者的優點,也為進一步的點擊率預估模型結構設計優化打下了堅實的基礎。

融合實現後,點擊率預估模型結構精調和從原始數據出發的特徵構造將會是今後一段時間我們探索深度學習技術及其應用的重點。


參考文獻

[1] 效果廣告點擊率預估近期實踐:在線學習

[2] Discover Feature Engineering, How to Engineer Features and How to Get Good at It, http://machinelearningmastery.com/discover-feature-engineering-how-to-engineer-features-and-how-to-get-good-at-it/

[3] TDW騰訊用戶畫像—用戶興趣解讀

[4] 既相知,便相伴:揭開移動畫像系列之總體介紹

[5] 一種基於LR的特徵選擇方案

[6] Sameer Singh , Jeremy Kubica , Scott Larsen , Daria Sorokina, Parallel Large Scale Feature Selection for Logistic Regression, SDM2009.

[7] Steffen Rendle, Factorization Machines, in Proceedings of the 10th IEEE International Conference on Data Mining (ICDM 2010), Sydney, Australia.

[8] Deep learning(https://en.wikipedia.org/wiki/Deep_learning)

[9] 解密最接近人腦的智能學習機器——深度學習及並行化實現概述

[10] 深度神經網路DNN的多GPU數據並行框架及其在語音識別的應用

[11] 深度卷積神經網路CNNs的多GPU並行框架及其在圖像識別的應用

[12] 騰訊實時計算平台(TRC)系列之一:初識TRC

[13] 廣點通廣告引擎-設計與實現

[14] TensorFlow(https://www.tensorflow.org/)

[16] Computational Network Toolkit (CNTK)(https://www.microsoft.com/en-us/cognitive-toolkit/)

[17] VLDB 2014總結:騰訊Mariana演講者的視角

[18] Caffe, https://github.com/BVLC/caffe/

[19] 雲化GPU集群建設:引言 - 承深度學習之需,探高性能計算之路

[20] 雲化GPU計算集群建設:Mariana 2.0深度學習平台

[21] 雲化GPU集群建設:Mariana 2.0使用手冊、疑難解答和最佳實踐

[22] 雲化GPU集群建設:Docker on Gaia雲平台


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

IT從業人員面試小技巧
從卷積神經網路的角度看世界是一種什麼樣的體驗

TAG:雲加社區 |