愛奇藝個性化推薦排序實踐
在海量的內容在滿足了我們需求的同時,也使我們尋找所需內容更加困難,在這種情況下個性化推薦應運而生。
在當前這個移動互聯網時代,除了專業內容的豐富,UGC內容更是爆發式發展,每個用戶既是內容的消費者,也成為了內容的創造者。這些海量的內容在滿足了我們需求的同時,也使我們尋找所需內容更加困難,在這種情況下個性化推薦應運而生。
個性化推薦是在大數據分析和人工智能技術的基礎上,通過研究用戶的興趣偏好,進行個性化計算,從而給用戶提供高質量的個性化內容,解決信息過載的問題,更好的滿足用戶的需求。
愛奇藝推薦系統介紹
我們的推薦系統主要分為兩個階段,召回階段和排序階段。
召回階段根據用戶的興趣和歷史行為,同千萬級的視頻庫中挑選出一個小的候選集(幾百到幾千個視頻)。這些候選都是用戶感興趣的內容,排序階段在此基礎上進行更精準的計算,能夠給每一個視頻進行精確打分,進而從成千上萬的候選中選出用戶最感興趣的少量高質量內容(十幾個視頻)。
推薦系統的整體結構如圖所示,各個模塊的作用如下:
- 用戶畫像:包含用戶的人群屬性、歷史行為、興趣內容和偏好傾向等多維度的分析,是個性化的基石
- 特征工程:包含了了視頻的類別屬性,內容分析,人群偏好和統計特征等全方位的描繪和度量,是視頻內容和質量分析的基礎
- 召回算法:包含了多個通道的召回模型,比如協同過濾,主題模型,內容召回和SNS等通道,能夠從視頻庫中選出多樣性的偏好內容
- 排序模型:對多個召回通道的內容進行同一個打分排序,選出最優的少量結果。
- 除了這些之外推薦系統還兼顧了推薦結果的多樣性,新鮮度,逼格和驚喜度等多個維度,更能夠滿足用戶多樣性的需求。
推薦排序系統架構
在召回階段,多個通道的召回的內容是不具有可比性的,并且因為數據量太大也難以進行更加精確的偏好和質量評估,因此需要在排序階段對召回結果進行統一的準確的打分排序。
用戶對視頻的滿意度是有很多維度因子來決定的,這些因子在用戶滿意度中的重要性也各不相同,甚至各個因子之間還有多層依賴關系,人為制定復雜的規則既難以達到好的效果,又不具有可維護性,這就需要借助機器學習的方法,使用機器學習模型來綜合多方面的因子進行排序。
排序系統的架構如圖所示,主要由用戶行為收集,特征填充,訓練樣本篩選,模型訓練,在線預測排序等多個模塊組成。
機器學習的主體流程是比較通用的,設計架構并不需要復雜的理論,更多的是需要對細節,數據流和架構邏輯的仔細推敲。
這個架構設計吸取了以前的經驗和教訓,在通用機器學習的架構基礎上解決了兩個問題:
訓練預測的一致性
機器學習模型在訓練和預測之間的差異會對模型的準確性產生很大的影響,尤其是模型訓練與在線服務時特征不一致,比如用戶對推薦結果的反饋會實時影響到用戶的偏好特征,在訓練的時候用戶特征的狀態已經發生了變化,模型如果依據這個時候的用戶特征就會產生非常大的誤差。
我們的解決辦法是,將在線服務時的特征保存下來,然后填充到收集的用戶行為樣本中,這樣就保證了訓練和預測特征的一致性。
持續迭代
互聯網產品持續迭代上線是常態,在架構設計的時候,數據準備,模型訓練和在線服務都必須能夠對持續迭代有良好的支持。
我們的解決方案是,數據準備和模型訓練各階段解耦,并且策略配置化,這種架構使模型測試變得非常簡單,可以快速并行多個迭代測試。
推薦機器學習排序算法演進
上古時期
我們第一次上線機器學習排序模型時,選用了比較簡單的Logistic Regression,將重點放到架構設計上,盡量保證架構的正確性。除此之外,LR模型的解釋性強,方便debug,并且通過特征權重可以解釋推薦的內容,找到模型的不足之處。
在模型訓練之前,我們首先解決的是評測指標和優化目標的問題。
評測指標(metrics)
線上效果的評測指標需要與長遠目標相匹配,比如使用用戶的投入程度和活躍度等。在我們的實驗中,業界流行的CTR并不是一個好的評測指標,它會更偏向于較短的視頻,標題黨和低俗內容。
離線評測指標是按照業務來定制的,以便與在線評測指標匹配,這樣在離線階段就能夠淘汰掉無效策略,避免浪費線上流量。
優化目標(objective)
機器學習會按照優化目標求解最優解,如果優化目標有偏差,得到的模型也存在偏差,并且在迭代中模型會不斷地向這個偏差的方向學習,偏差會更加嚴重。
我們的方法是給樣本添加權重,并且將樣本權重加到loss function中,使得優化目標與評測指標盡可能的一致,達到控制模型的目的。
LR是個線性分類模型,要求輸入是線性獨立特征。我們使用的稠密的特征(維度在幾十到幾百之間)往往都是非線性的,并且具有依賴性,因此需要對特征進行轉換。
特征轉換需要對特征的分布,特征與label的關系進行分析,然后采用合適的轉換方法。我們用到的有以下幾種:Polynomial Transformation,Logarithmic or Exponential Transformation,Interaction Transformation和Cumulative Distribution Function等。
雖然LR模型簡單,解釋性強,不過在特征逐漸增多的情況下,劣勢也是顯而易見的。
- 特征都需要人工進行轉換為線性特征,十分消耗人力,并且質量不能保證
- 特征兩兩作Interaction 的情況下,模型預測復雜度是。在100維稠密特征的情況下,就會有組合出10000維的特征,復雜度高,增加特征困難
- 三個以上的特征進行Interaction 幾乎是不可行的
中古時期
為了解決LR存在的上述問題,我們把模型升級為Facebook的GBDT+LR模型,模型結構如圖所示。
GBDT是基于Boosting 思想的ensemble模型,由多顆決策樹組成,具有以下優點:
- 對輸入特征的分布沒有要求
- 根據熵增益自動進行特征轉換、特征組合、特征選擇和離散化,得到高維的組合特征,省去了人工轉換的過程,并且支持了多個特征的Interaction
- 預測復雜度與特征個數無關
假設特征個數n=160決策數個數k=50,樹的深度d=6,兩代模型的預測復雜度對比如下,升級之后模型復雜度降低到原來的2.72%
GBDT與LR的stacking模型相對于只用GBDT會有略微的提升,更大的好處是防止GBDT過擬合。升級為GBDT+LR后,線上效果提升了約5%,并且因為省去了對新特征進行人工轉換的步驟,增加特征的迭代測試也更容易了。
近代歷史
GBDT+LR排序模型中輸入特征維度為幾百維,都是稠密的通用特征。
這種特征的泛化能力良好,但是記憶能力比較差,所以需要增加高維的(百萬維以上)內容特征來增強推薦的記憶能力,包括視頻ID,標簽,主題等特征。
GBDT是不支持高維稀疏特征的,如果將高維特征加到LR中,一方面需要人工組合高維特征,另一方面模型維度和計算復雜度會是O(N^2)級別的增長。所以設計了GBDT+FM的模型如圖所示,采用Factorization Machines模型替換LR。
Factorization Machines(FM)模型如下所示,具有以下幾個優點:
模型公式
前兩項為一個線性模型,相當于LR模型的作用
第三項為一個二次交叉項,能夠自動對特征進行交叉組合
通過增加隱向量,模型訓練和預測的計算復雜度降為了O(N)
支持稀疏特征
這幾個優點,使的GBDT+FM具有了良好的稀疏特征支持,FM使用GBDT的葉子結點和稀疏特征(內容特征)作為輸入,模型結構示意圖如下,GBDT+FM模型上線后相比GBDT+LR在各項指標的效果提升在4%~6%之間。
典型的FM模型中使用user id作為用戶特征,這會導致模型維度迅速增大,并且只能覆蓋部分熱門用戶,泛化能力比較差。在此我們使用用戶的觀看歷史以及興趣標簽代替user id,降低了特征維度,并且因為用戶興趣是可以復用的,同時也提高了對應特征的泛化能力。
我們主要嘗試使用了L-BFGS、SGD和FTRL(Follow-the-regularized-Leader)三種優化算法進行求解:
- SGD和L-BFGS效果相差不大,L-BFGS的效果與參數初始化關系緊密
- FTRL,較SGD有以下優勢:
- 帶有L1正則,學習的特征更加稀疏
- 使用累計的梯度,加速收斂
- 根據特征在樣本的出現頻率確定該特征學習率,保證每個特征有充分的學習
FM模型中的特征出現的頻次相差很大,FTRL能夠保證每個特征都能得到充分的學習,更適合稀疏特征。線上測試表明,在稀疏特征下FTRL比SGD有4.5%的效果提升。
當代模型
GBDT+FM模型,對embedding等具有結構信息的深度特征利用不充分,而深度學習(Deep Neural Network)能夠對嵌入式(embedding)特征和普通稠密特征進行學習,抽取出深層信息,提高模型的準確性,并已經成功應用到眾多機器學習領域。因此我們將DNN引入到排序模型中,提高排序整體質量。
DNN+GBDT+FM的ensemble模型架構如圖所示,FM層作為模型的最后一層,即融合層,其輸入由三部分組成:DNN的最后一層隱藏層、GBDT的輸出葉子節點、高維稀疏特征。DNN+GBDT+FM的ensemble模型架構介紹如下所示,該模型上線后相對于GBDT+FM有4%的效果提升。
DNN模型
- 使用全連接網絡,共三個隱藏層。
- 隱藏節點數目分別為1024,512和256。
- 預訓練好的用戶和視頻的Embedding向量,包含基于用戶行為以及基于語義內容的兩種Embedding。
- DNN能從具有良好數學分布的特征中抽取深層信息,比如embedding特征,歸一化后統計特征等等。
- 雖然DNN并不要求特征必須歸一化,不過測試發現有些特征因為outlier的波動范圍過大,會導致DNN效果下降。
GBDT模型
- 單獨進行訓練,輸入包含歸一化和未歸一化的稠密特征。
- 能處理未歸一化的連續和離散特征。
- 能根據熵增益自動對輸入特征進行離散和組合。
FM融合層
- FM模型與DNN模型作為同一個網絡同時訓練。
- 將DNN特征,GBDT輸出和稀疏特征進行融合并交叉。
使用分布式的TensorFlow進行訓練
使用基于TensorFlow Serving的微服務進行在線預測
DNN+GBDT+FM的ensemble模型使用的是Adam優化器。Adam結合了The Adaptive Gradient Algorithm(AdaGrad)和Root Mean Square Propagation(RMSProp)算法。具有更優的收斂速率,每個變量有獨自的下降步長,整體下降步長會根據當前梯度進行調節,能夠適應帶噪音的數據。實驗測試了多種優化器,Adam的效果是最優的。
工業界DNN ranking現狀
- Youtube于2016年推出DNN排序算法。
- 上海交通大學和UCL于2016年推出Product-based Neural Network(PNN)網絡進行用戶點擊預測。PNN相當于在DNN層做了特征交叉,我們的做法是把特征交叉交給FM去做,DNN專注于深層信息的提取。
- Google于2016年推出Wide And Deep Model,這個也是我們當前模型的基礎,在此基礎上使用FM替換了Cross Feature LR,簡化了計算復雜度,提高交叉的泛化能力。
阿里今年使用attention機制推出了Deep Interest Network(DIN)進行商品點擊率預估,優化embedding向量的準確性,值得借鑒。
總結
推薦系統的排序是一個經典的機器學習場景,對于推薦結果影響也十分重大,除了對模型算法的精益求精之外,更需要對業務的特征,工程的架構,數據處理的細節和pipeline的流程進行仔細推敲和深入的優化。
Ranking引入DNN僅僅是個開始,后續還需要在模型架構,Embedding特征,多樣性,冷啟動和多目標學習中做更多的嘗試,提供更準確,更人性化的推薦,優化用戶體驗。
End.
作者:Michael
來源:http://www.36dsj.com/archives/102164
本文來源于人人都是產品經理合作媒體@36大數據,作者@Michael
題圖來自PEXELS,基于CC0協議
收獲非常大 產品經理也能看懂 而且還能收獲一堆核心迭代思路和算法迭代指標,例如特征轉換成本,特征數量,特征記憶能力,結構信息的深層特征學習,泛化能力,復雜度。以上指標可以指導我們更好迭代各大場景的算法,如果未來能結合場景就更好了
太深奧,還得深入學習,不能放松……
太深奧