CTR模型越来越深,如何让它变轻?
DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving
十方@煉丹筆記看了那么多點擊率相關模型論文,就會發現模型越來越深,越來越復雜,目標都是為了顯式或隱式的挖掘交互特征。然而,復雜的模型會減慢預測推理的速度,提高了服務延遲和高內存使用率,對整個系統而言極不友好。《DeepLight: Deep Lightweight Feature Interactions for Accelerating CTR Predictions in Ad Serving》這篇論文提出了一種面向真實環境的DeepLight框架加速CTR預測。該框架下模型不僅能加速顯式特征的挖掘,還能修剪冗余參數。在Criteo數據集上有46倍的加速,在Avazu數據集上有27倍的加速,卻沒有任何預測精度上的損失。
簡單回顧
預估CTR不僅需要一個良好的模型 還需要設計良好的特征作為輸入。以前很多研究挖掘了大量特征,例如文本特征,單擊“反饋特征”、“上下文特征”和“心理學”特征。為了避免復雜的特征工程,我們需要構建端到端模型,自動挖掘交互特征。
如一個用二階特征+一個正則化的的簡單模型:
考慮到m可能較大,xi xj會很稀疏,Wi,j難以學習,于是就有了FM模型,把參數數量從m*m降到了mk:
由于FM只考慮了二階,后面又出現了很多更高階的模型,如DCN:
DeepFwFM
如何基于DeepFM做改造,達到xDeepFM的效果呢?DeepFwFM就這樣誕生了:
其中w是DNN的參數和偏置,v是n*k的參數矩陣,e是embedding向量集合,R是n*n的矩陣,表示交互特征的強度,Deep層沒啥變化,關鍵看FwFM層:
F(i)表示特征i,VF(i)表示特征i的線性向量表達,RF(i),F(j)表示F(i)和F(j)特征交互權重。
所以這個模型到底有什么優勢呢?
1) DeepFwFM比xDeepFM快得多,因為我們沒有在淺層網絡(FM)中挖掘超過2階的特征。而xDeepFM包含一個強大的壓縮交互網絡(CIN)可以逼近任意多項式,CIN的主要缺點就是時間復雜度遠高于DNN,導致在生產環境中非常高的計算復雜度。
2) DeepFwFM比DeepFM更精確,因為它克服了矩陣分解中的穩定性問題。該模型通過考慮交互特征的權重,提高預測的準確度。
通過對比計算復雜度,我們發現DeepFwFM是遠優于xDeepFM的:
然而這樣也只能比xDeepFm快18倍,說好的46倍呢?由于DNN的存在,在預估時還是慢。然后就來到本篇重點,結構修剪。
結構修剪
看到修剪,就想到剪枝。DeepFwFM如何修剪呢?
- 刪減DNN組件的權重(不包括偏差)以移除神經連接;
- 修剪特征交互矩陣R以去除冗余的相互作用;
- 刪減嵌入向量中的元素,使用稀疏嵌入向量。
通過這3步修剪,模型就會身輕如燕了,如下圖所示:
稀疏DNN的計算復雜度比原來小很多,稀疏的矩陣R也使得FwFM加速,修剪R其實就是做特征選擇,不僅提升性能還能提高準確率,稀疏的embedding能極大的降低內存的使用。
所以應該如何修剪?修剪網絡參數是個np-hard的問題,沒有任何方法能保證找到最優解。在這篇論文,我們使用的修剪算法如下:
我們首先訓練幾個epoch得到一個較優的模型,然后進行剪枝,去除冗余權重。在每次剪枝之后,我們通過fine-tune重新訓練模型,這樣錯誤的剪枝就可以被修復。我們不斷重復這個修剪過程并設置自適應稀疏速率,早期階段使速率較快的增加,后期階段,網絡穩定且變得敏感時,降低速率。有點類似貪心算法,但它也帶來了一些額外的不確定性,在修剪過程中,這可能不會給模型帶來損失。
實驗
沒有剪枝前,如下圖所示我們可以看到交叉特征會帶來精度上很大的提升,但是同時也會導致很高的延遲:
然后我們看剪枝后的DeepLight:
我們發現剪枝后不僅快了很多,還能帶來AUC的略微提升。最后對比下剪枝后各個模型的對比,DeepLight無論是性能還是準確率都是最優的。
更多干貨,請關注公眾號:煉丹筆記
CTR模型越來越"深",如何讓它變"輕"?
總結
以上是生活随笔為你收集整理的CTR模型越来越深,如何让它变轻?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Netflix提出梯度提升决策树网络Ha
- 下一篇: 一个模型能服务所有的点击率模型?