廣告點擊預估用深度學習怎麼搞?

我們都知道根據圖像的性質,圖像識別應該用CNN。那廣告點擊預估,除了用多層感知器,還有啥更貼近問題性質的網路結構么?


我對深度學習在廣告點擊率預估上的應用現在是悲觀的,雖然我此時此刻還在開發它相關的代碼。

真心歡迎打臉,來指導下我的工作。

1. 從看到的資料來看,大部是embedding layer加上full connect層,就完了。沒有圖像上那些類似local receptive fields, shared weights, 和pooling等比較深入思考後的想法。但點擊率預估中基本都是一大堆ID,似乎沒也沒什麼深入思考的地方。真的這樣簡單的就可以提升效果?我有點不信。

2. 離線計算速度不夠快。如果要用神經網路,特徵要多,數據量要大,而一般開源的深度學習工具用來做點擊率預估都不太合適,tensorflow我測試的速度大概是5000樣本/秒(很少的特徵)。因為一般用深度學習的問題都是計算量特別大,相比之下,通信時間就不算什麼了。而點擊率預估中剛好相反,如果要跨機通信,通信時間遠超計算時間,最後的結果是多機跑的還沒單機快。如果是想把模型分別拉到多個woker中,多計算一些樣本再同步加server,以減少通信,效果又很差,因為不像LR,神經網路有full connect層。

3. 在線計算速度也不夠快,如果要做到端到端,計算量簡直不可想像,模型也會大的不可想像,比如用戶行為數據全部都交給神經網路去處理嗎(比如用戶A今天瀏覽了網頁x)?點擊率預估大約應該平均10ms返回,模型計算量太大不可以接受。並且在線廣告基本都要線上檢索,所以這些計算不能離線進行。

4. CTR預估問題特徵性對離線計算速度的進一步要求。廣告系統不同於圖像,語音等方面的應用,它的數據是實時在發生變化的,它對實時性的要求遠超過圖像,語音。比如圖像分類,幾天更新一次可能就可以了,而在廣告中新廣告是不斷產生的,並且數據的變化也是很快的,比如雙11前後的變化,所以模型的更新要非常的快。可能有人會反駁說不用廣告ID不就可以了嗎?直接用素材特徵就避免了這個問題。這可能可行的,也是我們所努力的方面,但有三個難點,1. 圖像數據用於點擊率預估,一是計算量超大,二是收益可能比較小,三是難以定義問題。計算量大不用過多解釋,就算用inception-v3之類的模型抽取一次特徵,那特徵量也大的離譜。收益太小的原因是曝光量比較多的廣告,圖像數據基本不能提供比廣告ID更多的CTR相關信息了,難以定義問題是廣告ID其實和素材並不相等,廣告ID包括了定向條件,所以相同素材的不同廣告可能有非常不同的點擊率。

5. 深度學習對效果的提升可能有限。廣告維度曝光是非常不均勻的,雖然是長尾,但不是fat tail。曝光量大的廣告,基本可以決定效果。而在特徵數不是特別多的情況下,預估的點擊率和統計點擊率基本是相等的。如果要大量的特徵,可能離線在線速度又不行。


這個問題有點太複雜了,簡單說幾句吧。廣告預估和商品推薦有這很多相似的地方,都屬於行為估計的範圍,其實在這些問題中比較出色的還是多模型混合的方式。因為這類問題其實不單考驗模型,更是對特徵提取的一種考驗。不過話說回來,一切ml問題都是對特徵提取的考驗,為什麼cv裡面深度學習效果如此出色,而在這類問題中deeplearning就沒有那種壓倒性的優勢呢。我們應該回到問題和模型本身來看。

cv問題中,特徵是非常豐富的,可以說機器需要處理的問題是一個相對複雜的問題,而dl的優勢就是在此人,只要機器性能跟得上,多複雜的問題我都OK。但是在決策問題中,特徵的數量往往不多,很多特徵是需要人們來挖掘的。機器再聰明,肯定干不過人腦,因為機器沒有創造力。所以在決策問題上,其實單純運用深度模型並不會達到令人驚艷的結果


