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

LinUCB算法


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

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

使用互斥線性模型的LinUCB

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

E[rt,a|xt,a]=xTt,aθa

其中xt,a 表示用戶特徵和物品特徵的合集,rt,a 表示第t次嘗試的收益,a表示item,θa 表示物品a的位置係數向量。可以看出各個item的模型參數是相互獨立的(互斥)。

Da (d*m)表示爲m個訓練上下文,ca 表示每個上下文的實際收益,對訓練數據(Da,ca) 使用嶺迴歸訓練出的物品a的參數爲:

θ̂ a=(DTaDa+Id)1DTaca

其中Id 表示d*d的單位矩陣。其中在置信度1δ 下,模型收益與期望收益滿足:

xTt,aθ̂ aE[rt,a|xt,a]αxTt,a(DTaDa+Id)1xt,a

其中δ>0α=1+ln(2δ)/2

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

at=argmaxaA(xTt,aθ̂ a+αxTt,a(Aa)1xt,a)

其中Aa=DTaDa+Id 。上述模型中預期收益xTt,aθa 的方差爲xTt,a(Aa)1xt,a ,即xTt,a(Aa)1xt,a) 爲標準差。

linucb

以上爲互斥線性模型LinUCB的基本算法流程,其中結合上述內容,第一行α 參數控制了explore的程度,即α 越大,置信區間上限也就越大,也就加大了explore的程度;4-7行對於新物品,使用單位陣和01向量進行參數初始化;8-9行計算item a的置信區間上限;11行選擇最優item;12-13行更新選擇item的模型參數。

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

關於LinUCB算法的介紹請參考論文

CLUB算法


CLUB(online clustering bandits)算法假設將全部用戶劃分成若干個用戶羣,每個用戶羣對相同推薦內容的反饋是一致的,同時自適應的調整用戶羣。與liner bandit一樣,CLUB算法也是根據特徵計算收益,不同的是CLUB算法中相同羣體用戶共享相同的參數向量,即第i個用戶對item a的收益爲:

ai(x)=uTj(i)x+j(i)(x)

其中i表示第i個user,j(i) 表示第i個user所屬的用戶羣編號,u 表示每個用戶羣的參數向量,x表示上文下特徵, 表示噪聲項。

該算法在時刻t,對於用戶i,維護一個向量ui 的估計值wi,t 。與liner bandit算法相似,wi,t 根據收益反饋不斷更新。與LinUCB算法類似的,wi,t1 可以根據協方差矩陣Mi,t1 (d*d維,初始化爲單位陣)的逆和向量bi,t1 (d維向量,初始化爲0向量)計算得出。

除此之外,算法需要維護一個無向圖Gt=(V,Et) ,每個節點表示一個user。算法首先從完全圖開始,根據wi,t 的演化逐步移除節點之間的邊。定義第t時刻的用戶羣個數爲mtv̂ 1,t,v̂ 2,t ,……v̂ 1,mt 表示時刻t的用戶劃分羣。顯然初始狀態下m1 =1,v̂ 1,1=V (全部用戶)。

在每個時刻t(1,2,...) ,用戶it ,相關上下文特徵向量集合爲(xt,1,xt,2,xt,ct) ,用戶it 所屬的羣爲v̂ jt^,t 。CLUB算法根據收益選擇item的式如下:

kt=argmink=1,2,,ct (wTjt^,t1xt,k+CBjt^,t1xt,k)

其中wjt^,t1 是通過同用戶羣內各個節點通過最小方差逼近擬合計算得出的聚合權重向量,CB爲wjt^,t1 向量的置信區間上限。

CLUB算法觀察到item的收益at 後,更新協方差矩陣Mit,t1Mit,t ,更新bit,t1bit,t ;雖然不會更新其他節點的M和b,但是會隱式的影響下一輪的聚合權重向量wjt^,t+1 ;接下來判斷節點it 與相鄰節點的參數向量(wi,t1 )距離,如果足夠大,則將該邊移除。

CLUB算法的完整流程如下:

club

其中α 控制探索的程度,α2 是用戶關係是否刪除的控制參數。上述算法流程包含了刪除關係邊的條件,其中Ti,t1 是t時刻前歷史上i用戶被選中的次數。

CLUB算法首先提出了基於協同概念的bandit算法,即每次用戶預測對item收益是由這個所屬的羣體的聚合權重向量參數所決定的,同時根據個人反饋更新個人參數,個人參數又隱式的影響羣體參數和用戶羣體的劃分。據CLUB算法論文介紹,在一些公共數據集中,取得了比LinUCB更好的效果。

關於CLUB算法的更多細節請參考原論文

結束語


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

本文時間有限,難免有偏頗之處,歡迎大家共同探討。

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