日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

K臂老虎機(jī)問題Python代碼實(shí)現(xiàn)

系統(tǒng) 2490 0

參考周志華的《西瓜書》

?第16章強(qiáng)化學(xué)習(xí)

16.2 K-搖臂賭博機(jī)

其實(shí)這個問題的目的就是為了能夠獲得更大的利潤,但是具體怎樣去獲得更大的利潤,用到了兩種算法,一種是epsilon-貪心算法,另一種是Softmax算法,當(dāng)然還有其他方法,具體可以參考http://incompleteideas.net/book/the-book-2nd.html,我在網(wǎng)上也找到了一位博主的博客,好像是翻譯這本書的,寫得挺好的,具體網(wǎng)址如下:https://blog.csdn.net/LagrangeSK

epsilon-貪心算法具體是選擇一個平衡點(diǎn),下次的行為可以隨機(jī)選取,也可以選擇當(dāng)前收益最大化的行為,并實(shí)時更新動作的收益。而Softmax算法選擇下一次行為是按照概率來選擇,若一個動作的收益較大,則下次選擇該動作的概率也大,并實(shí)時更新概率。具體代碼如下:

            
              # -*- coding: utf-8 -*-
#K臂老虎機(jī)問題
import numpy as np
import random
import matplotlib.pyplot as plt
#K=[1,2,3,4,5]

def init():
    tau=0.1
    epsilon=0.01
    T=3000
    reword=[1,1]
    probability=[0.4,0.2]
    #arm=dict(list(zip(reword,Probability)))
    count=dict.fromkeys(["1",'2'],0)
    Q=dict.fromkeys(["1",'2'],0)
    sum_p=sum([np.exp(i/tau) for i in Q.values()])
    P=[np.exp(i/tau)/sum_p for i in Q.values()]
    return tau,epsilon,T,reword,probability,count,Q,P    
#epsilon-貪心算法
tau,epsilon,T,reword,probability,count,Q,P =init()
r=0
r_all=list()
#Q={"1":0.4,'2':0.2}
for i in range(T):
    if random.uniform(0,1)
              
                random.uniform(0,1) else 0
#    print(v)
    r=(r*(i)+v)/(i+1)
    r_all.append(r)
    count[str(k)] +=1
    Q[str(k)]=Q[str(k)]+(v-Q[str(k)])/count[str(k)]
#    print("平均獎賞為:",r)
plt.plot(list(range(T)),r_all,color='r')

#Softmax算法
r=0
r_all=list()
tau,epsilon,T,reword,probability,count,Q,P =init()
for i in range(T):
    sum_p=sum([np.exp(i/tau) for i in Q.values()])
    P=[np.exp(i/tau)/sum_p for i in Q.values()]
    k=int(np.random.choice(list(Q.keys()),p=P))
    v=reword[k-1] if probability[k-1]>random.uniform(0,1) else 0
    r=(r*(i)+v)/(i+1)
    r_all.append(r)
    count[str(k)] +=1
    Q[str(k)]=Q[str(k)]+(v-Q[str(k)])/count[str(k)]
#    print("平均獎賞為:",r)
plt.plot(list(range(T)),r_all,color='b')
plt.show()    
              
            
          

具體結(jié)果如下:

K臂老虎機(jī)問題Python代碼實(shí)現(xiàn)_第1張圖片

然后我發(fā)現(xiàn)這一張圖片和書上比較接近,因此我選的這個圖片進(jìn)行展示,書上選擇的圖片顯示效果很好,我個人覺得應(yīng)該也是挑選過的。

其實(shí)在運(yùn)行的過程中,會出現(xiàn)很多種情況,很多次都是前幾次,前?十幾次有可能平均收益突然增大到很大,但是最終都是趨于上述的結(jié)果,至于為什么不同的參數(shù)最終會趨于不同的結(jié)果,我個人人為 “僅探索”的形式為整體的期望,正常的形式(參數(shù)隨機(jī)給)應(yīng)該會逐漸趨于某一個臂(最優(yōu)臂)的期望,至于“僅利用”我有點(diǎn)不太明白。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 岗巴县| 松阳县| 北辰区| 高邮市| 茶陵县| 南汇区| 淅川县| 常德市| 封开县| 剑阁县| 恩施市| 抚松县| 昌平区| 独山县| 新泰市| 盖州市| 祥云县| 中方县| 洛川县| 龙岩市| 沾益县| 固安县| 汶上县| 揭东县| 江口县| 磐石市| 新民市| 铜鼓县| 习水县| 宁远县| 隆安县| 万载县| 休宁县| 扶沟县| 谷城县| 乐安县| 库尔勒市| 惠州市| 明溪县| 台南市| 旺苍县|