推薦系統的Bias

語言: CN / TW / HK

我們來自位元組跳動飛書商業應用研發部(Lark Business Applications),目前我們在北京、深圳、上海、武漢、杭州、成都、廣州、三亞都設立了辦公區域。我們關注的產品領域主要在企業經驗管理軟體上,包括飛書 OKR、飛書績效、飛書招聘、飛書人事等 HCM 領域系統,也包括飛書審批、OA、法務、財務、採購、差旅與報銷等系統。歡迎各位加入我們。

本文作者:飛書商業應用研發部 黃兆龍

歡迎大家關注飛書技術,每週定期更新飛書技術團隊技術乾貨內容,想看什麼內容,歡迎大家評論區留言~


什麼是推薦系統?

推薦系統的本質可以理解為是三個關鍵元件的反饋迴圈:User、Data、Model;

  • User→Data(Collection):表示從使用者那裡收集資料的階段,這些資料包括user-item的互動行為,比如點選、停留、評分、轉化等,以及一些 side info,比如使用者畫像,物品屬性,上下文等等;
  • Data->Model(Learning):表示根據收集的資料學習推薦模型的階段。其核心是從歷史行為中獲取使用者偏好,並預測使用者對於目標的物品是否喜歡的可能性;
  • Model→User(Serving):表示將推薦結果返回給使用者的階段,以此來滿足使用者的資訊需求。這個階段將影響使用者未來的行為和決策。

通過這個迴圈,使用者和推薦系統之間處於一個相互動態進化的過程,使用者的個人興趣和行為通過推薦系統不斷的得到更新,而推薦系統可以通過不斷更新的資料自我學習。

常見的Bias

What's Bias?

Bias這個詞在推薦系統中很常見,可以翻譯為「偏差」,定義為學習演算法的期望預測與真實結果的偏離程度。上面說到推薦系統本質上是一個反饋迴圈,那麼在這個反饋迴圈的鏈路中每個結點都會導致不同型別的偏差。

Bias in Data (User->Data)

第一類偏差是資料偏差,主要發生在user->data的階段,那麼為什麼會發生這類偏差?

  • 理想中的資料:拿所有的物品去問每個人,拿到每個人對於每個物品的行為資料;
  • 實際中的資料:使用者只能觀測到部分物品,並且只對部分觀測的物品有互動行為資料,同時使用者的互動行為容易受到各種外界因素影響;

所以資料偏差的本質,就是訓練資料集的分佈和理想的測試集分佈不一致;

藍色線是訓練的經驗風險,紅色線是理想的真實風險,

假設訓練資料找到最優解f^T的時候,此時和理想的真實風險,仍然有△L的偏差;

Selection Bias 選擇偏差

選擇偏差主要發生在使用者的顯示反饋中,比如需要使用者對物品進行數字打分的場景(圖書的星級評分,電影的喜好打分等場景),因為使用者可以自由選擇要評分的專案,因此我們收集到的打分資料是稀疏的,並不是所有資料的代表性樣本,這就是選擇偏差的定義。

導致選擇偏差的原因主要有兩點:

  1. 使用者傾向於選擇和評價他們喜歡的物品;
  1. 使用者更有可能對特別好或者特別差的物品進行打分;

Conformity Bias 一致性偏差

一致性偏差,同樣也是發生在使用者的顯示反饋中,但同選擇偏差不同的是,一致性偏差的原因並非是受觀測到的資料所影響,更多是受人的“社會性”因素以及“從眾效應”所影響,一致性偏差的定義如下:

一致性偏差發生在使用者的行為往往趨於與“同組”的其他人相似,即使這樣做違背了他們自己的判斷,使得反饋並沒有反映出使用者的真實偏好。

  • 假設《阿甘正傳》我看完心裡覺得只值2星:

    • 如果我看不到別人的評價,也不知道別人對該影片的評價,可能就會打出2星;
    • 如果評價的時候看到了統計資料,發現大部分人都評價5星,我可能想自己是不是太苛刻了,或者我是不是沒看懂,可能就會給個4星;
    • 如果評價的時候看到了具體打分的資料,裡面有我的很多朋友都給出了5星的評價,那我可能為了融入大家,也同樣打出個5星;