不同的階段用不同的模型,初級階段瓶頸在數據—有多少東西可以學,玩命搞特徵就好了;數據豐富了以後,瓶頸在模型的學習能力—能學多少,這個時候deep learning等複雜模型的價值就凸顯出來了。

把DNN引入ctr預估無非看重兩點:

一,改進模型結構,提高「信息利用率」,發現高階非線性特徵,挖掘以前挖不到潛在模式,比如DIN引入attention機制;一般來說Embedding+MLP是標配。

二,擴充「信息量」,把圖片/文本這類不好處理的數據利用起來,比如DeepCTR;

放一張圖,具體看這裡從ctr預估問題看看f(x)設計—DNN篇


2014年1月至11月先後分別在百度和360做展示廣告和搜索廣告CTR預估,用的就是深度學習。也包括DL和其它各種模型的bagging, 總體來說效果還是有明顯提升的,最近也有公司/個人推出深度學習在廣告ctr預估中的應用,例如:深度學習在搜狗無線搜索廣告中的應用,http://blog.csdn.net/xiewenbo/article/details/52038493, 谷歌新開源「寬度深度學習」框架:實現更優推薦--百度百家,相信以後會越來越多。

使用深度學習做CTR預估,需要大量的訓練數據,這就對訓練時間有了嚴格的要求。因此,並行機器學習技術必不可少,幾年前Batch learing盛行,基於MPI的並行機器學習平台被BAT等各大公司使用,最近隨著Online Learning的發展,非同步的Parameter server計算框架逐漸被關注,比如DMLC的ps-lite, 以及他們的一個深度學習工具mxnet,都是很好的開源PS工具。

重點來了:如果你在關注Parameter Server,關注深度學習,可以加群討論:580112675


DL在ctr預估這個問題上起步比較晚,瓶頸其實是在於離散特徵維數太高,沒法直接丟到網路中訓練。最開始應該是谷歌2012年的一個文章Deep Networks for Predicting Ad Click Through Rates,給出的就是embedding+fc的思路,因為embedding之後維數降低,才給dl在ctr問題上的應用提供了可能。後面的研究很多,譬如前面有人提到的wide and deep learning model。張偉楠有篇講FM做embedding再用多層fc的paper實踐了不少,樓主可以找來看看。其實ctr本來就是個工業界的問題,embedding本質也是個特徵映射,中間有很多工作可以做,而且參數調整也和實際情況有關係,所以才說現在有很多調參工程師。最高答案中所謂的沒信心,個人表示並不贊同。不說現在dl在工業界已經大量使用,而且效果明顯有提升。吐槽embedding沒有什麼可做的這點的確是不敢苟同。而且現在都是用mpi集群訓練,不行就上gpu集群嘛……


搜狗深度學習技術在廣告推薦領域的應用 看看這個? 搜狗信息流AD好像已經在線上跑一年了。


Google前段時間有這麼個類似的paper 是用的wide and deep learning。把兩個模型結合起來 wide對應使用傳統的feature deep用embedding的feature。然後把loss加起來 進行訓練


搬運一手

阿里技術公眾號文章

http://mp.weixin.qq.com/s/Lf_UD92kgeTciqkHLyJmgg


廣告推薦判斷都是通過rtb幾ms內要完成判斷和購買吧?DL模型這麼多參數可以在幾ms內搞定?有這樣的實例了嗎?百度在用?不敢相信。。。


因為通過決策樹和邏輯回歸來做CTR預估已經足夠優秀,沒人願意花那個精力把DL放在這上面搞,更何況DL需要極大量的訓練集,且不說DL做CTR預估效果好不好,光可行性上就十分困難。


推薦閱讀:

什麼是計算廣告學?
做實時計費時如何降低廣告超預算?
為什麼LR可以用來做CTR預估?
如何評價CTR預估效果?
除了LR,FM(FFM)方法,CTR預測還有那些方法,應用較為廣泛?

TAG:計算廣告學 | 深度學習DeepLearning |