快手內容冷啟動推薦模型實踐
一、快手的內容冷啟動解決什么問題
首先來看一下快手冷啟動要解決的問題。
短期來看,平臺首先要讓更多的新視頻能夠獲得流量,也就是能夠發得出去。同時也要讓發出去的流量有比較好的效率。長期來看,我們也要去探索挖掘更多的高潛新視頻,為整個熱門池提供更多的新鮮血液,緩解生態的馬太效應。提供更多的優質內容,帶來用戶體驗的提升,同時也帶來時長和 DAU 的增長。
通過冷啟動去促進 UGC 作者能夠獲得一些互動的反饋激勵,維持整個生產者的留存。在這個過程中會有兩個約束,第一個是整體的探索成本,流量成本在大盤中要是相對比較穩定的;第二個是我們只干預新視頻低 vv 階段的分發。那么我們如何在這些約束條件下完成整體收益的最大化呢?
視頻冷啟動分發決定了他的成長空間,特別是如果一個作品被分發給了興趣不匹配的人群,會產生兩個方面的影響。第一個是作者的生長會受到影響,長期得不到有效的互動流量激勵,他的投稿的方向以及投稿意愿都會產生變化。第二個是由于早期的流量沒有有效的動作率,系統會認為這是一個不夠優質的內容,它會長期拿不到足夠的流量,這樣它也就成長不起來。
長此以往,生態就會陷入一個比較不好的狀態。比如有一個本地美食的作品,它肯定有一個最適合的受眾人群 A,他的動作率整體是最高的。而另外可能有一個完全不相關的人群 C,在投給這個人群的時候會有一定的挑選性,動作率可能會極低。當然還有第三種人群 B,該人群是一個興趣非常廣泛的人群,雖然這個人群流量很大,但是整體上這部分人群的動作率也是會偏低的。
如果我們能夠盡早的觸達核心人群A提升內容早期的互動率,就可以帶來一個自然流量的撬動分發。但是如果我們早期過多地把流量給到了 C 人群或者 B 人群,就會導致整體的動作率偏低,就會限制他的成長。總而言之,提升冷啟分發效率是完成內容成長的一個最重要的途徑。為了完成內容冷啟動效率的迭代,我們會建立一些中間過程指標和最終的長期指標。
過程指標主要分為兩部分,一個是新視頻的消費表現,主要包括它們的流量動作率;第二個是出坡指標,包括探索向、利用向和生態向。探索向是保證優質的新視頻不漏球,主要觀測曝光大于0,曝光大于100的一些視頻數的增長情況。利用項是看高熱優質新視頻其高 VV 出坡視頻數的增長。生態向主要是看熱門池的優普率。長期來看,由于這是一個通過生態影響帶來的長期變化,所以我們最終在量化方法上會通過 Combo 實驗長期觀察一些核心指標的變化趨勢,包括 APP 時長、作者 DAU 和大盤 DAU。
二、冷啟動建模的挑戰與解決方案
總體來說,內容冷啟動主要包括三個方面的困難。第一個是內容冷啟動的樣本空間與真實求解空間存在巨大的差異。第二個是內容冷啟動的樣本是非常稀疏的,會導致學習不準確,偏差非常大,特別是其在曝光偏差中是處于弱勢的。第三個是視頻成長價值的建模困難,這也是我們規劃中的,正在做的工作。本次重點介紹前兩個方面。
1、樣本空間遠小于真實求解空間的問題
在內容冷啟動優化問題上,樣本空間小于求解空間,這個問題異常突出。特別是內容冷啟動的推薦,要提升索引內容的觸達率,讓更多的視頻有機會透出。
我們認為要解決這個問題,最重要的是在召回階段提升視頻的觸達和透出效率。為了解決冷啟動視頻的召回觸達率。業界普遍的做法是基于 Content-Based,包括屬性倒排、基于語義相似度的一些召回方法,或者是基于雙塔加泛化特征的召回模型,又或者是引入行為空間和內容空間的映射,類似于 CB2CF 的做法。
本次我們將重點介紹兩個比較有意思的新方法,分別是基于圖熵自增強的異構圖網絡和基于 I2U 的星河模型。在技術選型上,我們首先使用 GNN 作為內容冷啟動 U2I 的 Base model。因為我們考慮到 GNN 整體上是歸納式的學習方法,它對于新增節點非常友好,提供了更加的靈活性。另外,GNN 中引入了更多的屬性節點,是增強冷啟動內容觸達的一個重要手段。具體實踐方面,我們也是會引入 user 節點、author 節點和 item 節點,并完成信息的聚合。引入了這種泛化屬性節點后,新內容的整體觸達率得到了極大的提升。但是泛化性過強的中間節點,例如 tag 類目也會引起視頻的感知域不夠個性化,帶來過平滑的風險。從 case 回查上看,我們發現有些喜歡看羽毛球視頻的用戶,現有的這種 GNN 刻畫方案容易引起羽毛球視頻和其他乒乓球、足球等視頻的區分能力不夠好。
為了解決 GNN 建模過程中引入過多泛化信息帶來泛化過度的問題,我們的思路主要是引入更細致化的鄰居刻畫方案,具體會在 GNN 中引入語義自增強邊。從右下角的圖可以看到,我們會基于冷門視頻去尋找它在熱門空間中的相似熱門視頻,然后熱門相似視頻作為冷啟連邊的初始節點,在具體聚合的過程中,我們會基于圖熵減小的原則,進行自增強邊的構造和挑選。具體的挑選方案從公式可以看到,主要是考慮上面這個連邊鄰居節點和當前節點信息的描述。如果兩個節點相似度越高,那么它們的信息熵會越小。下面的節點的分母代表的是鄰居節點整體的感知域,也可以理解為在挑選的過程中,我們更希望尋找到一個感知欲比較強的鄰居節點。
在實踐過程中,我們主要有兩個技巧,一個是相似視頻的特征域和 item id 的特征域要共享 embedding 空間,然后是自增強節點只保留熱門視頻,去除學習不充分節點引入的噪聲。有了這個升級之后,泛化性整體上得到充分保證情況下,有效提升了模型的個性化程度,并帶來了離線和在線的效果提升。
上述方法其實都是從 U2I 視角去建模完成內容觸達的一個提升,但是無法從根本上解決視頻無法觸達的問題。
如果轉化一下思路,從 item 的視角去尋找合適的人群,也就是切換到 I2U 的視角,理論上每一個視頻都有獲取流量的空間。
具體的做法是,我們要訓練一個 I2U 的檢索服務,通過檢索服務動態地為每個視頻檢索興趣人群。通過 I2U 的這種編構圖,反向構建 U2I 的倒排索引,最后根據用戶的實時請求返回 item list 作為冷啟推薦列表。
其中的重點是要訓練一個 I2U 的檢索服務,我們的初版是一個雙塔模型。在實踐的過程中,為了避免掛載用戶過于集中的問題,我們首先會棄用 uid 而使用 action list和 self-attention 的方式有效地緩解用戶聚集問題;同時,為了避免在學習過程 item-id 帶來的學習曝光偏差,我們會棄用 item-id 而引入更多的語義向量、類目、tag 和 AuthorID 等這樣的泛化特征來有效的緩解 item-id 的聚集。從 user 視角來看,引入了這種 Debias 的 loss,然后引入 batch 內的負采樣,更好地避免用戶集中的問題。
雙塔的 I2U 模型是我們的首版實踐,在實踐過程中也有發現了一些問題。首先是雙塔模型存在 user 和 item 交互的局限性,整體的檢索精度受到了限制。另外,還有興趣集中的問題,掛載在用戶身上的內容經常會興趣非常集中,但事實上用戶的興趣是多峰分布。我們還發現掛載的用戶過于集中的問題,大部分的冷啟視頻會掛載在一些頭部用戶身上,這也是不夠合理的,因為畢竟頭部的用戶每天能消費的內容也是有限的。
為了解決上面三個問題,新的解決方案是 TDM 建模和 TDM 分層檢索方式。TDM 的一個好處是可以引入更加復雜的 user-item 交互模式,突破雙塔的交互限制。第二個是使用類似于 DIN 的模式,可以減少對單峰興趣的依賴。最后是 TDM 中引入分層檢索可以非常有效地緩解掛載用戶集中的問題。
此外我們還有一個比較有效的優化點是給父親節點增加子孫節點的聚合表示,增強父親節點的特征泛化和判別精度,就是會把兒子節點通過 Attention 的方式聚合到父親節點,通過層層透傳可以使得中間節點也具有一定的語義泛化能力。
除了 I2U model 之外,我們在最終的系統實踐過程中,還引入了 U2U 的興趣拓展模塊,也就是冷啟視頻如果在某些用戶表現很好,會做一個快速的擴散。
具體與目前業界 U2U 的一些方法是類似的,但是這里的 U2U 興趣擴展模塊主要有三個方面的優勢,一個是 TDM 樹結構相對比較固化,增加這種 U2U 模塊可以更加貼近用戶的實時偏好。此外通過這種實時興趣的擴散,我們也可以突破模型的限制,通過用戶的協同,將內容快速的推廣,帶來多樣性的提升,最終也能提升星河召回的整體覆蓋率,這是我們在實踐過程中的一些優化點。
總的來說,我們通過這些方案能夠有效地解決內容冷啟動的樣本空間和真實求解空間不一致性的問題,使得冷啟動的觸達和覆蓋得到很明顯的提升。
2、冷啟動樣本稀疏學習不準確與偏差大
接下來介紹內容冷啟動樣本稀疏性導致學習不準確和偏差大的問題,這是一個最大的挑戰。這個問題的本質是交互行為的稀疏性,我們把問題展開為三個方向。
首先是樣本上由于冷啟的樣本曝光少,導致 item id 學習非常不充分,從而最終的透出和推薦效率也受到影響。第二個是由于早期分發的不準確,收集的 label 不確定性比較高,置信度比較低。第三個是不做糾偏的情況下,目前訓練范式會將熱度信息引入到 item 的 embedding 中,導致冷啟視頻有可能會被低估,從而分發不出去。
我們主要從四個方向去解決這個問題。第一個是泛化,第二個是遷移,第三個是探索,第四個是糾偏。泛化更多是從泛化特征的角度來完成建模和升級。遷移主要是想把冷門和熱門的視頻當做兩個域,將熱門視頻域或者全量信息域的信息進行有效遷移來輔助冷門視頻的學習。探索主要是引入探索和利用的思想,就是在早期 label 不準確的情況下,我們希望在建模的過程中就引入探索的思想,從而緩解冷啟階段的不置信 label 帶來的負面影響。熱度糾偏是目前比較火的一些方向,我們主要通過門控和正則 loss 的方式來約束熱度信息的使用。
下面具體介紹我們的工作。
首先,泛化是目前解決冷啟動問題一個非常普遍并且常用的手段。但是在我們實踐過程中還是發現,相比于 tag、類目而言,引入一些語義 embedding 其實也是會比較有用的,但是這種直接把語義型特征直接加進來,整體帶來的收益是非常有限的。既然視頻語義空間和行為空間本身存在差異,我們能否通過視頻語義的共性信息得到新視頻在行為空間中的一個近似表征,通過這種泛化的信息來輔助。其實之前我們也提到有些做法,包括 CB2CF 這種思路,它會將泛化信息和真實行為空間做映射學習。我們其實并不是這么做的,實際實踐的過程中我們會根據視頻的語義向量找到和 target item 相似的 similar item list,首先它會和用戶的長短期興趣行為共享行為空間,同時我們會把 similar item list 做聚合,模擬得到候選視頻在行為空間中的表征。其實這個做法跟我們剛才提到的圖召回中引入與候選 item 相似連邊的做法是一脈相承的,這個做法的效果是非常明顯的,在離線 AUC 上有 0.35PP 的提升。
第二個是探索,就是新視頻早期分發不準會導致后驗 CTR 均值偏低,而這種均值偏低也會導致模型認為視頻本身可能質量比較差,最終冷啟動內容的探索性就受到了限制。那么能否建模 PCTR 的不確定性,減緩冷啟階段label的絕對利用和信任。我們嘗試著將一次請求的 CTR 預估轉變為一個 Beta 分布的預估,在線兼顧使用期望和方差。具體在實踐過程中,我們會預估 Beta 分布的一個 α 和 β,具體在 loss 設計是預估的值和真實 label 的均方差的期望值。我們把期望值展開之后會發現需要得到預估值平方的期望和預估值的期望。而這兩個值我們通過預估出來的 α 和 β 可以有效的計算出來, loss 也就生成了,然后我們就能夠訓練 Beta 分布,最后把 Beta 分布的預估值增加一個隊列平衡探索與利用。其實我們在低 vv 階段使用 Beta 的 loss 在 AUC 上有一定的提升,但并不是特別明顯。但我們把貝塔分布在線使用能夠在整體動作率持平的情況下,使得 0vv 的內容有效透出率增長22%。
接下來介紹的是對偶域遷移學習框架。整體的思想是,冷啟動內容通常是高度傾斜的長尾分布,也是流行性偏見中的弱勢群體。如果我們只使用冷啟動樣本,可以一定程度上緩解流行性的偏差,但是會丟失大量的用戶興趣,導致整體的精度下降。
我們目前已有的一些嘗試,大多數是通過高熱樣本的一些欠采樣,或者逆頻率加權或者泛化特征的方式來側重冷啟樣本的學習,但是往往忽略了冷啟動早期行為樣本與熱門視頻的在行為空間上的一個內在共性。
所以我們在設計過程中會把全量樣本和冷啟樣本分為兩個域,就是上圖中的全量域和冷啟域,全量域對所有的樣本都生效,冷啟域只針對冷啟條件的樣本才生效,然后增加雙邊的冷熱知識域的遷移模塊。具體的是會對 user 和 item 分別建模,從全域的樣本塔到冷啟樣本塔的網絡映射,從而在模型層面捕捉隱式的數據增強,提升冷啟動視頻的表示。在 item 側我們會保留全量所有冷啟樣本,此外,也會對一些高熱的視頻根據曝光量進行采樣,保證冷熱域分布的相似性,最終能夠確保整個映射的知識遷移的平滑。
此外我們還增加了一個獨有的對偶流行度門控機制,引入一些流行性特征,用它去輔助冷熱視頻域的融合配比。一方面,新視頻在不同的生命周期下冷啟表達利用率的配比可以得到有效的學習和分配。另一方面,在用戶側也學習了不同活躍用戶對冷啟視頻的敏感度。在實踐過程中,離線效果無論在低 vv 階段還是 4000vv 的 AUC 都有一定的提升。
最后介紹一個在糾偏方面的工作,也就是熱度糾偏。推薦系統經常會面臨著熱度的偏差,整體上是高爆品的狂歡。現有的模型范式擬合的目標是全局的 CTR,推薦熱門可能獲得整體 loss 更低,但也會將一些熱度的信息注入到 item embedding 中,引起高熱視頻被高估。
現有的一些方法一味追求做一些無偏估計,其實也會帶來一些消費的損失。那么我們能否將一些 item embedding 在熱度信息和真實的興趣信息上解耦,有效利用熱度信息和興趣信息做在線融合,這可能是一個更加合理的方式。具體實踐過程中我們參考了同行的一些做法。
重點主要是兩個模塊,一個是做了輸入內容熱度和興趣的正交約束,比如輸入的是 item id、author id 等特征,會生成兩個表征,這兩個表征一個是熱度表征,一個是真實興趣表征,求解過程中會做一個正則約束。第二個是我們會將一些 item 的純熱度信息也生成 embedding 作為視頻的純熱度表征,純熱度表征會根據視頻的真實熱度表征去做一個相似性約束,這樣就可以得到剛才說到的熱度表征和興趣表征,他們一個是表達熱度信息,一個是在表達興趣信息。最后會基于這兩個表征在線添加一個有偏估計和無偏估計的隊列做乘法公式融合。
三、未來展望
最后來分享一下對未來工作的展望。
首先是在人群擴散模型上更加精細化的建模與應用,特別是人群擴散的實時性,包括目前的 lookalike。我們其實也落地了一些 lookalike 的方案,比如在冷啟階段 U2U 的一個擴散應用,我們希望把它做得更精細化。
第二個是糾偏的方案,目前的因果模型在冷啟動糾偏中也是有很多的研究,我們也會在這個方向做持續的研究和探索,特別是對于曝光的糾偏,還有熱度的糾偏,第三個是在樣本選擇上,高熱樣本對于冷啟的推薦還是有更大的價值的,能否在高熱樣本空間中挑選出一些更有價值的樣本,給他們以不同的權重來提升冷啟模型的推薦效率。
第三個是視頻的長期成長價值的刻畫,每個視頻都需要經歷冷啟-成長-穩定-衰落的過程,如何在建模視頻的時候更加關注它的長期收益,也就是成長空間,特別是在撬動價值方面,如何建模不同的單次分發對未來成長的價值差異,這也是一項非常有意思的工作。
最后一個是通過數據增強的方案,無論是樣本還是對比學習的方案,我們都希望引入一些這方面的工作提升冷啟推薦的效率。
四、問答環節
Q1:線上請求都是 user 粒度的,線上是如何把 I2U 的 user 放到向量引擎的?
A1:I2U 模型在離線會不斷在索引庫去找它最相似的用戶,然后根據 item 找到的最相似的 user,再把它轉化為 user-item pair,最后得到 user to item list 的聚合,然后放到 redis 中供線上使用。
Q2:冷啟動的另一面是如何防止頭部內容過熱,樣本占比過高,導致越推越集中,有什么方法嗎?
A2:分享中已經提到了幾個方法,從根本上來說,我們還是從泛化、探索和糾偏的角度去解決。比如 item id 如何初始化,使得它有更好的初始點,同時做一些泛化特征的引入,把泛化特征映射到行為語義空間。然后通過 Beta 分布來提升探索性;還有就是通過引入純內容塔,去除 pid 等存在強記憶的特征,從而引入無熱度偏差的純泛化預估,還有就是糾偏的工作,希望在學習的過程中將熱度因子單獨學習和約束,提供純興趣標準和熱度標準,線上合理的分配熱度標準的使用力度。當然除了這些方法之外我們也嘗試從數據增強緩解冷啟動內容的稀疏性,還有從遷移學習的角度去使用熱門的內容輔助冷啟動內容的學習。
Q3:熱門池的優普率具體是怎么算的?
A3:優普率其實是一個人工參與度非常高的工作,我們不可能完全用 model 去評估一個視頻的優普率。如果我們能夠用模型來評估一個內容,比如曝光量達到5萬的視頻,整體優普率會有人工參與,它一定會推送給審核人員來審核哪些是優普。