分享嘉賓:羅清 快手 高級算法工程師
編輯整理:吳祺堯 加州大學聖地亞哥分校
出品平台:DataFunTalk
導讀:推薦系統存在數據分布偏差與數據稀疏的問題,主要體現在群體興趣與用戶個性化的差異不易捕捉、部分反饋信号稀疏、負反饋不靈敏等。而對比學習可以在一定程度上緩解上述問題,提高推薦質量,帶來更好的内生态和用戶體驗。今天分享的主題是對比學習在快手推薦場景的應用探索。
今天的介紹會圍繞下面四點展開:
--
01
背景
首先我們要明确為什麼推薦系統需要對比學習。
因為當前推薦系統存在多種bias現象、興趣差異不易捕捉、負反饋不靈敏等,當然這些問題主要是數據稀疏和數據分布偏差導緻的。如上圖,雖然整體數據量并不少,但是對于每個user,或者item來說,還是過于稀疏。可以看到第四個視頻明顯更受歡迎,産生了流行度偏差。模型在訓練的時候也更容易主導梯度。這些問題嚴重影響了用戶體驗,比如,推送的都是很相似的視頻,用戶點擊了dislike,還會出現類似視頻,所以解決這些問題可以帶來更好的推薦質量。
解決數據稀疏問題的常用方法有數據降維(用更泛化的特征)和減少模型參數等。但是這兩個方法會損失一定的有用信息。解決數據分布偏差問題的常用方法有IPW和重采樣。但是IPW需要計算高方差的概率,使得它在稀疏數據中的穩定性和準确性存在一定限制。
對比學習的優勢在于:
總的來說,對比學習通過挖掘自身數據的信息來為模型提供額外信号,從而帶來信息增益,以此緩解數據稀疏和數據分布偏差的問題。
假設在沒有任何先驗知識的情況下來分辨上圖兩組圖片,可以通過圖片自身蘊含的特征來判斷出貓和貓是一類,而貓和狗是不同類别。
對比學習也是類似的原理,它是一種自監督學習方法,用于在沒有标簽的情況下,通過讓模型學習哪些數據相似或不同來學習數據集的一般特征。類比到上圖中的例子,使用對比學習給模型輸入一部分包含貓的圖片和另一部分包含狗的圖片,可以不使用任何圖片标簽的情況下使得模型學習貓的特征和狗的特征。随後再使用很少的标簽信号對模型進行有監督訓練即可得到很好的分類效果。
下面介紹一下對比學習的流程。
以圖像領域的任務為例,上圖是經典的SimCLR框架。首先輸入一張圖片,通過數據增廣(裁剪、旋轉等)得到兩種不同的圖片。随後它們分别經過一個encoder得到圖片的表征,再經過線性頭投影至同一向量空間中。最後,通過最大化空間中兩個表征之間的相似度來學習更好的encoder表征。經過優化的表征可以被用于下遊任務中,使用fine-tuning來提升模型在目标任務的效果。
對比學習有以下三個常見的研究方向:
常見的有圖像與增廣圖像、圖像與文本、句子與句子、句子與情感進行對比學習。在不同應用場景下,我們可以構造相應的代理任務來達到自監督學習的目的。
模型坍塌即特征經過encoder後得到的embedding都會聚類至空間的一個點上。解決這一問題的常見方法有采集更多的負樣本(使用memory bank)、使用非對稱的模型結構(網絡一個分支包含線性頭而另一分支不使用線性頭)以及非對稱的梯度更新。
常用的方法有裁剪、旋轉、mask、shuffle、dropout等。這裡的增廣樣本其實對于防止模型坍塌也是非常重要的一環,因為增廣的樣本不能讓模型太難學,也不能太簡單,所以實踐中會采用多種增廣來嘗試。
對比學習一般采用InfoNCE作為損失函數,其來源于Contrastive Predictive Coding任務,目标是最大化當前item和上下文c的互信息,使用的方法是利用NCE最大化互信息的下界估計。
NCE是一種近似的最大似然估計,它通過對噪音樣本的分布估計來推斷真實分布。在softmax計算中,分母的歸一化項計算開銷大。NCE将多分類任務轉化為每個樣本與标簽的二分類任務來避免歸一化的計算開銷。如果負樣本的數量趨近于無窮大,那麼NCE就是最大似然估計。所以在對比學習中,采樣的負樣本數量越多,效果越好。
對比學習最終學習的理想表征需要滿足alignment與uniformity兩個性質。
前者代表着相似樣本在學習的向量空間中距離盡可能小,後者代表着樣本表征在學習的向量空間中的分布盡可能均勻。
--
02
最新研究進展
下面介紹對比學習最新的研究進展。
首先,由于對比學習在使用越大的batch size得到的效果越好,但是受限于GPU的内存限制,無法使得batch size無限增大,而MoCo提出了memory bank的設計,它将樣本的表征保存在一個字典中作為之後batch的負樣本。
此外,MoCo的encoder采用了動量更新,保證embedding更新的穩定性。
随後Google提出了SimCLR框架,它舍棄了memory bank的結構,認為采用數據增廣和加入線性頭的方法就足以保證對比學習的模型效果。實際上,MoCo的改進版本也采用了這一策略,發現最終的效果比SimCLR更優。SimSiam采用了非對稱的網絡結構,創造性地提出在對比學習框架中不需要引入負樣本,也不需要采用動量更新的方法優化encoder,而僅僅需要在沒有線性頭的分支加入stop gradient就可以達到防止模型坍塌,同時取得很好的性能的目的。
Bert在NLP領域應用廣泛,但是它學習到的句子表征在向量空間内傾向于産生坍塌現象。這是因為輸入語料存在大量高頻詞,所以語義的高階表征容易被高頻詞主導,使得很多句子的高階語義特征在空間中十分相近。對比學習可以很好地解決這一問題。
美團提出了ConSERT,發現在數據增廣方法中,feature cutoff和shuffle在對比學習中最有效。SimCSE發現僅僅使用dropout就可以有效地解決語義坍塌的問題,且其性能優于ConSERT。出現這一現象的原因在于ConSERT集中在Embedding layer和Pool layer的擾動上,而SimCSE在網絡結構中加入了擾動,所以這啟發了我們在做數據增廣時不僅需要考慮特征層面,也要考慮模型層面的增廣。
阿裡巴巴借鑒了MoCo的思路,加入了memory bank來減少曝光偏差。相較于将曝光未點擊的樣本作為負樣本,他們認為memory bank中存儲的負樣本更加符合全局的樣本分布。在此基礎之上,他們還提出了多意圖對比學習推薦系統Multi-CLRec,在全局的memory bank的基礎之上加入了意圖層面的memory bank。在負采樣時,他們不僅從全局memory bank中選取負樣本,還在所有不同意圖的memory bank中抽取負樣本。
美團提出了S^3-Rec模型,首先使用設計的自監督訓練目标對模型進行預訓練,然後根據推薦任務對模型進行微調。此工作的主要新穎之處在預訓練階段,我們基于MIM的統一形式精心設計了四個自監督的輔助任務:item與attribute的對比學習、sequence與item的對比學習(通過将sequence中的一個item進行mask操作來實現)、sequence與attribute的對比學習以及sequence與segment子序列的對比學習。因此,S^3-Rec能夠以統一的方式來表征不同粒度級别或不同形式數據之間的相關性,并且也可以靈活地适應新的數據類型或關聯模式。通過這樣的預訓練方法,可以有效地融合各種上下文數據,并學習屬性感知的上下文化的數據表示。
ICL認為用戶在點擊商品時存在多種意圖,但這些意圖都是隐性的,潛藏在用戶行為序列裡,我們如果利用好它就能提高推薦的效果。核心思路就是從用戶的行為序列裡面學習用戶隐式意圖的分布函數,然後構造對比學習任務,同一類的拉近,不同類的拉遠。具體地,ICL對用戶的行為序列經過一個encoder後得到表征,并将所有表征進行K-means聚類操作。如果一個行為序列位于其中一個聚類空間中, 拉近該user到他聚類中心的距離,拉遠到其他聚類中心的距離。每次疊代優化後的表征将會在新的循環中重新進行K-means聚類得到新的意圖類。對比學習子任務輔助推薦主任務,最終在實驗中得到了不錯的效果。
CauseRec結合了因果推斷的思想。它認為用戶的行為序列中存在部分噪聲信息,所以它希望判斷行為序列中的item是否可以被替代。進一步,它分别将可替代的item與不可替代的item進行mask操作,使用對比學習的思想将mask可替代item的序列作為正例,mask不可替代item的序列作為負例。可替代性是通過該item與用戶的興趣表征以及target item的相關性排名來進行定義。
--
03
對比學習在快手的應用
下面介紹對比學習在快手的應用。
快手的推薦場景是短視頻,可以獲取的監督信号有觀看時長、喜歡(like)、dislike、收藏、轉發等。之前的做法是對每一種反饋信号都預估一次,最後将預測結果經過線性加權的方式進行打分排序。但是,由于不同類型的标簽分布不一緻,且它們的量綱也有一定差異,所以線性加權并不合适。業界通用的做法是使用各類反饋信号的rank值,但是這一做法丢棄了每一類預測分數之間的絕對值信息。最後,快手定義了短視頻組合收益,其計算公式如上圖所示。随後,我們借鑒了youtube的損失函數設計做了改進,它的好處在于數據兼容性較好,相比回歸,模型的預估值在0到1之間。而且,相比回歸任務,分類任務更加魯棒。
上圖展示了快手排序模型的整體框架。其中綠色框中的排序模型可以使用不同的base模型進行加載。框架中加入了三個輔助任務:user和item之間的輔助對比學習任務、user和user之間的輔助對比學習任務和user的正例子序列和負例子序列的輔助對比學習任務。
第一個輔助任務的設計初衷是消除熱門商品的bias。在推薦場景中,曝光偏差會形成馬太效應,熱門視頻更容易被曝光。5%的熱門item占據了大部分曝光量以及一半的消費時長。同時,這導緻長尾視頻學習不充分。如果我們使用用戶打分随機曝光item,那麼由于侯選池所含item數量衆多,曝光的item大概率不符合用戶興趣,從而影響用戶體驗。如果我們計算曝光概率,采用IPW進行去偏,由于IPW存在計算不準确、不穩定的問題,去偏效果并不能保證。所以,我們采用對比學習通過負樣本采樣與增廣的方法來拟合樣本的無偏分布,這種做法既輕量又高效。
我們采用user點擊或者有正反饋的item作為正樣本。由于我們希望避免正樣本稀疏所帶來的梯度淹沒的問題,我們額外加入了正樣本增廣,這相當于增加了正樣本在所有樣本中的重要性比例。負樣本采樣選用了全局負采樣 In-batch負采樣相結合的方法,借鑒了MoCo的做法使用一個memory bank存儲item的表征實現負樣本的增廣。全局的負采樣更符合樣本分布,但是它的時間複雜度較大,所以我們加入了In-batch負采樣減少複雜度,以部分有偏的代價換取計算效率。
第二個輔助任務旨在挖掘用戶興趣差異。這一任務提出來源于用戶行為序列建模存在的難點:
所以,這就導緻單個用戶的興趣很容易被大衆興趣帶偏。我們可以利用“不同用戶的興趣不同”的先驗知識,使用自監督信号,從不同的角度去觀察同一個用戶(即數據增廣),使其興趣空間的表征是相似的。
具體地,我們使用sequence encoder得到用戶序列的表征和用戶經過增廣後的序列表征,增廣的方式一般采用mask、shuffle和sample。通過對比學習拉近同一個用戶兩個行為序列表征的距離,拉遠不同用戶的行為序列表征距離。
值得注意的是,在不同增廣方式中,mask可以避免行為序列被局部信息主導;shuffle從時序性觸發,對行為序列做随機打亂操作;sample考慮用戶長期行為,使用不同的權重采樣方法,在長期行為序列上随機采樣。在快手的實踐中,在排序階段我們一般注重用戶即時興趣,所以會使用mask的方法進行數據增廣;在召回階段我們側重于用戶長期興趣,所以使用sample的方法做增廣。
第三個輔助任務旨在挖掘用戶細粒度的興趣反饋信号。在快手的推薦場景下,用戶的正反饋種類很多,如點擊、長播、喜歡、訂閱、轉發、下載、收藏等,而用戶的負反饋僅僅隻有顯式的“hate”和隐式的短播。
總而言之,我們的推薦場景的負反饋稀疏,特征和信号都極不充分。由于正反饋樣本數量相對較多,這就導緻它們容易主導訓練梯度;此外,正反饋信号很多情況下反應靈敏,但負反饋信号不敏感,并且由于即使是負反饋也是通過推薦系統挑選出來的,正負反饋的序列相似度比較大,不易區分。所以,我們構建了對比輔助任務,來捕捉單個用戶的多種反饋子序列的差異性。
我們借鑒了CV領域對比學習的想法,文章作者提出将相鄰視頻幀的表征距離拉近,将間隔較大的兩個視頻幀的表征距離拉遠。相似地,我們在序列層面考慮,将用戶正反饋序列表征和用戶正反饋增廣序列的表征距離拉近,将用戶正反饋序列表征和用戶負反饋的序列表征距離拉遠,增加正負反饋的區分度。由于顯示的“hate”負反饋信号較為稀疏,我們采用負反饋序列增廣的方法,将短播引入負反饋樣本中,增加負反饋特征覆蓋。
值得注意的是,由于短播噪聲比較大,在負反饋序列增廣的過程中,我們需要謹慎地設計策略來挑選合适的短播負反饋引入負樣本中。
另外我們在輔助任務上使用了target-attention的方法來構建更細粒度的對比任務。學習的是在item的維度下,正負反饋的對比。粒度更細,同時增加了特征交叉,增強了模型能力。具體地,我們将target item的embedding作為query,用戶的行為序列表征作為key和value,實現在考慮target item特征下用戶行為序列表征的對比學習。
上述框架在排序實驗中人均app時長提升了0.46%,hate率降低了8.92%。由于在快手推薦場景下,一次推全的平均效果提升通常為0.1%,那麼引入對比學習輔助任務的确帶來了很顯著的效果提升。在召回實驗中,人均app時長提升了0.2%。在離線實驗中,由于我們的對比學習框架适用于任何base模型,我們選取SASRec作為基準模型,發現加入對比學習後在HR@20指标上提升了23%,HR@50指标上提升了16%,在NDCG@20指标上提升了28%。
--
04
總結&思考
總結來說,在使用對比學習做推薦排序時,我們加入了user-item輔助任務進行熱門去偏、user-user輔助任務進行用戶興趣差異挖掘和正負反饋對比輔助任務來挖掘用戶細粒度興趣反饋信号。
綜上所述,我們創新性地設計了一種多粒度自監督訓練框架,這是快手也是業界的首次提出和落地。此外,這一對比學習框架易于推廣,可以運用在如推薦、内容生産、商業化等領域。該框架還具有易複用可插拔的優點,可以根據業務和模型特點進行改造,用于召回、排序等不同階段。具體地,在召回階段我們就不需要采用第三個輔助任務來挖掘用戶細粒度興趣,因為召回階段更加關注正反饋信号。
在具體實踐過程中,我們得出以下三點經驗:
--
05
Q&A
Q:對比學習和pair-wise建模有什麼區别?
A:Pair-wise旨在學習排序層面兩個item的相對次序,而對比學習的目的是學習正負樣本直接的表征相似度。
Q:短視頻組合收益公式中各參數的具體含義是什麼?
A:每一項表示一個item是否被收到一類正反饋。如果item得到了相應的正反饋信号那麼就取1,反之則取0。公式中的參數a,b是超參數。
Q:行為序列少的用戶會被采樣到嗎?
A:會。我們需要保證采樣的序列符合樣本的分布,從而盡可能保證分布的無偏性。
Q:模型的耗時是在什麼數量級?
A:我們的排序模型使用在重排階段,它的耗時較低,大約為40~50ms。值得注意的是,對比學習的輔助任務不參與inference,隻在模型訓練階段使用。
Q:召回時使用對比學習框架後,有沒有具體數據證明它對長尾item有效果提升?
A:我們做過相應的分析,發現在召回階段對比學習對長尾item的效果提升十分明顯。由于今天分享的主題是排序相關應用,所以沒有展示召回階段的結果分析。
Q:排序階段的效果提升有沒有可能是統計量随機誤差導緻的?
A:事實上,在相對效果提升層面不存在統計上的随機誤差,因為在快手推薦場景下存在一個置信區間,一般為0.1%。而使用對比學習所帶來的的增益已經超過了這一置信區間。
Q:組合收益公式為什麼是加法而不是乘法?
A:因為在快手場景,點贊、評論、進入個人頁等都是獨立的,沒有先點擊再點贊的關系,所以我們采用的是加法,乘法一般用于這種有先後關系的場景。
Q:負采樣和樣本增廣分别有什麼作用?
A:樣本增廣的目的是讓模型接受難度适中的輸入來學習更好的向量表征。負采樣需要考慮曝光偏差帶來的影響,因為一般情況下我們任務曝光未點擊的item為負樣本,曝光且點擊的樣本為正樣本,使用我們的負采樣方法可以使用未曝光的樣本。
Q:模型更新的粒度是什麼樣的?訓練數據有多大?
A:模型是根據數據流實時更新的,訓練數據的體量是公司内部資産,不方便詳細透露。
Q:如何離線驗證對比學習的效果以及debias的效果?
A:離線實驗中我們與當前state-of-the-art的模型進行對比,即在同一基準模型的基礎上加入對比學習框架後觀察實驗指标的提升程度。我們不僅使用了快手的數據集,還在學術界最新的推薦數據集上做了對比實驗,最終都觀察到了效果的提升。針對長尾item,我們将數據中的長尾商品單獨抽取出來進行指标的計算與對比,最後也得到了更優的效果。
Q:第三個輔助任務中正反饋的類型很多,那麼在具體訓練時有沒有用到所有類型的正反饋?不同類型的正反饋的權重是一樣的嗎?
A:不同類型的正反饋的權重不一樣。我們目前采用的正反饋類型有關注、喜歡和轉發。我們會對這三種反饋按權重做随機采樣,構造正反饋隊列。相對地,由于負反饋較為稀疏,“hate”反饋是被全部采用的,對于”hate”反饋過少的,采用短播序列補充。
Q:In-batch負采樣需要流式糾偏嗎?
A:需要進行糾偏。由于In-batch負采樣對長尾item存在偏差,所以我們在負采樣時是按照曝光頻率進行采樣的。此外,為了進一步接近無偏性,還加入了全局負采樣。
Q:針對全局負采樣和In-batch負采樣有沒有做過消融實驗驗證效果嗎?
A:因為這一想法參考了youtube的文章中提出的方法,所以我們沒有進行消融實驗,而是認為使用這一方法可以得到增益。
今天的分享就到這裡,謝謝大家。
閱讀更多技術幹貨文章,請關注微信公衆号“DataFunTalk”。
分享嘉賓:
活動推薦:
---DataFunSummit2022:多維分析架構峰會
[太陽]時間:6月11日
[太陽]地點:DataFunTalk公衆号直播間
[太陽]報名:私信回複【611】獲取報名鍊接和峰會詳細信息
[擊掌]誠邀各位粉絲朋友們參加本次直播峰會!峰會結束後我們會在公衆号DataFun更新所有講師的PPT資料,屆時可回複關鍵字免費下載!
關于我們
DataFun:專注于大數據、人工智能技術應用的分享與交流。發起于2017年,在北京、上海、深圳、杭州等城市舉辦超過100 線下和100 線上沙龍、論壇及峰會,已邀請超過2000位專家和學者參與分享。其公衆号 DataFunTalk 累計生産原創文章700 ,百萬 閱讀,14萬 精準粉絲。
注:歡迎轉載,轉載請留言或私信。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!