Exposure Bias 曝光偏差

  • 顯示反饋:比如評分、評級等行為,表示使用者明確對物品的態度,資料準確性較高,但比較稀疏;
  • 隱式反饋:主要反映在使用者的自然行為中,比如檢視、停留、點選、購買等等,資料量非常大,但準確性不足且包含噪聲;
  • 曝光偏差,就是發生在使用者的隱式反饋中,因為使用者只能接觸到一部分特定的物品,那麼對於未觀察到的互動,可能代表著使用者不感興趣,也可能是使用者不知道但可能感興趣,這種情況就帶來了曝光偏差;
    • 曝光偏差通常有若干種情況:
    • 因為曝光的物品是受之前推薦系統的影響,它控制著哪些物品會曝光,因此曝光偏差也會稱作“previous model bias”;
    • 使用者通常會積極的搜尋自己感興趣的物品,也會更積極的與感興趣的物品互動,使得高度相關的物品更可能被曝光,在這種情況下,曝光偏差也叫做“user-selection bias”;
    • 使用者的背景也是影響曝光的因素,比如說社交關係,地理位置等,也會影響曝光的物品;
    • 使用者更可能看到熱門的物品,因此“popularity bias”也是某種意義上的曝光偏差;

Position Bias 位置偏差

位置偏差也是發生在使用者的隱式反饋中:使用者傾向於與推薦列表更高位置的物品進行互動,無論物品的實際相關性如何,所以導致互動的物品可能不會高度相關,位置偏差在推薦系統中非常常見,尤其是廣告系統和搜尋引擎中。

  • 有幾種原因可能導致位置偏差:
    • 人眼的可視角度是有限的(120度左右),根據眼球追蹤的研究來看,使用者一般不太注意垂直列表中排名較低的物品,會更容易注意到列表的頭部位置;
    • 使用者通常會更信任列表中的Top結果,然後停止檢視後面的結果,導致使用者沒有全面的評估整個列表(搜尋引擎中很常見)

Bias in Model (Data->Model)

Inductive Bias 歸納偏差

歸納偏差是發生在資料到模型的訓練階段,是指為了讓模型更好的學習目標函式以及泛化訓練資料,我們不得不做出一些額外的假設而帶來的偏差。

  • 機器學習的核心就是為了預測那些模型沒有見過的資料,那麼沒有對資料或者模型的假設,就無法實現模型的泛化性,所以在構建推薦系統的時候需要對目標函式新增一些假設,有一些比較典型的例子:
    • 在矩陣分解演算法裡,會將使用者和物品的互動估算成二者向量的內積,這就是一種假設;
    • 在負取樣的過程中,會取樣一些hard資料來提升模型學習能力,要麼由此產生的損失函式與原始的就會有所區別;
    • 在label的選取上,使用者對一個視訊是否感興趣,應該使用播放時長為目標,還是完播為目標,不同的目標都帶來了不同的假設;

Bias and Unfairness in Results (Model→User)

Popularity Bias 流行度偏差

流行度偏差,簡單來說熱的更熱,冷的更冷,受歡迎的物品被推薦的頻率甚至比它們的受歡迎程度更頻繁 ,為什麼會出現這種偏差?

長尾效應在推薦系統中很常見,大多數情況下,一小部分流行的物品會佔據大多數使用者的互動,此類資料的訓練將會導致熱門物品的打分越來越高,推薦熱門商品的頻率甚至比資料集中顯示的原始受歡迎程度還要頻繁;

  • 流行度偏差會帶來很多問題:
    • 會降低使用者的個性化體驗,由於不同使用者的偏好各不相同,始終推薦熱門商品會損害使用者體驗;
    • 會降低結果公平性,因為熱門商品並不總是高質量,過度推薦高熱會擠壓其他優質內容;
    • 進一步增加了流行物品的曝光機會,導致未來收集的資料更加的不平衡,導致馬太效應;

