《One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domain CTR Prediction 》
2018年阿里巴巴應用在廣告系統上的推薦架構。同時預估19個domain的ctr 任務。
論文大概內容翻譯
Abstract
1. 傳統工業做法是每一個domain單獨訓練一個ctr模型。但是在大型應用場景里,會有多domain的預測任務。
2. 不同domain的用戶有異有同, data distribution may be different in different domains. 很難用一個模型預測好所有 domain。
3. 這篇論文提出用一個 STAR 模型 serve all domains effectively。
4. STAR 有星結構,有 shared parameters 也有 domain-specific parameters。
5. 這個結構已經應用於阿里巴巴的廣告系統里,帶來了 8%的 ctr 提升,6% 的收入提升。(這篇論文有多處筆誤,后面又寫了 6%ctr 提升)
Introduction
1. 淘寶的CTR 預測需要應用到不同的場景里,最具代表性的有首頁banner的店鋪推薦,還有猜你喜歡,以及只有少量數據的天貓農場。
2. 不同的domain有重合的用戶,share information between domains 有利於模型學習。
3. 但是同一個用戶在不同的domain也會有不同的表現。result in domain-specific data distributions
4. 如果將所有 domain數據混在一起訓練,可能無法提升所有的 domain。
5. 如果每個domain訓練單獨的模型:無視domain之間的共性,讓數據量少的domain學習不充分;線上維護多目標性有成本。
6. 本論文中,我們定義 (x, y, p ):
其中x 是 common feature,例如 user profile, item feature, user historical behavior, context feature等。
y 是 0,1 的 click label
p 是 domain indicator,代表是哪一個 domain。
已知 (x, y) 不同的 domain 有不同的分布。
7. 常見解決此類問題的方法是 multi-task learning
mt 和 md 的主要區別在於是否預測的同一個目標
"directly adapting multi-task approaches to multi-domain ctr prediction cannot sufficiently exploit the domain relationship in the label space to enhance learning"
我的理解是:常見的 mt 是底層 share-embedding,上層過不同的任務。缺少讓所有 examples一起 update的unit。
8. 本論文提出的STAR
centered parameters 用來學習 common knowledge
domain-specific parameters capture specific behaviors
每層都是 element-wise product of STAR
考慮到參數大多數來源於 embedding layer,新添加的參數可以忽略不計。
9. 本文主要貢獻
a. 提出 STAR 結構用來學習 multi-domain ctr prediction
b. partitioned normalization
c. auxiliary netowrk
考慮到 domain_indicator 很重要,於是單獨用一個簡單的2層fully-connected 網絡學習它的 embedding。(我覺得論文這里筆誤了,因為它說 embeddings are fed to then auxilary network 不可能是個循環網絡呀)
Related Work
single-domain ctr prediction
multi-task learning
multi-domain learning
Proposed Approach
3.1 Multi-Domain CTR Prediction
首先 embedding layer: 將 raw feature(user_features, item_features, context features) => dense vecotr (我們的 rosseta 做的事情)
aggregate: 將不定長的 dense vectors aggregate 成 fixed-length vectors(我們的hermes 會將 slot 一致的 embedding 進行 sum-pooling)
fed into multi-layer neural network
final ctr predictor
3.2 Architecture Overview
為了參數量考量,所有domain share feature embeddings.
embedding layers -> pooled to get fixed sizes -> partitioned normalization layer -> fed into star FCN (consist of shared centered FCN and domain-specific FCN) -> 結合 auxiliary network 給出最后 prediction。
(1) PN
有兩個參數,scaler/bias 都是 global scaler/bias 和當前 domain 的結合。
(2) STAR TOPOLOGY fully-connected neural network
假設有M個 domain,則一共有 M+1 FCN,1指的是 centered FCN。
(3) auxiliary network
傳統方法中,all features all treated equally。於是可能很難讓模型自己捕捉到 domain indicator。
auxiliary network: take domain indicator as ID input, map to embedding, concate with other features => 2 layer fully connected network => output as sa
最終和 FCN 的輸出取一個 softmax as the final prediction.
loss function: minimize cross entropy for all domains
4 EXPERIMENTS
data:19 domains in Alibaba production data. 一天訓練,一天測試。不同domain的ctr 差距很大, 1.27% ~ 12.03%
models: 所有的methods 都使用了 auxiliary network。
metrics: impression weighted gauc
論文里面的幾點結論:
- 多目標會損傷某些domain的auc指標
- top layers sharing information 也很重要
- explicitly model domain informations 比 implicitly modeling domain relationship 要好
4.3 Ablation Study
1. PN VS BN , PN 勝利
2. FCN VS no FCN, FCN 勝利
3. FCN + PN boost performance
4. BN VS LN VS PN:
這里的 LN 是 instance-based, 區分channel。發現 LN,PN 都比 BN 好。說明只要區分 channel 就會比base好。
說明:layer normalization是以 instance 維度,歸一化所有特征。
bn 是以 batch維度,歸一化相同特征。
5. auxiliary network improves all methods consistently.
6. 用 predicted_ctr / true_ctr in all domains,可以看出是否學習到了 domain info。
4.4 Production
有些domain has traffic peaks, domain的數據分布在不同時刻會不一致 =》 causing model instable。
阿里解決辦法:keep a buffer, shuffled first, then sampled to construct a mini-batch.
push也有一樣的問題,發送push的階段,數據就多。可以統計每個小時訓練數據占比。
補充:
看了阿里的另一篇 DIEN 以后,對 auxiliary -network 有了另一個想法。
https://zhuanlan.zhihu.com/p/181685769
雖然都是18年的,但是應該 multi-domain 在這篇之后。DIEN 是 base line。
Multilayer Perceptron (MLP) 首先,對一類embedding向量做pooling操作,然后不同類的pooling向量進行聚合,最后,聚合的向量輸入到MLP中做最后的預測。
首先,所有的特征通過embedding layer進行轉換;然后,DIEN采取兩步刻畫興趣演進:interest extractor layer基於行為序列抽取興趣序列,interest evolving layer建模與目標商品相關的興趣的演進過程。最后,興趣的表示和廣告、用戶、上下文特征的embedding vectors拼接后,輸入到MLP進行最后的預測。
之前一直不懂 auxiliary-network 為什么描述成:
the domain indicator is first mapped into embedding and then fed with other features depicting the domain to the auxiliary network. 實際上是代表的意思應該是說,domain indicator 先通過 embedding layer 映射成了 embedding(學習到的),然后再 concat 一些 (0,1)的特征,最終輸入給 auxiliary network。
但是在我們模型里面,沒有辦法將 bias,vec 連接在一起。但是本質上可以看做,復雜網絡和 auxiliary network 都 share domain_indicator 這個特征。所謂的 other features,應該是 domain * topic64 之類的。。。