推薦系統的經典問題之一,利用(Exploitation) 與 探索(Exploration)問題
- Exploitation:滿足已知的用戶需求
- Exploration:探索未知的用戶需求
Exploitation的必要性比較容易理解,通過滿足用戶已知的需求,產生用戶價值,這也是推薦系統存在的意義。Exploration的價值怎麼理解呢?首先,對於新用戶而言,系統並不知道用戶的需求,這時必須通過Exploration探索和發現用戶的需求。其次,對於老用戶而言,興趣點也是在不斷變化中的,這時也需要通過Exploration不斷髮現用戶的新產生需求。
Exploration必然會導致短期用戶價值一定程度的犧牲,目標是爲了長期的用戶價值;Exploitation滿足了短期的用戶需求,但僅僅滿足短期的需求並非是最優的選擇。如何做好利用與探索,以及二者之間的權衡,下面介紹的幾個算法在這些方面各有自己的特點。
ϵ−greedy
ϵ−greedy算法將推薦策略分爲兩類:利用策略和探索策略,算法的過程如下:
- 以概率ϵ∈(0,1)選擇探索策略,跳至過程2;以概率1−ϵ選擇利用策略,跳至過程3。
- 探索(Exploration)策略:隨機選擇n個物品中的一個進行推薦,也就是每個物品被選中的概率爲n1,並記錄此次推薦的結果收益,比如r=1表示用戶喜歡,r=0表示用戶不喜歡。
- 利用(Exploitation)策略:選擇目前爲止收益值期望最大的物品進行推薦。物品的收益值期望可以用物品的歷史收益值來估計:E(r)=K∑k=1Krk. 其中Ki表示物品i歷史上被推薦的次數,rik表示物品i第k次推薦的收益值。
UCB(Upper Confidence Bound)
UCB算法的核心是對候選物品估計收益值R。對
於一個隨機變量的估計值,一般同時可以同時確定一個置信區間。UCB算法對物品收益的估計值以物品的收益上限爲準,即選擇收益上限值最大的物品進行推薦:
R=r+Δ
其中r表示收益估計值,Δ 表示真實值與估計值之間的差異,這裏我們取置信區間上限值。收益的估計值r用歷史收益值的均值來估計,當採樣數n越大,估計值越接近真實值:
r=n∑i=1nri
那麼如何確定置信區間呢?答案是:
[Chernoff-Hoeffding Bound] 對於n個獨立同分布的隨機變量xi∈[0,1],i=1,2,...,n,設x=∑i=1nxi,則:
P(∣E(x)−x∣≤δ)≤1−2e−2nδ2
回到UCB算法,則有下面不等式成立:
P(∣E(r)−r∣≤δ)≥1−2e−2nδ2
取δ=n2lnT,則:
P(∣E(r)−r∣≤n2lnT)≥1−T42
可以取Δ=2lnT/n。最後,UCB是收益估計值計算方式爲:
R=n∑i=1nri+n2lnT
LinUCB
LinUCB算法的核心同樣是對物品收益值的估計,同樣是以收益置信區間上限值作爲標準,選擇收益上限值最大的物品進行推薦,不同的是在估計收益值的時候,考慮特徵:
R=xTθ+Δ
其中x表示特徵向量,包含物品特徵、用戶特徵以及上下文特徵,θ爲待學習的參數,參數的學習目標爲最小化下面的損失函數:
Loss(θ)=∣Xθ−r∣2+∣Iθ∣2
可以看出LinUCB採用線性模型估計物品的收益值。
下面Δ的估計,原文中對上界的推到過程比較麻煩,這裏不展開介紹了,直接使用結果:
P(∣xTθ−p∣≤(1+ln(2/δ)/2)xT(XTX+ITI)−1x)≤1−δ
我們採用Δ=1+ln(2/δ)/2)xT(XTX+ITI)−1x,其中δ爲超參。
最終LinUCB的收益值計算法方式爲:
R=xTθ+(1+ln(2/δ)/2)xT(XTX+ITI)−1x)