Unfairness 不公平偏見

關於公平的一種定義:沒有基於個人或群體的內在或後天特徵而對他們有任何偏見或偏袒

那麼推薦系統中不公平偏見,即是系統不公平的歧視某些個人或群體,以利好其他人;

不公平問題一直在推薦系統中很常見。特別是根據種族、性別、年齡、教育水平或財富等屬性,不同的使用者群體在資料中的代表性通常不平等。在對此類不平衡資料進行訓練時,這些模型極有可能瞭解這些代表性過高的群體,在排名結果中強化他們,並可能導致系統性歧視並降低弱勢群體的可見度;

    • 在簡歷推薦領域,優秀學歷的人更容易排序在前面;
    • 在書籍推薦領域,推薦男性作者的書籍會讓推薦表現更好;
    • ...

Feedback Loop Amplifies Biases

推薦系統本質上就是一個迴圈,那麼當迴圈的每個路徑過程中都會發生偏差的情況下,就會變成惡性迴圈不斷的放大Bias。

常見的Debias方法

上面系統介紹了學術界常見的7種Bias,本文針對其中工業界最常見的3種bias總結了一些解決的方法。

Methods for Exposure Bias

Debiasing in evaluation

第一類方式主要從模型評估的角度出發,引入IPS來糾偏

Inverse Propensity Score

理想中的評估方式:

$$$$R(\hat{Z})=\frac{1}{|\mathcal{U}|} \sum_{u \in \mathcal{U}} \frac{1}{\left|\mathcal{G}{u}\right|} \sum{i \in \mathcal{G}{u}} c\left(\hat{Z}{u i}\right) $$$$

  • $$$$\hat{Z}_{u i} $$$$是推薦系統返回的關於user和item的打分,函式c是我們的衡量指標(auc,ndcg等)
  • $$$$\mathcal{G}_{u} $$$$代表了和user相關的所有item的集合

但是由於曝光偏差,使用者只觀察到部分專案,因此模型通常根據有偏見的隱式反饋進行評估:

$$$$\begin{aligned} \hat{R}{\mathrm{AOA}}(\hat{Z}) &=\frac{1}{|\mathcal{U}|} \sum{u \in \mathcal{U}} \frac{1}{\left|\mathcal{G}{u}^{}\right|} \sum_{i \in \mathcal{G}_{u}^{}} c\left(\hat{Z}{u i}\right) \ \end{aligned} $$$$

  • $$$$\mathcal{G}_{u}^{*} $$$$代表了那些被曝光給使用者的物品集合;

為了解決這個問題,我們可以給每一條隱式反饋的資料增加一個反向的傾向分$$$$\rho_{u i} $$$$。直覺的做法就是降低曝光資料的權重,同時提升未曝光資料的權重。因此,基於IPS的無偏評估的定義如下:

$$$$\begin{aligned} \hat{R}{\mathrm{IPS}}(\hat{Z} \mid \rho) &=\frac{1}{|\mathcal{U}|} \sum{u \in \mathcal{U}} \frac{1}{\left|\mathcal{G}{u}\right|} \sum{i \in G_{u}^{*}} \frac{c\left(\hat{Z}{u i}\right)}{\rho{u i}} \ &=\frac{1}{|\mathcal{U}|} \sum_{u \in \mathcal{U}} \frac{1}{\left|\mathcal{G}{u}\right|} \sum{i \in \mathcal{G}{u}} \frac{c\left(\hat{Z}{u i}\right)}{\rho_{u i}} \cdot s_{u i} \end{aligned} $$$$

在實際應用中,該方法是否有效主要取決於IPS的設計,如果設計不好,可能會引入更大的人為偏差;

