(觀後感)阿里媽媽首次公開自研CTR預估核心演算法MLR

(觀後感)阿里媽媽首次公開自研CTR預估核心演算法MLR

1. CTR預估演算法現狀及進展

  之前也看過CTR預估演算法,大部分都是LR、FM、FFM、GBDT互相堆疊,在現實中看到還有先利用LR做多維embedding,然後再加上影象CNN特徵再做LR。LR主要的難點是特徵離散化後特徵維度特別高,實習時看到的分散式最多支援1E多特徵,實際使用特徵維度大概也接近1E。LR缺陷是沒有計算特徵之間互相影響的部分,FM將特徵互動加入了計算中,FFM再將同一特徵離散出來的特徵帶上Field的概念,我之前的部落格中也轉載過美團的FFM演算法,有興趣的可以看下。GBDT的話就不用多說了,並沒有針對CTR的改進就是使用的原版。

2. MLR具體演算法

  首先直觀的根據公式感受一下,公式非常簡單,很快就能感受到創造者的思路
 直觀來說,左邊是一個softmax類似的分類器,右邊是一個標準二分的LR分類器,不知道大家直觀的感受是什麼,我看完後感覺就是這個演算法是先對特徵做了個主題分析判斷,然後再在各個主題中建立LR,這樣的模型表達能力也就是VC維肯定是比LR要高的,比較像是級聯了兩個分類器。
  舉個栗子,假如我的特徵由我購買過的所有商品組成,每個商品擁有不同的主題分類,加入有3種商品,我購買了10次1類商品,20次2類商品,20次3類商品(假設商品不加權,而且這個假設比較極端,每個商品只有一個主題),那麼我的特徵經過前面這個分類器很可能就訓練成(0.2,0.4,0.4),後米這部分計算的是商品具體的吸引力,因為我假設商品主題只有一個的緣故,假設這次計算商品時第2類的,所以後面這部分很可能是(0,0.5,0),最終CTR=0.2*0 0.4*0.5 0.4*0=0.2,CTR跟我對這類商品的需求以及這個具體商品的吸引力成正比。
  這裡面超引數分片數m可以較好地平衡模型的擬合與推廣能力。當m=1時MLR就退化為普通的LR,m越大模型的擬合能力越強,但是模型引數規模隨m線性增長,相應所需的訓練樣本也隨之增長。因此實際應用中m需要根據實際情況進行選擇。例如,在我們的場景中,m一般選擇為12。下圖中MLR模型用4個分片可以完美地擬合出資料中的菱形分類面。
這個樣本MLR能夠分開的原因也是因為首先做了一個分類,將這個矩陣對摺兩次,分成左上左下右上右下四個部分,每個部分的資料分佈都是可以用簡單的線性分類器直接分開的,公式的前半部分做的就是類似對摺分開的工作。
綜合談一下MLR的優點,這優點是文章自己總結的,我直接拿過來了:1.結構先驗(在之前的栗子中已經比較清楚了);2.線性偏置,這個東西如果看過SVD推薦的就會比較瞭解,簡單來說就是根據矩陣分解到的值預測使用者屬性和商品屬性的均值再加上各自的偏好,能夠細化模型更準確的預測,其實就是根據實際情況進行微調
3.模型級聯,這個優點其實LR自身就有,加上我覺得MLR在某種程度上也是兩個分類器的級聯,其實這個優點就可以忽略不計了;4.增量訓練,這個就是將已有的模型引數來進行初始化然後再在新的樣本上訓練,網際網路公司都這樣首先必須保證不降低當前的精度才能上線,不然上線就算是事故了。。。

3.
大規模分散式實現

  原文裡感覺說了和沒說差不多啊。。。首先分散式的構架區別是每一個分散式節點都構架的server和worker兩種角色,這個沒有細節說明也不知道具體區別,要是隻將server和worker建立在每一個分散式節點上,我去改下configure檔案就能做到了,不知道具體指的充分利用每個節點的CPU和記憶體在哪做到的。
  第二部分的tricks,引用原文(此外,針對個性化廣告場景中資料的結構化特性,我們提出並實現了common feature的trick,可以大幅度壓縮樣本儲存、加速模型訓練。例如下圖示意,在展示廣告中,一般來說一個使用者在一天之內會看到多條廣告展現,而一天之內這個使用者的大量的靜態特徵(如年齡、性別、昨天以前的歷史行為)是相同的,通過common
feature壓縮,我們對這些樣本只需要儲存一次使用者的靜態特徵,其餘樣本通過索引與其關聯;在訓練過程中這部分特徵也只需要計算一次。在實踐中應用common feature trick使得我們用近1/3的資源消耗獲得了12倍的加速。)

講真的我不是黑,我看到這個圖還以為解釋的是COO稀疏矩陣怎麼轉CSR或者CSC矩陣。

(看完之後總的來說感覺沒有比較有新意的東西比較像是包裝了級聯分類,也可能是我太菜,不喜勿噴)