首先來介紹一下本文涉及的場景— 「有好貨」場景。它的位置是在淘寶首頁的四宮格,分為一跳精選頁和二跳承接頁。承接頁主要有兩種形式,一種是圖文的承接頁,另一種是短視頻的承接頁。這個場景的目標主要是為使用者提供滿意的好貨,帶動 GMV 的成長,從而進一步撬動達人的供給。
#接下來進入本文的重點,流行偏差。流行度偏差是什麼?為什麼會產生流行度偏差?
#流行度偏差有很多別名,例如馬太效應、資訊繭房,直觀來講它是高爆品的狂歡,越熱門的商品,越容易曝光。這會導致優質的長尾商品或達人創作的新商品沒有曝光的機會。其危害主要有兩點,第一點是使用者的個人化不足,第二點是達人創作的新商品得不到足夠的曝光,使得達人參與感降低,因此我們希望緩解流行度偏差。
從上圖右邊的藍色長條圖可以看出,曝光top10% 的商品在某一天中佔據了63% 的曝光,這證明在有好貨的場景下馬太效應是非常嚴重的。
接下來我們去歸因為什麼會產生流行偏差。首先,需要闡明我們為什麼會在召回截斷做緩解流行度偏差的工作。排序模型擬合的是商品的 CTR,它的訓練樣本包含正樣本和負樣本,CTR 越高的商品越容易獲得曝光。但在召回階段,我們通常會採用雙塔模型,它的負樣本通常會透過兩種方式產生,第一種是全域隨機負採樣,第二種是batch 內負採樣,batch 內負採樣是將同一個batch 取正樣本的其它曝光日誌當作負樣本,所以它在一定程度上可以緩解馬太效應。但是,透過實驗我們發現,全域負採樣實際的線上效率型效果會更好。不過,推薦系統中的全域隨機負採樣可能導致流行度偏差,因為它只為模型提供了正回饋。這種偏差可能歸因於流行度分佈差異和先驗知識幹擾,即使用者傾向於點擊更受歡迎的物品。因此,模型可能會優先推薦熱門物品,而不考慮它們的相關性。
我們也分析了流行度分佈差異,如上圖右邊綠線所示,透過將商品依照曝光頻率分組並計算每組的正樣本平均分,發現即使所有樣本都是正樣本,平均分數也隨曝光頻率的下降而下降。建議系統模型訓練時存在流行度分佈差異與長尾分佈差異。模型會傾向於把流行度資訊注入到商品的 ID 特徵中,導致流行度分佈差異。高爆品所獲得的訓練次數遠大於長尾商品,使得模型過度擬合於高爆品,長尾商品難以得到充足訓練和合理向量表示。如上圖右邊的 TSN 圖所示,藍點表示高曝商品的商品向量,而紅點表示長尾商品的商品向量,顯示出分佈上的顯著差異。而且如上圖右邊的紅線所示,hit ratio 也會隨著曝光數的降低而降低。所以,我們把流行度偏差的產生歸因於流行度分佈差異和長尾分佈差異。
#目前業界的解決者案主要包括兩種,分別為逆傾向評分(IPS)和因果推論。
#通俗來講就是將主任務損失函數中高曝光機率商品的權重調低以避免過度關注高曝光機率商品,從而可以更平均地關注整個正樣本分佈。但是,這種方法需要事先預測曝光機率,這種預測是不穩定的,容易失效或波動較大。
#我們需要建立一個因果圖,i 代表商品特徵,u 代表用戶特徵,c 代表點擊機率,這張圖就表示給模型輸入使用者特徵和商品特徵,預測點擊率。如果我們把流行度偏差也考慮到這個模型中,用 z 來代表,它不僅會影響點擊率,還會影響商品的特徵表示 i,因果推斷的方法是嘗試去阻斷 z 對 i 的影響。
比較簡單的方法是利用商品的一些統計特徵單獨得到一個bias 塔,此時模型會輸出兩個分,一個是真實的點擊率,另一個是商品的流行度分,在線上預測的時候會將商品的流行度分去掉,實現流行度偏差的解耦。
第二種方法是將使用者點擊歸因為兩類,一類是從眾興趣,一類是真實興趣,分別建構樣本聯合訓練。相當於得到兩個模型,一個模型去得到使用者從眾的興趣分,一個模型去得到使用者真實的興趣分。因果推論其實也存在問題,它解決了流行度分佈差異,但無法解決長尾商品缺乏訓練資料的問題。目前的解決方案傾向於消除流行度偏見,但這對於需要「馬太效應」來生存的建議系統可能並不總是有益的。所以,我們建議不要完全去除推薦系統中的流行度偏差,因為流行的項目通常更優質,用戶也有從眾心理和真實興趣兩種心理,完全去除流行度偏差會影響用戶從眾興趣的滿足。應合理利用流行度偏差,不加劇偏差。
我們這次探索的工作就是如何合理地利用流行度偏差,要想合理地利用流行度偏差,需要解決一個困難:「如何提取無偏且學習充分的商品表示?」針對流行度分佈差異,我們需要從商品ID 解耦出真實內容向量和流行度向量。針對長尾分佈差異,我們借鑒了域適應的範式將整體分佈對齊,並借鑒了對比學習的範式將實例分佈對齊。
先來介紹 base 模型的基本架構,base 模型其實就是一個經典的雙塔模型。接下來詳細介紹下我們是如何解決前面提到的兩個問題的(流行度分佈差異和長尾分佈差異)。
特徵解耦模組是本文針對推薦系統中的流行度偏差問題所提出的解決方案。此模組透過將物品向量表示中的流行度資訊與屬性資訊分開來,從而減輕流行度對物品向量表示的影響。具體地,該模組包括流行度編碼器和屬性編碼器,透過多層感知器的組合學習得到每個物品的屬性和流行度向量表示。這個模組的輸入是物品的屬性特徵,例如物品 ID、物品類目、品牌等,如上圖模型結構中的右邊部分所示。這裡會有兩個約束,包括正交正則化和流行度相似度正則化,旨在將流行度資訊與物品屬性資訊分開。其中,透過流行度相似度正則化,模組被鼓勵將嵌入物品屬性的流行度資訊與真實流行度資訊對齊,而透過正交正則化,模組被鼓勵在編碼中保留不同的訊息,從而實現分離流行度資訊和物品屬性資訊的目標。
我們還需要一個學習真實流行度的模組,如上圖模型結構中的左邊部分所示,它的輸入主要就是商品的統計特徵,然後經過一個MLP 得到真實的流行度表示。
接下來,我們想要解決長尾分佈差異的問題。
我們借鑒了遷移學習的思想,實現熱門商品和長尾商品的分佈對齊。我們在原始的雙塔模型中,引入了一個未曝光商品,使用了MMD 的損失函數(如上圖左上所示),這個損失函數希望熱門商品域和長尾商品域的簇中心盡可能靠近,如上圖右上示意圖所示。由於這種域對齊是無監督的,可能會產生負遷移,我們做瞭如下優化:曝光樣本在域對齊損失上的梯度被停止,防止影響到任務損失;對於未曝光樣本,引入精排分進行知識蒸餾。
我們也藉鑒了實例對齊的思想,希望可以學習得到更好的商品向量表示,主要思想就是有效共現次數越多的商品,向量表示越相似。這裡的難點是如何去構造 pair。在使用者有過往行為的商品序列中,天然存在這樣的 pair。以一個使用者舉例,一個樣本包含了一個使用者的行為序列和目標商品,那麼目標商品和使用者行為序列中的每個商品就能構成共現的 pair。我們在經典的對比學習的損失函數的基礎上也考慮了使用者的興趣多樣性和商品頻率,具體的損失函數公式可見上圖中左下部分。
我們可以看一個直觀的示意圖,如上圖中右下所示,灰色的點是目標商品,橙色的點是用戶的行為序列,藍色的點是我們隨機負採樣得到的負樣本。我們希望藉用對比學習的方法去約束使用者行為序列中每個商品都和目標商品靠近。
以上模組有效地得到了商品的無偏內容表示和解耦的流行度表示,我們應該怎樣去應用呢?我們利用了無偏模型和有偏模型聯合訓練的方式,無偏商品向量可以基於解耦模組及正則化提取,為了能夠利用流行度信息,我們還引入了流行度特徵,有偏模型只會繼承流行度偏差,不會加劇偏差。線上服務部分,如上圖右邊所示,我們將無偏的商品表示和有偏的商品表示透過參數α 融合起來得到線上的商品表示,這樣即可透過使用者向量來召回商品,這個α 是調節召回關注流行度資訊的程度。
#
#上圖中展示了這個模型離線及線上的效果。在離線實驗中,我們引入了 C-Ratio 的指標,來衡量召回結果中有多少商品是高曝光商品。透過離線實驗我們可以看出各個模組都有一定程度的貢獻。無偏模型在線上效率指標方面並沒有收益,說明流行度資訊是有用的,我們還是需要使用有偏模型去利用流行度資訊。
今天的分享論文標題是《Co-training Disentangled Domain Adaptation Network for Leveraging Popularity Bias in Recommenders》。
A1:離線產生的,針對一條樣本,我們可以拿到目標正樣本及對應的類別目,然後離線地隨機採樣若干個和目標正樣本相同類目的商品,掛載到訓練樣本中。
Q2:引入同類的未曝光樣本,會不會增加學習難度?Q3:未曝光樣本取得精排分成本會不會很高?
###A3:離線對樣本用精排模型打一遍分,作為特徵來使用,表現還好。 ###############Q4:未曝光樣本是進精排未曝光的樣本嗎? ###############A4:不是,這樣大機率還是高爆品,我們使用的是全域同類目下隨機取樣的結果。 ##########以上是精準推薦的秘術:阿里解耦域適應無偏召回模型詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!