推薦系統中的冷啟動問題和探索利用問題

達觀資料發表於2019-01-07

1 前言

網際網路技術和大資料技術的迅猛發展正在時刻改變我們的生活,影片網站、資訊app、電商網站等每天都有大量的活躍使用者在不斷的產生海量的使用者行為,同時,每天又都產生大量的新增PGC或者UGC內容(如小說、資訊文章、短影片等)。

推薦系統的角度來看,系統每時每刻都面臨大量的新舊使用者、新舊物品和大量的使用者行為資料,對於使用者,我們需要對要使用者進行建模,去刻畫使用者的肖像和興趣,然而我們常常面對的情況是使用者的行為是稀疏的,而且可能存在比例不一的新使用者,如何給新使用者推薦,是推薦系統中的一個著名問題,即冷啟動問題,給新使用者展示哪些item決定了使用者的第一感和體驗;同時在推薦過程中,我們需要考慮給新item展示的機會,比如給一個喜歡科幻電影的user推薦一些非科幻型別的電影,提高推薦的多樣性,這就是推薦系統中另外一個問題,即探索和利用的問題。

2 冷啟動和EE問題

推薦系統需要根據歷史的使用者行為和興趣偏好預測使用者未來的行為和興趣,因此歷史使用者行為某種程度上成為推薦推薦的重要先決條件。實際過程中,我們面對大量的新使用者,這些使用者我們並不知道他們的profile,對於這些使用者,常用的冷啟動的演算法包括根據已有的個人靜態資訊(年齡、性別、地理位置、移動裝置型號等)為使用者進行推薦。然而實際情況下,我們很難在系統中直接獲取這些使用者資訊。給新使用者推薦的item,由於成本較高(使用者不感興趣就再也不來了),我們需要保證item要足夠熱門,要保證足夠的多樣性,同時儘量保證可區分。 

與使用者的冷啟動相對應的,則是item的冷啟動,當一個新物品加入站內,如何快速的展現的使用者。特別是在某些場景下,推薦列表是給使用者展示的唯一列表,那麼顯而易見,只能在推薦列表中嘗試給使用者推薦新物品。對於CF演算法來說,無論是基於領域還是基於模型,如果想要這個新物品被推薦出來,顯然我們需要獲得使用者對這個物品的行為資料。一個最簡單的做法就是在推薦列表中隨機給使用者展示新物品,但是這樣顯然不太個性化。一個較好的做法是將新物品推薦給曾經喜歡過與新物品相似物品的使用者。由於新item沒有使用者行為,因此物品相似度只能從item自身出發,包括根據item的內容資訊挖掘出item的向量表示,透過向量相似度來刻畫物品相似度,還可以利用topic model挖掘出item的主題分佈等等。

推薦系統需要考慮對使用者興趣的不斷探索和細化,同時也需要儘可能的擴大展示物品的多樣性和寬度。比如極端情況下給使用者展示物品的場景只有推薦列表,同時我們需要儘可能最佳化的ctr,那麼給冷啟動使用者我們該如何選擇物品,如何快速的探測出使用者的興趣?

舉例來說,對於一個熱愛足球的足球迷我們該如何選擇給他推薦的物品?比較簡單的方式我們可以可以根據ctr排序,給冷啟動使用者推薦最熱門、點選率最高的物品,給他推薦點選率最高的足球相關物品,顯然這樣做會保證我們推薦結果的ctr會比較高,但是這樣做會減少我們推薦結果的覆蓋率,降低推薦結果的多樣性,以致於推薦物品候選集也會收斂,出現反覆推薦。比如對於資訊來說,使用者看到的資訊都是點選率較高的搞笑類,但是顯然“搞笑”並不能刻畫的興趣。而這也就是我們必須得不斷探索使用者興趣,擴大推薦結果多樣性的原因。

簡單來看這其實是一個選擇問題,即探索(exploration)和利用(exploitation)問題。接下來本文接下來將詳述EE問題和某些已有演算法。

3 多臂老虎機模型和UCB演算法

當你走進一家賭場,面對20個一模一樣的老虎機,你並不知道它們吐錢的機率。假設你的成本是1000元,每搖一次的成本是2元,那麼你在總共500次搖臂的機會下,該如何最大化你的收益呢? 這就是多臂老虎機問題(Multi-armed bandit problem, K-armed bandit problem, MAB)。