Debiasing in Model Training

第二類方式主要是在模型訓練中修正bias的方式,為了可以從隱式反饋提取負例的資料,一種直觀的策略是把所有未曝光的資料都當做負例,但是每條資料需要賦予一個置信度的權重。

我們的目標函式通常可以這麼表示:

$$$$\hat{L}{W}=\frac{1}{|\mathcal{U}||\mathcal{I}|} \sum{u \in \mathcal{U}, i \in \mathcal{I}} W_{u i} \delta\left(\hat{r}{u i}, s{u i}\right) $$$$

  • $$$$s_{ui} $$$$表示user和item是否有真正的互動行為;
  • $$$$W_{ui} $$$$表示置信度權重,控制$$$$(u,i) $$$$有可能存在互動行為的概率

那麼問題的核心就變成了置信度的權重該如何設計,通常有如下幾種常見的方式:

Heuristic

核心思路:

  • $$$$s_{ui}=1 $$$$的時候,$$$$W_{ui} = 1  $$$$
  • $$$$s_{ui}=0 $$$$的時候,$$$$W_{ui} = c (0< c <1) $$$$

    • 權重和user相關:$$$$W_{u i}=c_{u}, c_{u} \propto \textstyle\sum_{i} s_{u i} $$$$使用者互動的item越多,使用者的權重就越高(意味著這些使用者有更大的可能性觸達未曝光的物品)
    • 權重和item相關:item被曝光的次數越高,權重越大(意味著曝光越多的物品越有可能性觸達給沒看過的使用者)
    • 權重可以和user-item之間的特徵相似性有關,特徵越相似則權重越高

缺點:

  1. 不同的user-item組合權重可能是不一樣的,需要依賴豐富的人工知識+大計算資源來網格搜尋;
  1. 沒法辦法手動指定百萬級以上資料的權重,粗粒度的權重可能引入更多的人為偏差;

Sampling

核心思路:通過取樣的方式來控制哪些資料可以進行模型訓練以及這些資料的訓練頻次,假設取樣概率為$$$$p_{ui} $$$$,那麼損失函式等價於:

$$$$\mathbb{E}{(u, i) \sim p}\left[\delta\left(\hat{r}{u i}, s_{u i}\right)\right]=\sum_{u \in \mathcal{U}, i \in \mathcal{I}} p_{u i} \delta\left(\hat{r}{u i}, s{u i}\right) $$$$

那麼取樣分佈其實就等價於我們的置信度權重;

  • 最常見的方式就是隨機負取樣,對於流行的負樣本可以過取樣,因為更可能被曝光;
  • 利用更多的side info在補充取樣策略,比如利用曝光未點選的資料,利用社交網路的資訊,利用item-based的知識圖譜

Methods for Position Bias

關於位置偏差的消偏方式,主要有兩大類方法:

Click Models

第一類方法是在模型中引入position的資訊,在模型訓練中進行消偏;

  1. position作為特徵(Airbnb的做法):

    1. 直接在模型特徵中加入position特徵,讓模型自己學習,在預測的時候將特徵置為0,這樣處理會比較容易導致結果下降(訓練時過度依賴位置資訊,預測時位置資訊丟失,導致變差)
    2. 為了減少相關性計算對position feature的依賴,可以在訓練階段對position feature進行Dropout,能夠一定程度減少模型對位置特徵的依賴
  1. position作為模組(shallow tower)(YouTube的做法)

如果不去除position bias,那麼使用者對一個item的ctr是由user engagement(使用者偏好)和position bias共同造成的。如果能夠將user engagement和position bias獨立開來,將有助於提升模型的推薦質量。

YouTube提出的做法類似wide&deep,即新增一個淺層網路(shallow tower),輸入position feature, device info(原因是在不同的裝置上會觀察到不同的位置偏差), 以及其他能夠帶來位置偏差的特徵,輸出為position bias分量。這就將user engagement和position bias 獨立開來了。

