推薦系統中的冷啓動和探索利用問題探討 (上)

前言


互聯網技術和大數據技術的迅猛發展正在時刻改變我們的生活,視頻網站、資訊app、電商網站對於推薦系統而言,每天都有大量的活躍用戶在不斷的產生海量的用戶行爲,同時,每天又都產生大量的新增PGC或者UGC內容(如小說、資訊文章、短視頻等)。

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

冷啓動和EE問題


冷啓動問題

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

與用戶的冷啓動相對應的,則是item的冷啓動,當一個新物品加入站內,如何快速的展現的用戶。對於CF算法來說,無論是基於領域還是基於模型,如果想要這個新物品被推薦出來,顯然我們需要用戶對這個物品的行爲。特別是在某些場景下,推薦列表是給用戶展示的唯一列表,那麼顯而易見,只能在推薦列表中嘗試給用戶推薦新物品。

一個最簡單的做法就是在推薦列表中隨機給用戶展示新物品,但是這樣顯然不太個性化,一個較好的做法是將新物品推薦給曾經喜歡過與新物品相似的物品的用戶。由於新item沒有用戶行爲,因此物品相似度只能從item自身出發,包括根據item的內容信息挖掘出item的向量表示,通過向量相似度來刻畫物品相似度,還可以利用topic model挖掘出item的主題分佈等等。

探索利用問題

推薦系統需要考慮對用戶興趣的不斷探索和細化,同時也需要儘可能的擴大展示物品的多樣性和寬度。比如展示物品的場景只有推薦列表,同時我們需要儘可能的優化的ctr,那麼給冷啓動用戶我們該如何選擇物品,如何快速的探測出用戶的興趣。比較簡單的方式我們可以可以根據ctr排序,給冷啓動用戶推薦最熱門點擊率最高的物品,給足球迷推薦點擊率最高的足球相關物品,顯然這樣做會保證我們推薦結果的ctr會比較高,但是這樣做會減少我們推薦結果的覆蓋率,降低推薦結果的多樣性,以致於推薦物品候選集也會收斂,甚至出現反覆推薦。而這也就是我們需要不斷探索用戶興趣,擴大推薦結果多樣性的原因。

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

多臂老虎機模型和UCB算法


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

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

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

ρ=Tut=1Trt^

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

解決bandit問題的算法衆多,一般分爲基於semi-uniform的策略、probability matching
策略、pricing策略等。這裏只列舉若干個策略,具體大家可以參考

Epsilon-greedy策略:每次試驗都以1ϵ 的概率選擇前面試驗中平均收益最佳的item,以ϵ 的概率等概率隨機選擇其他item,該策略簡單,而且可以通過ϵ 控制探索和利用的比率。

Epsilon-first策略:該策略探索和利用交叉選擇,總試驗次數爲N,探索次數爲ϵN ,探索階段也是等概率隨機選擇所有item,利用階段也是選擇平均收益最好的機器。

Epsilon-decreasing策略:與Epsilon-greedy策略近似,不同地方在於ϵ 隨着試驗的進行會不斷減少。

UCB(Upper Confidence Bound)算法

在推薦系統中,通常量化一個物品的收益率(或者說點擊率)是使用ctr=clickpv ,例如點擊爲10,展示數爲8,則估計的點擊率爲80%,在展示數達到10000後,其表現ctr是否還能達到80%呢?

顯然是不可能的。而這就是統計學中的置信度問題,計算點擊率的置信區間的方法也有很多,比如威爾遜置信空間。UCB算法步驟包括:首先對所有item的嘗試一下,然後每次選擇以下值最大的那個item:

xj(t)+2lntTj,t

其中xj(t) 是物品xj 到目前的收益均值,2lntTj,t 本質上是均值的標準差。t是目前的試驗次數,Tj,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分佈來描述收益率的分佈 (分佈的分佈),我們通過不斷的試驗來估計一個置信度較高的基於概率p的概率分佈。假設概率p的概率分佈符合Beta(wins,
lose),beta分佈有兩個參數wins和lose,每個item都維護了beta分佈的參數,每次試驗都選擇一個item,有點擊則wins增加1,否則lose增加1。每次選擇item的方式則是:用每個item的beta分佈產生一個隨機數,選擇所有item產生的隨機數中的最大的那個item。Beta分佈概率密度函數如下:

Beta(x;α,β)=xα1(1x)β110uα1(1u)β1du=xα1(1x)β1B(α,β)

beta分佈密度函數

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

後續:推薦系統中的冷啓動和探索利用問題探討 (下):LinUCB算法和CLUB算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章