圖文並茂!推薦算法架構——粗排

導語 | 粗排是介於召回和精排之間的一個模塊,是典型的精度與性能之間 trade-off 的產物。理解粗排各技術細節,一定要時刻把精度和性能放在心中。

在上篇_《__詳細解讀!推薦算法架構——召回__》_中我們結合算法架構召回進行解讀分析,本篇將深入重排這個模塊進行闡述。

一、總體架構

粗排是介於召回和精排之間的一個模塊。它從召回獲取上萬的候選 item,輸出幾百上千的 item 給精排,是典型的精度與性能之間 trade-off 的產物。對於推薦池不大的場景,粗排是非必選的。粗排整體架構如下:

二、粗排基本框架:樣本、特徵、模型

目前粗排一般模型化了,基本框架也是包括數據樣本、特徵工程、深度模型三部分。

(一)數據樣本

目前粗排一般也都模型化了,其訓練樣本類似於精排,選取曝光點擊爲正樣本,曝光未點擊爲負樣本。但由於粗排一般面向上萬的候選集,而精排只有幾百上千,其解空間大很多。只使用曝光樣本作爲訓練,但卻要對曝光和非曝光同時預測,存在嚴重的樣本選擇偏差(SSB 問題),導致訓練與預測不一致。相比精排,顯然粗排的 SSB 問題更嚴重。

(二)特徵工程

粗排的特徵也可以類似於精排,由於其計算延遲要求高,只有 10ms~20ms,故一般可以粗分爲兩類:

(三)深度模型

粗排目前已經基本模型化,其發展歷程主要分爲四個階段:

第一代:人工規則策略,可以基於後驗統計,構建一個人工規則。比如融合 item 的歷史 CTR、CVR、類目價格檔、銷量等比較核心的因子。人工規則準確率低,也沒有個性化,也不可能實時更新。

第二代:LR 線性模型,有一定的個性化和實時性能力,但模型過於簡單,表達能力偏弱。

第三代:DSSM 雙塔內積深度模型。它將 user 和 item 進行解耦合,分別通過兩個 Tower 獨立構建。從而可以實現 item 向量離線存儲,降低線上 predict 延遲。主要有兩種範式:

第四代:item 和 user 隔離,導致二者沒有特徵交叉能力,模型表達能力弱。故又提出了以 COLD 爲代表的第四代模型,輕量級 MLP 粗排模型。它通過 SE block 實現特徵裁剪,並配合網絡剪枝和工程優化,可以實現精度和性能之間的 trade-off。

三、粗排優化

粗排的幾個主要問題:

(一)精度提升

精度提升的方案主要有精排蒸餾和特徵交叉,主要還是要優化特徵交叉問題。

精排模型作爲 teacher,對粗排模型進行蒸餾學習,從而提升粗排效果,這已經成爲了目前粗排訓練基本範式

特徵交叉可以在特徵層面,也可以在模型層面實現。特徵層面就是手工構造交叉特徵,作爲模型底層輸入,仍然可以在獨立的 Tower 中。模型層面則使用 FM 或者 MLP 等實現自動交叉。主要方法有:

特徵蒸餾:teacher 和 student 使用相同的網絡結構,teacher 模型使用普通特徵和交叉特徵,student 則只使用普通特徵。student 從 teacher 中可以學到交叉特徵的高階信息。

加入交叉特徵:特徵層面構建手工交叉特徵,獨立的 Tower 中使用。由於交叉特徵難以離線存儲,實時計算空間也很大,故這個獨立的 Tower 不能過於複雜。那我們第一時間就想到了 wide&deep 模型。deep 部分仍然使用 DSSM 雙塔,wide 部分則爲交叉特徵。

輕量級 MLP:模型層面實現特徵交叉,不進行獨立分塔。比如 COLD,通過特徵裁剪、網絡剪枝、工程優化等方式降低時延,而不是靠獨立分塔。

(二)延遲降低

精度和性能一直以來都是一個 trade-off,很多方案都是在二者之間尋找平衡。粗排的性能要求更高,其延遲必須控制在 10ms~20ms 以內。性能優化有很多常見方法。

主要有以下方法:

網絡結構搜索 NAS:使用更輕量級,效果更好的模型。可以嘗試網絡結構搜索 NAS。

(三)SSB 問題

粗排解空間比精排大很多,和精排一樣只使用曝光樣本,導致嚴重的樣本選擇偏差問題。可以把未曝光樣本的精排打分給利用起來,緩解 SSB 問題。

作者簡介

謝楊易

騰訊應用算法研究員

騰訊應用算法研究員,畢業於中國科學院,目前在騰訊負責視頻推薦算法工作,有豐富的自然語言處理和搜索推薦算法經驗。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/HbDzTiIFCxEOY-VcASN3pA