技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 推薦系統(tǒng)中的EE問(wèn)題及解決問(wèn)題的基本Bandit算法詳細(xì)概述

推薦系統(tǒng)中的EE問(wèn)題及解決問(wèn)題的基本Bandit算法詳細(xì)概述

時(shí)間:2018-10-15 11:00:39來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載

導(dǎo)語(yǔ):?ExplorationandExploitation(EE問(wèn)題,探索與開發(fā))是計(jì)算廣告和推薦系統(tǒng)里常見的一個(gè)問(wèn)題,為什么會(huì)有EE問(wèn)題?簡(jiǎn)單來(lái)說(shuō),是為了平衡推薦系統(tǒng)的準(zhǔn)確性和多樣性。

1、推薦系統(tǒng)中的EE問(wèn)題

ExplorationandExploitation(EE問(wèn)題,探索與開發(fā))是計(jì)算廣告和推薦系統(tǒng)里常見的一個(gè)問(wèn)題,為什么會(huì)有EE問(wèn)題?簡(jiǎn)單來(lái)說(shuō),是為了平衡推薦系統(tǒng)的準(zhǔn)確性和多樣性。

EE問(wèn)題中的Exploitation就是:對(duì)用戶比較確定的興趣,當(dāng)然要利用開采迎合,好比說(shuō)已經(jīng)掙到的錢,當(dāng)然要花;而exploration就是:光對(duì)著用戶已知的興趣使用,用戶很快會(huì)膩,所以要不斷探索用戶新的興趣才行,這就好比雖然有一點(diǎn)錢可以花了,但是還得繼續(xù)搬磚掙錢,不然花完了就得喝西北風(fēng)。

2、Bandit算法

Bandit算法是解決EE問(wèn)題的一種有效算法,我們先來(lái)了解一下Bandit算法的起源。Bandit算法來(lái)源于歷史悠久的賭博學(xué),它要解決的問(wèn)題是這樣的:

一個(gè)賭徒,要去搖老虎機(jī),走進(jìn)賭場(chǎng)一看,一排老虎機(jī),外表一模一樣,但是每個(gè)老虎機(jī)吐錢的概率可不一樣,他不知道每個(gè)老虎機(jī)吐錢的概率分布是什么,那么每次該選擇哪個(gè)老虎機(jī)可以做到最大化收益呢?這就是多臂賭博機(jī)問(wèn)題(Multi-armedbanditproblem,K-armedbanditproblem,MAB)。

怎么解決這個(gè)問(wèn)題呢?最好的辦法是去試一試,不是盲目地試,而是有策略地快速試一試,這些策略就是Bandit算法。

Bandit算法如何同推薦系統(tǒng)中的EE問(wèn)題聯(lián)系起來(lái)呢?假設(shè)我們已經(jīng)經(jīng)過(guò)一些試驗(yàn),得到了當(dāng)前每個(gè)老虎機(jī)的吐錢的概率,如果想要獲得最大的收益,我們會(huì)一直搖哪個(gè)吐錢概率最高的老虎機(jī),這就是Exploitation。但是,當(dāng)前獲得的信息并不是老虎機(jī)吐錢的真實(shí)概率,可能還有更好的老虎機(jī)吐錢概率更高,因此還需要進(jìn)一步探索,這就是Exploration問(wèn)題。

下面,我們就來(lái)看一下一些經(jīng)典的Bandit算法實(shí)現(xiàn)吧,不過(guò)我們還需要補(bǔ)充一些基礎(chǔ)知識(shí)。

3、基礎(chǔ)知識(shí)

3.1累積遺憾

Bandit算法需要量化一個(gè)核心問(wèn)題:錯(cuò)誤的選擇到底有多大的遺憾?能不能遺憾少一些?所以我們便有了衡量Bandit算法的一個(gè)指標(biāo):累積遺憾:

這里t表示輪數(shù),r表示回報(bào)。公式右邊的第一項(xiàng)表示第t輪的期望最大收益,而右邊的第二項(xiàng)表示當(dāng)前選擇的arm獲取的收益,把每次差距累加起來(lái)就是總的遺憾。

對(duì)應(yīng)同樣的問(wèn)題,采用不同bandit算法來(lái)進(jìn)行實(shí)驗(yàn)相同的次數(shù),那么看哪個(gè)算法的總regret增長(zhǎng)最慢,那么哪個(gè)算法的效果就是比較好的。