一個簡單的做法就是每臺老虎機我們都搖10次,餘下的300次都選擇成功率最高的那臺。但是顯然我們耗費了200次機會來探索,而且我們仍然無法保證實驗成功率最高的那臺老虎機就是真實成功率最高的。大家也可以猜到,如果我們有足夠多的探索機會,那麼我們幾乎可以選擇出成功率最高的老虎機。很遺憾,我們沒有足夠的探索機會,對應到我們的推薦問題中就是任何的使用者展示pv都是珍貴的,況且實際情況的“老虎機”遠遠不止20臺,而且還存在不斷新加入的情況,這就導致獲取每個item收益率的成本太大。

 我們使用累計遺憾(collect regret)來衡量策略的優劣:

推薦系統中的冷啟動問題和探索利用問題

t表示當前輪數,推薦系統中的冷啟動問題和探索利用問題表示平均最大收益,推薦系統中的冷啟動問題和探索利用問題表示 第t輪的實際收益。累計遺憾公式表明了實際累計收益和理想最佳收益的差值。為了簡單起見,我們假設每臺機器的收益為伯努利收益,即收益要麼是0,要麼是1。對應到推薦系統中,老虎機即對應我們的物品(item),每次搖臂即認為是該物品的一次展示,我們可以用是否點選來表示收益,點選(win)的收益就是1,沒有點選(lose)的收益就是0。

