一、寫在前面
關於標題所承載的話題,一直有計劃寫個總結,沒料到各種耽擱,從17年底拖到了19年的今天。不過這也帶來了一點額外的收穫,18年呈現的新挑戰讓我對技術的發展脈絡和關鍵點有了更深刻的認知。因此在這個時間點,在深度學習(Deep Learning,下文簡稱DL)落地互聯網、驅動業界技術的輪子旋轉了差不多第一圈的時候,系統地把我們的實踐經驗做個梳理和盤點,跟大夥聊聊,對業界、對不少還在這條路上折騰的同行們,權當一個可做粗淺參考的路標。此外,既然踩在了第二圈即將轉動的交叉點附近,也鬥膽對下一階段技術的發展拋些板磚,談談我們看到的挑戰和趨勢。
能力有限, 本文主要以點擊率(Click-Through Rate, CTR)預估技術這個戰場來展開敘述: 1) 這是我熟悉的主場,下文敘述也主要以我負責的阿里定向廣告點擊率預估技術發展過程為藍本; 2) 我常把CTR預估技術類比為數學領域的黎曼猜想,它是鑲嵌在互聯網應用技術上的一顆閃亮的明珠,它的技術前進既是業界技術的真實寫照、很多時候也是引領和驅動互聯網應用技術發展的原力(廣告領域的性價比因素)。當然資深的從業者們應該都清楚,互聯網一大批覈心技術都跟CTR預估有著千絲萬縷的聯繫,因此這裡技術的探討足夠典型。
為了不引起誤解,提前交代一下,本文主要是基於我們團隊公開發表的論文,探討技術為主,不宜披露的數字都隱去了。這些技術絕大部分都已經在實際生產系統中落地、服務著阿里典型業務(如定向廣告、信息流廣告等)的主流量,且取得了顯著的收益。一個可以公開的數字是,基於DL的CTR技術迭代已經帶來了超過百億人民幣規模的直接廣告收入增長。目前在國內,阿里媽媽的廣告市場份額是無可爭議的第一。因此讀者可以放心,這些技術不是華而不實的炫技,而是真正經受過工業級規模洗禮的實戰利器。此外,本文不是詳細地給大家解讀paper,而是跳出結果、回歸技術思考,探討DL驅動這個領域技術發展的過往、現在和未來。
倡導:技術的封閉性在open-source時代已經不堪一擊。業界頂尖團隊的領先優勢最多保持半年到一年,擁抱開放、共同推進行業技術的發展是不可阻擋的洪流,也是我們行為背後的驅動力。
二、深度學習驅動的CTR預估技術演化
0. 淺層模型時代:以MLR為例
2005-2015這十年間,大規模機器學習模型(特指淺層模型)一度統治著CTR預估領域,以G/B兩家為代表的」大規模離散特徵+特徵工程+分散式線性LR模型」解法幾乎成為了那個時代的標準解。相關的工作相信讀者們耳熟能詳,甚至據我所知今天業界的不少團隊依然採用這樣的技術。
阿里在2011-2012年左右由@蓋坤同學創新性地提出了MLR(Mixed Logistic Regression)模型並實際部署到線上系統,同時期也有如FM模型等工作出現。這些模型試圖打破線性LR模型的侷限性,向非線性方向推進了一大步。
我在2014年加入阿里定向廣告團隊,不久負責了Ranking方向,推進CTR技術的持續迭代是我工作的主航道之一。作為MLR模型的誕生團隊,顯然我們對它有著強烈的偏愛。最初MLR模型的主要使用方式是」低維統計反饋特徵+MLR」,這是受阿里技術發展初期的軌道限制,讀者不用太驚訝。我們做的第一個工作,就是試圖將MLR模型推向大規模離散特徵體系,核心思考是細粒度的特徵刻畫攜帶的信息量要遠比統計平均特徵的解析度高,這種特徵體系至今在整個業界都是最先進的。要完成這樣一個升級,背後有巨大的挑戰(在DL時代啟動初期,我們也遇到了類似的挑戰),具體包括:
- 從數百維統計特徵到數十億離散特徵,訓練程序要做重大升級,從數據並行模式要升級到模型並行方式,且非線性模型複雜度高,需要充分利用數據的結構化特點進行加速;
- 」大規模離散特徵+分散式非線性MLR模型」解法直接從原始離散特徵端到端地進行數據模式學習,至少在初期時我們沒有做任何的特徵組合,完全依賴模型的非線性能力。在這種互聯網尺度(百億參數&樣本)的數據上,模型能不能學習到兼具擬合能力與泛化能力的範式?
- 這種超大規模數據上的非凸優化(MLR加入正則後進一步變成非光滑)學術界鮮有先例。它的收斂性是一個巨大的問號。
當然,結果是我們成功了。15年初的時候成為了新的技術架構,在定向廣告的所有場景都生產化落地,取得了巨大的成功。但是我們不得不承認,」大規模離散特徵+分散式非線性MLR模型」的解法在業界並沒有大規模地被採納,有多種原因,技術上來講MLR模型的實現細節我們直到17年才正式地寫了一篇論文掛在了arxiv上,代碼也沒有開源,大家想要快速嘗試MLR也不太方便;其次LR+特徵工程的解法深深影響了很多技術團隊的思考方式和組織結構,我們後面會談到,這種對特徵工程的依賴直到DL時代還大量保留著,一個重要的因素也是因為特徵工程比較符合人的直觀認知,可以靠快速試錯並行迭代,MLR這類非線性端到端的解法需要比較強的模型信仰和建模能力。
大約從14年到16年,我們在基礎MLR架構上做了大量的優化,後來以MLR的論文公佈為契機,我在阿里技術官微裡面寫了一篇介紹文章,裡面披露了大量的改進細節,大家有興趣可以翻閱翻閱,算是致敬MLR時代:MLR深度優化細節
1. 技術拐點:端到端深度學習網路的突破
15年的時候,基於MLR的演算法迭代進入瓶頸。當時認識到,要想進一步發揮MLR模型的非線性能力,需要提高模型的分片數——模型的參數相應地會線性增長,需要的訓練樣本量同樣要大幅度增加,這不太現實。期間我們做了些妥協,從特徵的角度進行優化,比如設計了一些直觀的複合特徵,典型的如」hit類特徵」:用戶歷史瀏覽過商品A/B/C,要預估的廣告是商品C,通過集合的」與」操作獲得」用戶歷史上瀏覽過廣告商品」這個特徵。細心的讀者應該很容易聯想到後來我們進一步發展出來的DIN模型,通過類似attention的技巧拓展了這一方法。後來進一步引入一些高階泛化特徵,如user-item的PLSA分解向量、w2v embedding等。但這些特徵引入的代價大、收益低、工程架構複雜。
15年底16年初的時候我們開始認真地思考突破MLR演算法架構的限制,向DL方向邁進。這個時間在業界不算最早的,原因如前所述,MLR是DL之前我們對大規模非線性建模思路的一個可行解,它助力了業務巨大的騰飛,因此當時夠用了——能解決實際問題就是好武器,這很重要。在那個時間點,業界已經有了一些零散的DL建模思路出現,最典型的是B家早期的兩階段建模解法——先用LR/FM等把高維離散特徵投影為數千規模的稠密向量,然後再訓練一個MLP模型。我們最初也做過類似的嘗試如w2v+MLR/DNN,但是效果不太顯著,看不到打敗MLR的希望(不少團隊從LR發展過來,這種兩階段建模打敗LR應該是可行的)。這裡面關鍵點我們認為是端到端的建模範式。