物料冷啟的推薦實踐

架構師修行手冊發表於2023-11-10

來源:之家技術


1. 物料冷啟定義

推薦系統致力於解決使用者的資訊過載、內容的精準投放和公司的目標最大化問題。在汽車之家,每天有數萬至數十萬的新物料產生,新物料代表了新的內容、新的資訊、新的事件和新的趣聞。而這些新物料加入推薦池後,由於其缺乏使用者-物料的行為互動,較難發現其目標使用者從而進行有效投放,在行為資料主導的推薦場景更是如此。為了解決新物料的分發慢、效果差問題,之家進行了一系列的策略和演算法嘗試,顯著提升了新物料的分發速率和分發效果。

物料冷啟的推薦實踐

圖1. 物料推薦狀態變化


2. 物料冷啟最佳化

在汽車之家首頁推薦場景,新物料被定義為24小時內的部分業務線的非商業物料,為提供足夠的資料以供模型學習,新物料需要在24小時內積累產生足夠的使用者-物料互動。由於冷啟定義的時效較短,因此推薦系統的各個鏈路都需要有較強的時效性保證。新內容進入推薦池後,會先後經歷:標籤生產、索引入池、內容召回、模型排序、引擎重排、內容曝光等階段,如圖1所示。其中任何一個環節出現異常,都會影響物料的曝光,如標籤的實時性、索引的實時性、排序分、調權策略的有效性等。因此,冷啟的最佳化,很大一部分是推薦鏈路的最佳化,除此之外,還包括策略層面的最佳化和演算法層面的最佳化。

物料冷啟的推薦實踐

圖2. 新物料的曝光鏈路

2.1

鏈路最佳化

新物料生產後,首先會透過正排系統接入,錄入物料的基本資訊,包括推薦時間、業務標籤、物料推薦狀態等;隨後內容理解服務將進行標籤生產,包括車系、關鍵詞、分類、話題、情感等;正排系統與內容理解標籤都完成校驗後,物料將會被實時索引接入,實時索引代表了所有可推薦物料的集合,物料若不在實時索引中,則無法進行後續推薦;隨後新物料召回模型將根據物料的標籤、標題相似度、後驗表現等進行內容召回;召回的物料進入排序模型進行打分,排序打分完成後,引擎將會根據重排策略對物料進行重排;當新物料被排到使用者的可見曝光範圍內時,則被認為是一次成功的曝光。


在這個曝光鏈路中主要存在以下幾種型別的要求:

1. 各鏈路的實時性:要求標籤生產、索引入池的實時性。標籤生產的延遲將會導致內容召回的延遲和模型排序的劣勢,而索引入池的延遲將直接壓縮物料冷啟時間,導致冷啟失敗;

2. 內容的分發限制:不同業務線內容,具有不同的分發限制,如地域限制、重複限制、內容型別限制等,為保證冷啟的效率,需要提前對此類有限制物料進行過濾或降低曝光目標;

3. 排序鏈路的精簡:大多數推薦系統在排序階段同時存在粗排和精排階段,而新物料由於其部分靜態特徵、離線統計特徵的缺失,在排序階段容易被打上極低的分數,因此新物料的排序鏈路越長,則曝光的機率越低,因此需要精簡新物料的排序鏈路。在之家場景新物料不經過粗排,保證了所有新物料都會輸出一個排序分;

4. 重排方式的有效性:新物料在排序階段容易被打上極低的分數,使用簡單的乘法調權公式,容易出現過度曝光和無法精準控制的情況,因此需要設計更加有效和可控的調權方式。

2.2

演算法最佳化

當上述鏈路的要求都保證之後,物料冷啟動最佳化的工作就已經完成了一大半,或者說最佳化的工作將會變得更加順暢和有效。在演算法最佳化方面,主要的工作集中在物料召回、精排模型和引擎重排上。

► 物料召回

為保證新物料的曝光,則首先必須保證新物料的召回。新物料由於其後驗資料的缺失,在絕大多數的行為召回中不佔優勢,其召回的機率較低,因此必須新增召回單獨對新物料進行召回。而新物料由於其內容的多樣性,需要使用多路召回進行召回。此外使用強化學習進行召回引數配置,為對於行為豐富物料進行熱度召回,對行為稀疏物料進行探索召回。在汽車之家首頁推薦場景,當前一共有7路冷啟召回,按照型別可分為標籤召回、相似度召回、補量召回。

標籤召回:包含車系、品牌、作者、概念標籤、二級分類召回,根據物料的標籤進行召回,召回的順序使用beta分佈進行隨機生成,beta分佈可根據最佳化目標進行設定,包括點選、時長、互動等,beta分佈的公式參考,以點選為例,beta分佈的公式如下:

其中click_base,sight_base分別代表點選、曝光的偏置項,需根據業務場景進行配置;
相似度召回:使用OpenAi的text-embedding-ada-002使用標題進行向量生成,隨後使用faiss進行向量檢索,從而進行召回;
補量召回:對於上述使用標籤召回、相似度召回仍不能達成曝光目標的新物料,使用補量召回進行召回,召回的機率依據曝光缺口進行。
► 精排模型

精排模型在很大程度上決定了物料的曝光效率與曝光效果。新物料由於其統計特徵與部分靜態特徵的缺失,在精排打分上容易過低;此外在精排模型學習中由於其樣本較少,容易在學習過程中被淹沒;因此需要在模型和樣本層面上對新物料的排序進行最佳化。在樣本上,之家使用了統計特徵dropout的策略,對於物料的天級別統計特徵按照一定機率進行隨機置0,隨後輸入模型進行訓練;在模型訓練內部,使用物料的釋出時間的衰減引數對損失進行加權,讓新物料相比老物料有更高的損失。

其中item_publish_time是物料釋出至今的時長,單位為十分鐘。

引擎重排

新物料由於其靜態特徵、統計特徵的缺失,在排序打分中往往會比較佔劣勢,此外精排模型由於其打分範圍分佈交廣(10e-7到1.0),使用乘法公式要保證物料的曝光,則最大需要調整10e7倍。其引數範圍太廣,此外存在倍率太高曝光激增的可能。因此,為從引擎上最佳化新物料的曝光,需要在引擎重排公式上進行最佳化。當前之家使用的新物料重排公式如下:

其中,rank_score代表精排輸出的分數,weight代表調權係數,score代表重排後的得分。在這個調權公式下,調權係數的範圍將會變成0-100,保證了調權係數的有效性。

除此之外,為保證物料能夠在24小時內達成目標曝光量,之家場景按照正常的每日曝光量分佈,為每個物料設定當前時刻的目標曝光下限,目標達成則不進行調權控制,使得物料冷啟的速率儘量平滑,且儘可能自然曝光以保證新物料的分發效果。

2.3

策略最佳化

演算法是在當前策略框架下的最佳化,而策略更像是修建一條新的運河,能夠引導水流的流向,以達成最佳化目標。因此,在冷啟最佳化中,策略在很多程度是更重要的一個最佳化方式。在之家首推,冷啟側的策略最佳化主要包括以下幾個方面。

1. 量控打散:為防止使用者首頁冷啟物料曝光數量過多,控制使用者每刷曝光的新物料數量及間隔條數;

2. 特徵覆蓋:新物料由於其特徵缺失,在排序階段不佔優勢,使用業務線的平均統計特徵數值來進行覆蓋;

3. 策略輪詢:冷啟策略離線執行,5分鐘一批輪詢,同步更新召回、調權、冷啟列表以供下游使用;

4.調許可權制:若當前輪詢物料的調權係數過小,則將該物料從冷啟列表移除,使其自然曝光,若再次超過該閾值,則重新加入列表;

5. 召回限制:為提升冷啟個性化召回的召回佔比,提升冷啟分發效果,冷啟補量召回延遲啟動;

6. 人群限制:為保證新使用者和低活躍使用者的分發效果,提升冷啟物料的分發效果,新物料的冷啟動主要在活躍人群上進行;

7. 冷啟補丁:除了以上策略外,冷啟策略中還包含諸多的補丁,如修復作者等級的變化、推薦時間的變化、物料入池過晚等補丁,這些問題都會影響新物料的統計和分發。


3. 效果及展望

之家內物料冷啟最佳化自2022年中旬開始,到撰稿的時候已去一年,冷啟的成功率(達到目標曝光量的物料比例)從一開始的27%左右上升到99%+,冷啟CTR從一開始的5%上升到14%+,效果有了顯著的提升。

對於後續冷啟的最佳化,筆者認為主要集中在2個方向上:

1. 新物料的定義放寬,如進而最佳化3天內、5天內的新物料,從物料的曝光曲線上進行最佳化,讓後期熱門物料更快的達到熱門推薦狀態,加速優勝劣汰程式;

2. 從物料特徵上,當前物料特徵包含實時和離線特徵兩部分,融合實時與離線特徵,加速特徵生產;

3. 從模型演算法上,放寬新物料的定義,從模型角度上對此類物料進行最佳化,提升業務目標。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70027824/viewspace-2994621/,如需轉載,請註明出處,否則將追究法律責任。

相關文章