3.2Beta分布

有關(guān)Beta分布,可以參考帖子:https://www.zhihu.com/question/30269898。這里只做一個(gè)簡(jiǎn)單的介紹。beta分布可以看作一個(gè)概率的概率分布。它是對(duì)二項(xiàng)分布中成功概率p的概率分布的描述。它的形式如下:

其中,a和b分別代表在a+b次伯努利試驗(yàn)中成功和失敗的次數(shù)。我們用下面的圖來(lái)說(shuō)明一下Beta分布的含義:

上圖中一共有三條線,我們忽略中間的一條線,第一條線中a=81,b=219。也就是說(shuō)在我們進(jìn)行了300次伯努利試驗(yàn)中,成功81次,失敗219次的情況下,成功概率p的一個(gè)分布,可以看到,p的概率在0.27左右概率最大,但我們不能說(shuō)成功的概率就是0.27,這也就是頻率派和貝葉斯派的區(qū)別,哈哈。此時(shí),我們又做了300次試驗(yàn),此時(shí)在總共600次伯努利試驗(yàn)中,成功了181次,失敗了419次,此時(shí)成功概率p的概率分布變味了藍(lán)色的線,在0.3左右概率最大。

4、經(jīng)典Bandit算法原理及實(shí)現(xiàn)

下文中的收益可以理解為老虎機(jī)吐錢的觀測(cè)概率。

4.1樸素Bandit算法

先隨機(jī)試若干次,計(jì)算每個(gè)臂的平均收益,一直選均值最大那個(gè)臂。

4.2Epsilon-Greedy算法

選一個(gè)(0,1)之間較小的數(shù)epsilon,每次以epsilon的概率在所有臂中隨機(jī)選一個(gè)。以1-epsilon的概率選擇截止當(dāng)前,平均收益最大的那個(gè)臂。根據(jù)選擇臂的回報(bào)值來(lái)對(duì)回報(bào)期望進(jìn)行更新。

這里epsilon的值可以控制對(duì)exploit和explore的偏好程度,每次決策以概率ε去勘探Exploration,1-ε的概率來(lái)開發(fā)Exploitation,基于選擇的item及回報(bào),更新item的回報(bào)期望。

對(duì)于Epsilon-Greedy算法來(lái)首,能夠應(yīng)對(duì)變化,即如果item的回報(bào)發(fā)生變化,能及時(shí)改變策略,避免卡在次優(yōu)狀態(tài)。同時(shí)Epsilon的值可以控制對(duì)Exploit和Explore的偏好程度。越接近0,越保守,只想花錢不想掙錢。但是策略運(yùn)行一段時(shí)間后,我們已經(jīng)對(duì)各item有了一定程度了解,但沒(méi)用利用這些信息,仍然不做任何區(qū)分地隨機(jī)Exploration,這是Epsilon-Greedy算法的缺點(diǎn)。

4.3Thompsonsampling算法

Thompsonsampling算法用到了Beta分布,該方法假設(shè)每個(gè)老虎機(jī)都有一個(gè)吐錢的概率p,同時(shí)該概率p的概率分布符合beta(wins,lose)分布,每個(gè)臂都維護(hù)一個(gè)beta分布的參數(shù),即wins,lose。每次試驗(yàn)后,選中一個(gè)臂,搖一下,有收益則該臂的wins增加1,否則該臂的lose增加1。

每次選擇臂的方式是:用每個(gè)臂現(xiàn)有的beta分布產(chǎn)生一個(gè)隨機(jī)數(shù)b,選擇所有臂產(chǎn)生的隨機(jī)數(shù)中最大的那個(gè)臂去搖。

4.4UCB算法

前面提到了,Epsilon-Greedy算法在探索的時(shí)候,所有的老虎機(jī)都有同樣的概率被選中,這其實(shí)沒(méi)有充分利用歷史信息,比如每個(gè)老虎機(jī)之前探索的次數(shù),每個(gè)老虎機(jī)之前的探索中吐錢的頻率。