在主模型的輸出層的sigmoid啟用函式之前,加上淺層網路的bias分量。訓練的時候,隨機丟掉10%的位置特徵,防止模型過度依賴位置特徵。預測的時候,直接丟掉淺層網路。

  1. position作為模組(PAL)(Huawei的做法)

首先有這樣的假設:如果使用者點選了某個物品,那麼一定是“看到了”該物品,並且對該物品感興趣,那麼使用者對於物品i在位置p點選的概率可以表示為:

$$$$\begin{aligned} &P(C=1 \mid u, i, p) \ &=\underbrace{P(C=1 \mid u, i, E=1)}{r{u i}} \cdot \underbrace{P(E=1 \mid p)}{h{p}} \end{aligned} $$$$

  • 如果使用者點選了物品,則該物品必須被人眼看到了;
  • 如果使用者看到了該物品,那麼點選概率僅取決於其相關性;
  • 使用者是否看到該物品僅取決於位置

基於該假設,就可以分開建模:

其中:ProbSeen部分是預估廣告被使用者看到的概率,pCTR部分是使用者看到廣告後,點選廣告的概率,然後loss是兩者的結合:

$$$$L \left(\theta_{p s}, \theta_{pCTR}\right) =\frac{1}{N} \sum_{i=1}^{N} l\left(y_{i}, bCTR_{i}\right)=\frac{1}{N} \sum_{i=1}^{N} l\left(y_{i}, \operatorname{ProbSeen}{i} \times p C T R{i}\right) $$$$

線上servering的時候,直接預估pCTR即可(ProbSeen都看作是1);

PAL的設計其實和ESMM非常類似,都是將事件拆解為兩個概率事件的連乘,只不過PAL的假設過強,某些場景下這樣的假設並不合適。

PAL和shallow tower的區別在於PAL是連乘概率,而shallow tower是類似wide&deep的相加。

IPS/IPW

第二類方法是用通用的IPS方法來解決,引入和位置相關的傾向分,來對訓練loss進行調權,

$$$$L_{\mathrm{IPS}}(f)=\sum_{u \in \mathcal{U}, i \in I} \frac{1}{\rho(q)} s_{u i} \lambda(u, i \mid f) $$$$

我們引入和位置q相關的$$$$\rho(q) $$$$來作為每個instance的loss的權重,這個模型背後的直覺是,那些使用者更難看見的物品(比如排序更靠後的物品)應該賦予更大的權重,以此來彌補償位置偏差的影響。

Methods for Popularity Bias

關於流行度偏差的消偏方式,主要有幾種方法:

Adversarial Learning

利用對抗學習的思路,設計一個判別器D來抵消這種偏差,提升長尾資料的曝光機會;

判別器D的輸入有兩個,

一個是生成的“流行-長尾”pair對$$$$\left(\tilde{i}^{p}, \tilde{i}^{n}\mid u\right) $$$$,通過推薦系統的結果生成;

一個是真實的“流行-長尾”paire對$$$$\left(i^{p}, i^{n}\right) $$$$,通過全域性的共現取樣中得出;

通過推薦模型G和判別器D的對抗訓練,可以讓判別器D學出流行物品與長尾的潛在聯絡,同時讓推薦模型G能夠學到和使用者歷史相關的長尾物品。從而為使用者推薦各種長尾物品。

Causal Graphs

因果圖是反事實推理的有力工具,假設使用者的點選取決於興趣和流行度,那麼可構建如圖a的因果圖:

在實際應用過程中如圖b,可以將使用者和物品的Emebdding解耦為興趣Embedding和流行度Embedding,利用多工的框架訓練,讓興趣Embedding和流行度Embedding儘可能獨立,空間足夠遠,最終在線上應用的時候,可以只用興趣的Embedding,以此來消除流行度偏差。

參考資料



加入我們

掃碼發現職位&投遞簡歷

官網投遞:job.toutiao.com/s/FyL7DRg