推薦系統實踐筆記(二):利用與探索問題

推薦系統的經典問題之一,利用(Exploitation) 與 探索(Exploration)問題

  • Exploitation:滿足已知的用戶需求
  • Exploration:探索未知的用戶需求

Exploitation的必要性比較容易理解,通過滿足用戶已知的需求,產生用戶價值,這也是推薦系統存在的意義。Exploration的價值怎麼理解呢?首先,對於新用戶而言,系統並不知道用戶的需求,這時必須通過Exploration探索和發現用戶的需求。其次,對於老用戶而言,興趣點也是在不斷變化中的,這時也需要通過Exploration不斷髮現用戶的新產生需求。

Exploration必然會導致短期用戶價值一定程度的犧牲,目標是爲了長期的用戶價值;Exploitation滿足了短期的用戶需求,但僅僅滿足短期的需求並非是最優的選擇。如何做好利用與探索,以及二者之間的權衡,下面介紹的幾個算法在這些方面各有自己的特點。

ϵgreedy\epsilon-greedy

ϵgreedy\epsilon-greedy算法將推薦策略分爲兩類:利用策略和探索策略,算法的過程如下:

  1. 以概率ϵ(0,1)\epsilon \in (0,1)選擇探索策略,跳至過程2;以概率1ϵ1-\epsilon選擇利用策略,跳至過程3。
  2. 探索(Exploration)策略:隨機選擇n個物品中的一個進行推薦,也就是每個物品被選中的概率爲1n\frac{1}{n},並記錄此次推薦的結果收益,比如r=1r=1表示用戶喜歡,r=0r=0表示用戶不喜歡。
  3. 利用(Exploitation)策略:選擇目前爲止收益值期望最大的物品進行推薦。物品的收益值期望可以用物品的歷史收益值來估計:E(r)=k=1KrkKE(r) = \frac{\sum_{k=1}^{K}r_k}{K}. 其中KiK_i表示物品i歷史上被推薦的次數,rikr_i^k表示物品i第k次推薦的收益值。

UCB(Upper Confidence Bound)

UCB算法的核心是對候選物品估計收益值RR。對

於一個隨機變量的估計值,一般同時可以同時確定一個置信區間。UCB算法對物品收益的估計值以物品的收益上限爲準,即選擇收益上限值最大的物品進行推薦:

R=r+ΔR = r + \Delta

其中rr表示收益估計值,Δ\Delta 表示真實值與估計值之間的差異,這裏我們取置信區間上限值。收益的估計值rr用歷史收益值的均值來估計,當採樣數n越大,估計值越接近真實值:

r=i=1nrinr=\frac{\sum_{i=1}^nr_i}{n}

那麼如何確定置信區間呢?答案是:

[Chernoff-Hoeffding Bound] 對於n個獨立同分布的隨機變量xi[0,1],i=1,2,...,nx_i\in[0,1],i=1,2,...,n,設x=i=1nxix=\sum_{i=1}^nx_i,則:

P(E(x)xδ)12e2nδ2P(|E(x)-x| \leq \delta)\leq 1- 2e^{-2n\delta^2}

回到UCB算法,則有下面不等式成立:

P(E(r)rδ)12e2nδ2P(|E(r) - r| \leq \delta)\geq 1-2e^{-2n\delta^2}

δ=2lnTn\delta = \sqrt{\frac{2lnT}{n}},則:

P(E(r)r2lnTn)12T4P(|E(r)-r|\leq \sqrt{\frac{2lnT}{n}})\geq1-\frac{2}{T^4}

可以取Δ=2lnT/n\Delta=\sqrt{2lnT/n}。最後,UCB是收益估計值計算方式爲:

R=i=1nrin+2lnTnR=\frac{\sum_{i=1}^nr_i}{n} + \sqrt{\frac{2lnT}{n}}

LinUCB

LinUCB算法的核心同樣是對物品收益值的估計,同樣是以收益置信區間上限值作爲標準,選擇收益上限值最大的物品進行推薦,不同的是在估計收益值的時候,考慮特徵:

R=xTθ+ΔR = x^T\theta + \Delta

其中xx表示特徵向量,包含物品特徵、用戶特徵以及上下文特徵,θ\theta爲待學習的參數,參數的學習目標爲最小化下面的損失函數:

Loss(θ)=Xθr2+Iθ2Loss(\theta)=|X\theta - r|^2 + |I\theta|^2

可以看出LinUCB採用線性模型估計物品的收益值。

下面Δ\Delta的估計,原文中對上界的推到過程比較麻煩,這裏不展開介紹了,直接使用結果:

P(xTθp(1+ln(2/δ)/2)xT(XTX+ITI)1x)1δP(|x^T\theta-p|\leq (1 + \sqrt{ln(2/\delta)/2})\sqrt{x^T(X^TX+I^TI)^{-1}x}) \leq 1- \delta

我們採用Δ=1+ln(2/δ)/2)xT(XTX+ITI)1x\Delta=1 + \sqrt{ln(2/\delta)/2})\sqrt{x^T(X^TX+I^TI)^{-1}x},其中δ\delta爲超參。

最終LinUCB的收益值計算法方式爲:

R=xTθ+(1+ln(2/δ)/2)xT(XTX+ITI)1x)R = x^T\theta + (1 + \sqrt{ln(2/\delta)/2})\sqrt{x^T(X^TX+I^TI)^{-1}x})

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