那我們?cè)趺茨軌虺浞掷脷v史信息呢?首先,根據(jù)當(dāng)前老虎機(jī)已經(jīng)探索的次數(shù),以及吐錢的次數(shù),我們可以計(jì)算出當(dāng)前每個(gè)老虎機(jī)吐錢的觀測(cè)概率p'。同時(shí),由于觀測(cè)次數(shù)有限,因此觀測(cè)概率和真實(shí)概率p之間總會(huì)有一定的差值?,即p'-?<=p<=p'+?。

基于上面的討論,我們得到了另一種常用的Bandit算法:UCB(UpperConfidenceBound)算法。該算法在每次推薦時(shí),總是樂(lè)觀的認(rèn)為每個(gè)老虎機(jī)能夠得到的收益是p'+?。

好了,接下來(lái)的問(wèn)題就是觀測(cè)概率和真實(shí)概率之間的差值?如何計(jì)算了,我們首先有兩個(gè)直觀的理解:1)對(duì)于選中的老虎機(jī),多獲得一次反饋會(huì)使?變小,當(dāng)反饋無(wú)窮多時(shí),?趨近于0,最終會(huì)小于其他沒(méi)有被選中的老虎機(jī)的?。2)對(duì)于沒(méi)有被選中的老虎機(jī),?會(huì)隨著輪數(shù)的增大而增加,最終會(huì)大于其他被選中的老虎機(jī)。

因此,當(dāng)進(jìn)行了一定的輪數(shù)的時(shí)候,每個(gè)老虎機(jī)都有機(jī)會(huì)得到探索的機(jī)會(huì)。UCB算法中p'+?的計(jì)算公式如下:

其中加號(hào)前面是第j個(gè)老虎機(jī)到目前的收益均值,后面的叫做bonus,本質(zhì)上是均值的標(biāo)準(zhǔn)差,T是目前的試驗(yàn)次數(shù),n是該老虎機(jī)被試次數(shù)。

為什么選擇上面形式的?呢,還得從Chernoff-HoeffdingBound說(shuō)起:

因此(下面的截圖來(lái)自于知乎https://zhuanlan.zhihu.com/p/32356077):

5、代碼實(shí)現(xiàn)

接下來(lái),我們來(lái)實(shí)現(xiàn)兩個(gè)基本的Bandit算法,UCB和Thompsonsampling算法。

5.1UCB算法

代碼中有詳細(xì)的注釋,所以我直接貼完整的代碼了:

importnumpyasnpT=1000#T輪試驗(yàn)N=10#N個(gè)老虎機(jī)true_rewards=np.random.uniform(low=0,high=1,size=N)#每個(gè)老虎機(jī)真實(shí)的吐錢概率estimated_rewards=np.zeros(N)#每個(gè)老虎機(jī)吐錢的觀測(cè)概率,初始都為0chosen_count=np.zeros(N)#每個(gè)老虎機(jī)當(dāng)前已經(jīng)探索的次數(shù),初始都為0total_reward=0#計(jì)算deltadefcalculate_delta(T,item):ifchosen_count[item]==0:return1else:returnnp.sqrt(2*np.log(T)/chosen_count[item])#計(jì)算每個(gè)老虎機(jī)的p+delta,同時(shí)做出選擇defUCB(t,N):upper_bound_probs=[estimated_rewards[item]+calculate_delta(t,item)foriteminrange(N)]item=np.argmax(upper_bound_probs)reward=np.random.binomial(n=1,p=true_rewards[item])returnitem,rewardfortinrange(1,T):#依次進(jìn)行T次試驗(yàn)#選擇一個(gè)老虎機(jī),并得到是否吐錢的結(jié)果item,reward=UCB(t,N)total_reward+=reward#一共有多少客人接受了推薦#更新每個(gè)老虎機(jī)的吐錢概率estimated_rewards[item]=((t-1)*estimated_rewards[item]+reward)/tchosen_count[item]+=1

5.2Thompsonsampling算法

Thompsonsampling算法涉及到了beta分布,因此我們使用pymc庫(kù)來(lái)產(chǎn)生服從beta分布的隨機(jī)數(shù),只需要一行代碼就能在選擇合適的老虎機(jī)。

np.argmax(pymc.rbeta(1+successes,1+totals-successes))

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:微軟新的機(jī)器學(xué)習(xí)框架核心產(chǎn)...

下一篇:淺析交流接觸器運(yùn)用IT7300交...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.surachana.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)