解決bandit問題的演算法眾多,一般分為基於semi-uniform的策略、probability matching 策略、pricing策略等。這裡只列舉若干個策略,具體大家可以參考(https://en.wikipedia.org/wiki/Multi-armed_bandit)。

Epsilon-greedy策略:每次試驗都以推薦系統中的冷啟動問題和探索利用問題的機率選擇前面試驗中平均收益最佳的item,以推薦系統中的冷啟動問題和探索利用問題的機率等機率隨機選擇其他item,該策略簡單,而且可以透過推薦系統中的冷啟動問題和探索利用問題 

Epsilon-first策略:該策略探索和利用交叉選擇,總試驗次數為N,探索次數為推薦系統中的冷啟動問題和探索利用問題,探索階段也是等機率隨機選擇所有item,利用階段也是選擇平均收益最好的機器。

 Epsilon-decreasing策略:與Epsilon-greedy策略近似,不同地方在於推薦系統中的冷啟動問題和探索利用問題隨著試驗的進行會不斷減少。

UCB(Upper Confidence Bound)演算法

推薦系統中,通常量化一個物品的收益率(或者說點選率)是使用點選數/展示數,例如點選為10,展示數為8,則估計的點選率為80%,在展示數達到10000後,其表現ctr是否還能達到80%呢? 顯然是不可能的。而這就是統計學中的置信度問題,計算點選率的置信區間的方法也有很多,比如威爾遜置信空間(https://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval#Wilson_score_interval)。

UCB演算法步驟包括:首先對所有item的嘗試一下,然後每次選擇以下值最大的那個item:

推薦系統中的冷啟動問題和探索利用問題,其中推薦系統中的冷啟動問題和探索利用問題是物品推薦系統中的冷啟動問題和探索利用問題到目前的收益均值,推薦系統中的冷啟動問題和探索利用問題本質上是均值的標準差。t是目前的試驗次數,推薦系統中的冷啟動問題和探索利用問題是這個item被試的次數。

這個公式表明隨著每個物品試驗次數的增加,其置信區間就越窄,收益機率就越能確定。如果收益均值越大,則被選中的機會就越大(exploit),如果收益均值越小,其被選中的機率也就越少,同時哪些被選次數較少的item也會得到試驗機會,起到了explore的作用。

Probability-matching策略表明一臺機器的選擇次數應當與它是最佳收益item的機率相同。其中Thompson取樣就是一種Probability-matching策略演算法,該演算法也是一個的線上學習演算法,即透過不斷的觀察資料來更新模型引數

Thompson取樣

Thompson取樣假設每個item的收益率為p,那麼如何來估計一個item的收益機率p呢?直接用試驗結果的收益機率p是否合理呢? 比如一個item給使用者展示了20次,使用者點選了16次,那麼我們可以認為這個item的收益率是80%嗎?而這顯然是不合理的,因為我們首先需要考慮的就是這個收益率的置信度,20次試驗得出的結果置信度小於試驗了10000次試驗的置信度,其次可能我們的經驗表明所有item的平均收益率只有10%。

Thompson取樣使用Beta分佈來描述收益率的分佈(分佈的分佈: https://en.wikipedia.org/wiki/Beta_distribution),我們透過不斷的試驗來估計一個置信度較高的基於機率p的機率分佈。假設機率p的機率分佈符合Beta(wins, lose),beta分佈有兩個引數wins和lose,每個item都維護了beta分佈的引數,每次試驗都選擇一個item,有點選則wins增加1,否則lose增加1。每次選擇item的方式則是:用每個item的beta分佈產生一個隨機數,選擇所有item產生的隨機數中的最大的那個item。Beta分佈機率密度函式如下:

推薦系統中的冷啟動問題和探索利用問題

推薦系統中的冷啟動問題和探索利用問題

舉例來說,推薦系統需要試探新使用者的興趣,假設我們用內容類別來表示每個使用者的興趣,透過幾次展示和反饋來獲取使用者的興趣。針對一個新使用者,使用Thompson演算法為每一個類別取樣一個隨機數,排序後,輸出取樣值top N 的推薦item。獲取使用者的反饋,比如點選。沒有反饋則更新對應類別的lose值,點選了則更新對應類別的wins值。

4 LinUCB演算法 

回到推薦列表的場景,推薦系統為使用者推薦物品。user和item都可以用一系列特徵表示。使用者特徵包括使用者的統計歷史行為、人口學屬性資訊;物品特徵包括描述資訊、類別資訊等等。在這種場景下,探索和利用也必須是個體使用者級別上實施,因為不同使用者看到相同的物品的反饋差異較大。

LinUCB演算法是一種基於上下文特徵(使用者特徵、物品特徵)的UCB演算法,基於特徵進行探索和利用。該演算法結合上下文特徵,選擇給使用者的推薦物品,同時利用使用者反饋及時修正選擇策略,以達到最大化收益(提升點選率)的目標。

使用互斥線性模型的LinUCB

LinUCB演算法假設推薦item的每次展現收益(是否點選)是和上下文特徵成線性關係的,即:

推薦系統中的冷啟動問題和探索利用問題

其中推薦系統中的冷啟動問題和探索利用問題表示使用者特徵和物品特徵的合集,推薦系統中的冷啟動問題和探索利用問題表示第t次嘗試的收益,a表示item,推薦系統中的冷啟動問題和探索利用問題表示物品a的位置係數向量。可以看出各個item的模型引數是相互獨立的(互斥)。推薦系統中的冷啟動問題和探索利用問題設(d*m)表示為m個訓練上下文,推薦系統中的冷啟動問題和探索利用問題表示每個上下文的實際收益,對訓練資料推薦系統中的冷啟動問題和探索利用問題使用嶺迴歸訓練出的物品a的引數為:推薦系統中的冷啟動問題和探索利用問題

其中推薦系統中的冷啟動問題和探索利用問題表示d*d的單位矩陣。其中在置信度推薦系統中的冷啟動問題和探索利用問題下,模型收益與期望收益滿足:

推薦系統中的冷啟動問題和探索利用問題

其中推薦系統中的冷啟動問題和探索利用問題推薦系統中的冷啟動問題和探索利用問題

上述等式給出了物品a期望收益的一個UCB,因此也就引申出了UCB的選擇策略,對於第t次試驗,選擇以下式中最大值的物品,

推薦系統中的冷啟動問題和探索利用問題

其中推薦系統中的冷啟動問題和探索利用問題。上述模型中預期收益推薦系統中的冷啟動問題和探索利用問題的標準差推薦系統中的冷啟動問題和探索利用問題

推薦系統中的冷啟動問題和探索利用問題 以上為互斥線性模型LinUCB的基本演算法流程,其中結合上述內容,第一行推薦系統中的冷啟動問題和探索利用問題引數控制了explore的程度,即推薦系統中的冷啟動問題和探索利用問題越大,置信區間上限也就越大,也就加大了explore的程度;4-7行對於新物品,使用單位陣和0l向量進行引數初始化;8-9行計算item a的置信區間上限;11行選擇最優item;12-13行更新選擇item的模型引數

思想上LinUCB演算法類似於對召回結果重排序的方法,也是考慮使用者和item的特徵,來計算出收益最大的item,不同的是LinUCB借鑑了UCB的置信區間的方法來平衡exploit和explore問題,同時從LinUCB演算法是一個線上的學習演算法,與一般離線演算法需要離線訓練不同,LinUCB隨著每次展示和反饋會不斷最佳化我們的模型引數和收益。

關於LinUCB演算法的介紹請參考論文http://rob.schapire.net/papers/www10.pdf 

5 CLUB演算法

CLUB(online clustering bandits)演算法假設將全部使用者劃分成若干個使用者群,每個使用者群對相同推薦內容的反饋是一致的,同時自適應的調整使用者群。與liner bandit一樣,CLUB演算法也是根據特徵計算收益,不同的是CLUB演算法中相同群體使用者共享相同的引數向量,即第i個使用者對item a的收益為:推薦系統中的冷啟動問題和探索利用問題

其中表示第i個user,推薦系統中的冷啟動問題和探索利用問題表示第i個user所屬的使用者群編號,推薦系統中的冷啟動問題和探索利用問題表示每個使用者群的引數向量,x表示上文下特徵,推薦系統中的冷啟動問題和探索利用問題表示噪聲項。

該演算法在時刻t,對於使用者i,維護一個向量推薦系統中的冷啟動問題和探索利用問題的估計值推薦系統中的冷啟動問題和探索利用問題。與liner bandit演算法相似,推薦系統中的冷啟動問題和探索利用問題根據收益反饋不斷更新。與LinUCB演算法類似的,推薦系統中的冷啟動問題和探索利用問題可以根據協方差矩陣推薦系統中的冷啟動問題和探索利用問題(d*d維,初始化為單位陣)的逆和向量推薦系統中的冷啟動問題和探索利用問題(d維向量,初始化為0向量)計算得出。除此之外,演算法需要維護一個無向圖推薦系統中的冷啟動問題和探索利用問題,每個節點表示一個user。演算法首先從完全圖開始,根據推薦系統中的冷啟動問題和探索利用問題表示時刻t的使用者劃分群。顯然初始狀態下的演化逐步移除節點之間的邊。定義第t時刻的使用者群個數為推薦系統中的冷啟動問題和探索利用問題推薦系統中的冷啟動問題和探索利用問題,……推薦系統中的冷啟動問題和探索利用問題表示時刻t的使用者劃分群。顯然初始狀態下推薦系統中的冷啟動問題和探索利用問題=1,推薦系統中的冷啟動問題和探索利用問題(全部使用者)。

在每個時刻t(1,2,……),使用者推薦系統中的冷啟動問題和探索利用問題,相關上下文特徵向量集合為推薦系統中的冷啟動問題和探索利用問題,使用者推薦系統中的冷啟動問題和探索利用問題所屬的群為推薦系統中的冷啟動問題和探索利用問題。CLUB演算法根據收益選擇item的式如下:

推薦系統中的冷啟動問題和探索利用問題

其中推薦系統中的冷啟動問題和探索利用問題是透過同使用者群內各個節點透過最小方差逼近擬合計算得出的聚合權重向量,CB為推薦系統中的冷啟動問題和探索利用問題向量的置信區間上限。

CLUB演算法觀察到item的收益推薦系統中的冷啟動問題和探索利用問題後,更新協方差矩陣推薦系統中的冷啟動問題和探索利用問題,更新

推薦系統中的冷啟動問題和探索利用問題;雖然不會更新其他節點的M和b,但是會隱式的影響下一輪的聚合權重向量推薦系統中的冷啟動問題和探索利用問題;接下來判斷節點推薦系統中的冷啟動問題和探索利用問題與相鄰節點的引數向量(推薦系統中的冷啟動問題和探索利用問題)距離,如果足夠大,則將該邊移除。

CLUB演算法的完整流程如下:

推薦系統中的冷啟動問題和探索利用問題

其中推薦系統中的冷啟動問題和探索利用問題控制探索的程度,推薦系統中的冷啟動問題和探索利用問題是使用者關係是否刪除的控制引數。上述演算法流程包含了刪除關係邊的條件,其中推薦系統中的冷啟動問題和探索利用問題 是t時刻前歷史上i使用者被選中的次數。

CLUB演算法首先提出了基於協同概念的bandit演算法,即每次使用者預測對item收益是由這個所屬的群體的聚合權重向量引數所決定的,同時根據個人反饋更新個人引數,個人引數又隱式的影響群體引數和使用者群體的劃分。據CLUB演算法論文介紹,在一些公共資料集中,取得了比LinUCB更好的效果,關於CLUB演算法的更多細節請參考https://arxiv.org/abs/1401.8257

結束語

本文簡單介紹了推薦系統中一直存在的兩大問題:冷啟動和EE問題,並簡單闡述了業界解決這兩大問題的一些常見解決方法和演算法。正如前文所說,EE問題某種程度中一直以矛盾共同體存在,在實際場景中,需要平衡兩者。

相關文章