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

K臂老虎機問題Python代碼實現

系統 2598 0

參考周志華的《西瓜書》

?第16章強化學習

16.2 K-搖臂賭博機

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

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

            
              # -*- coding: utf-8 -*-
#K臂老虎機問題
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()    
              
            
          

具體結果如下:

K臂老虎機問題Python代碼實現_第1張圖片

然后我發現這一張圖片和書上比較接近,因此我選的這個圖片進行展示,書上選擇的圖片顯示效果很好,我個人覺得應該也是挑選過的。

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


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 米脂县| 仁怀市| 玉溪市| 莱芜市| 白河县| 出国| 陕西省| 独山县| 穆棱市| 苗栗县| 威信县| 长宁区| 那坡县| 安庆市| 武邑县| 铜鼓县| 开江县| 万荣县| 玛多县| 五大连池市| 新绛县| 石狮市| 年辖:市辖区| 临颍县| 湖北省| 阳春市| 湘阴县| 壤塘县| 南乐县| 灵璧县| 四平市| 新巴尔虎右旗| 中牟县| 乐陵市| 孟津县| 乌鲁木齐县| 玉树县| 弥渡县| 昭通市| 恩施市| 康马县|