国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

云南熱搜科技做網(wǎng)站不給源碼衡陽(yáng)百度推廣

云南熱搜科技做網(wǎng)站不給源碼,衡陽(yáng)百度推廣,seo排名查詢工具,3合一網(wǎng)站0.簡(jiǎn)介 基于時(shí)序差分算法的強(qiáng)化學(xué)習(xí)算法除了Sarsa算法以外還有一種著名算法為Q-learning算法,為離線策略算法,與在線策略算法Sarsa算法相比,其時(shí)序差分更新方式變?yōu)? Q(St,At)←Q(St,At)α[Rt1γmaxaQ(St1,a)?Q(St,At)] 對(duì)于 Sarsa 來(lái)說(shuō)&am…

0.簡(jiǎn)介

? ? ? ? 基于時(shí)序差分算法的強(qiáng)化學(xué)習(xí)算法除了Sarsa算法以外還有一種著名算法為Q-learning算法,為離線策略算法,與在線策略算法Sarsa算法相比,其時(shí)序差分更新方式變?yōu)?/p>

Q(St,At)←Q(St,At)+α[Rt+1+γmaxaQ(St+1,a)?Q(St,At)]

對(duì)于 Sarsa 來(lái)說(shuō):

  • 1)在狀態(tài) s' 時(shí),就知道了要采取那個(gè)動(dòng)作 a',并且真的采取了這個(gè)動(dòng)作
  • 2)當(dāng)前動(dòng)作 a 和下一個(gè)動(dòng)作 a' 都是 根據(jù)??𝜖?-貪婪策略選取的,因此稱為on-policy學(xué)習(xí)

對(duì)于 Q-Learning:

  • 1)在狀態(tài)s'時(shí),只是計(jì)算了 在 s' 時(shí)要采取哪個(gè) a' 可以得到更大的 Q 值,并沒(méi)有真的采取這個(gè)動(dòng)作 a'。
  • 2)動(dòng)作 a 的選取是根據(jù)當(dāng)前 Q 網(wǎng)絡(luò)以及??𝜖-貪婪策略,即每一步都會(huì)根據(jù)當(dāng)前的狀況選擇一個(gè)動(dòng)作A,目標(biāo)Q值的計(jì)算是根據(jù) Q 值最大的動(dòng)作 a' 計(jì)算得來(lái),因此為 off-policy 學(xué)習(xí)。

U7XZEd.png

1.導(dǎo)入相關(guān)庫(kù)

import matplotlib.pyplot as plt
import numpy as np
from tqdm import tqdm

2.懸崖漫步環(huán)境實(shí)現(xiàn)環(huán)節(jié)

class cliffwalking():def __init__(self,colnum,rownum,stepr,cliffr,initx,inity):self.colnum=colnumself.rownum=rownumself.stepr=steprself.cliffr=cliffrself.initx=initxself.inity=inityself.disaster=list(range((self.rownum-1)*self.colnum+1,self.rownum*self.colnum-1))self.end=[self.rownum*self.colnum-1]self.x=self.initxself.y=self.initydef step(self,action):change=[[0,-1],[0,1],[-1,0],[1,0]]#change[0]上;change[1]下;change[2]左;change[3]右;坐標(biāo)系原點(diǎn)(0,0)在左上角self.x=min(self.colnum-1,max(0,self.x+change[action][0]))self.y=min(self.rownum-1,max(0,self.y+change[action][1]))nextstate=self.y*self.colnum+self.xreward=self.steprdone=Falseif nextstate in self.disaster:reward=self.cliffrdone=Trueif nextstate in self.end:done=Truereturn nextstate,reward,donedef reset(self):self.x=self.initxself.y=self.inityreturn self.y*self.colnum+self.x

3.Q-learning算法實(shí)現(xiàn)

class Qlearning():""" Qlearning算法 """def __init__(self,colnum,rownum,alpha,gamma,epsilon,actionnum=4):self.colnum=colnumself.rownum=rownumself.alpha=alpha#學(xué)習(xí)率self.gamma=gamma#折扣因子self.epsilon=epsilonself.actionnum=actionnum#動(dòng)作個(gè)數(shù)self.qtable=np.zeros([self.colnum*self.rownum,self.actionnum])def takeaction(self,state):if np.random.random()<self.epsilon:action=np.random.randint(0,self.actionnum)else:action=np.argmax(self.qtable[state])return actiondef bestaction(self,state):qmax=np.max(self.qtable[state])a=np.where(self.qtable[state]==qmax)return adef update(self,s0,a0,r,s1):tderror=r+self.gamma*np.max(self.qtable[s1])-self.qtable[s0][a0]self.qtable[s0][a0]+=self.alpha*tderror

4.打印目標(biāo)策略函數(shù)

def printtheagent(agent,env,actionmeaning):for i in range(env.rownum):for j in range(env.colnum):if (i*env.colnum+j) in env.disaster:print('****',end=' ')elif (i*env.colnum+j) in env.end:print('EEEE',end=' ')else:a=agent.bestaction(i*env.colnum+j)b=[0 for _ in range(len(actionmeaning))]for m in range(len(actionmeaning)):b[m]=1 if m in a else 0 pistr=''for k in range(len(actionmeaning)):pistr+=actionmeaning[k] if b[k]>0 else 'o'print('%s'%pistr,end=' ')print()

5.相關(guān)參數(shù)設(shè)置

ncol=12#懸崖漫步環(huán)境中的網(wǎng)格環(huán)境列數(shù)
nrow=4#懸崖漫步環(huán)境中的網(wǎng)格環(huán)境行數(shù)
step_reward=-1#每步的即時(shí)獎(jiǎng)勵(lì)
cliff_reward=-100#懸崖的即時(shí)獎(jiǎng)勵(lì)
init_x=0#智能體在環(huán)境中初始位置的橫坐標(biāo)
init_y=nrow-1#智能體在環(huán)境中初始位置的縱坐標(biāo)
alpha=0.1#價(jià)值估計(jì)更新的步長(zhǎng)
epsilon=0.1#epsilon-貪婪算法的探索因子
gamma=0.9#折扣衰減因子
num_episodes=500#智能體在環(huán)境中運(yùn)行的序列總數(shù)
tqdm_num=10#進(jìn)度條的數(shù)量
printreturnnum=10#打印回報(bào)的數(shù)量
actionmeaning=['↑','↓','←','→']#上下左右表示符

6.程序主體部分實(shí)現(xiàn)

np.random.seed(5)
returnlist=[]
env=cliffwalking(colnum=ncol,rownum=nrow,stepr=step_reward,cliffr=cliff_reward,initx=init_x,inity=init_y)
agent=Qlearning(colnum=ncol,rownum=nrow,alpha=alpha,gamma=gamma,epsilon=epsilon,actionnum=4)
for i in range(tqdm_num):with tqdm(total=int(num_episodes/tqdm_num)) as pbar:for episode in range(int(num_episodes/tqdm_num)):episodereturn=0state=env.reset()done=Falsewhile not done:action=agent.takeaction(state)nextstate,reward,done=env.step(action)episodereturn+=rewardagent.update(state,action,reward,nextstate)state=nextstatereturnlist.append(episodereturn)if (episode+1)%printreturnnum==0:pbar.set_postfix({'episode':'%d'%(num_episodes/tqdm_num*i+episode+1),'return':'%.3f'%(np.mean(returnlist[-printreturnnum:]))})pbar.update(1)
episodelist=list(range(len(returnlist)))
plt.plot(episodelist,returnlist)
plt.xlabel('Episodes')
plt.ylabel('Returns')
plt.title('Qlearning on{}'.format('Cliff Walking'))
plt.show()
print('Qlearning算法最終收斂得到的策略為:')
printtheagent(agent=agent,env=env,actionmeaning=actionmeaning)

7.結(jié)果展示

Iteration 0: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 428.50it/s, episode=50, return=-114.000]?
Iteration 1: 100%|████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 895.23it/s, episode=100, return=-72.500]?
Iteration 2: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 1222.78it/s, episode=150, return=-66.100]?
Iteration 3: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 1519.26it/s, episode=200, return=-40.000]?
Iteration 4: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 1533.70it/s, episode=250, return=-26.600]?
Iteration 5: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 1925.46it/s, episode=300, return=-38.000]?
Iteration 6: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 2387.50it/s, episode=350, return=-47.000]?
Iteration 7: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 2949.12it/s, episode=400, return=-25.500]?
Iteration 8: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 3133.12it/s, episode=450, return=-34.000]?
Iteration 9: 100%|███████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:00<00:00, 3133.44it/s, episode=500, return=-60.400]

?Qlearning算法最終收斂得到的策略為:
↑ooo o↓oo ooo→ o↓oo ooo→ ooo→ ooo→ ooo→ o↓oo ooo→ o↓oo o↓oo?
o↓oo ooo→ ooo→ ooo→ ooo→ ooo→ o↓oo ooo→ o↓oo ooo→ ooo→ o↓oo
ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ ooo→ o↓oo
↑ooo **** **** **** **** **** **** **** **** **** **** EEEE

8.總結(jié)

? ? ? ? 打印出的回報(bào)是行為策略在環(huán)境中交互得到的,而不是Q-learning算法在學(xué)習(xí)的目標(biāo)策略的真實(shí)回報(bào),目標(biāo)策略打印出來(lái)如上所示,發(fā)現(xiàn)其更偏向于走在懸崖邊上,這與Sarsa算法得到的比較保守的策略相比更優(yōu)。

? ? ? ? 比較Sarsa算法與Q-learnig算法在訓(xùn)練中的回報(bào)曲線圖,可以發(fā)現(xiàn)在一個(gè)序列中Sarsa算法獲得期望回報(bào)高于Q-learning算法,原因是訓(xùn)練過(guò)程中智能體采取基于當(dāng)前Q(s,a)函數(shù)的\varepsilon-貪婪策略來(lái)平衡探索與利用,Q-learning算法由于沿著懸崖邊走,會(huì)以一定的概率探索“掉入懸崖”這一動(dòng)作,而Sarsa相對(duì)保守的路線使得智能體幾乎不可能掉入懸崖。

http://aloenet.com.cn/news/35864.html

相關(guān)文章:

  • 做測(cè)試題的網(wǎng)站關(guān)鍵詞優(yōu)化的最佳方法
  • 冬創(chuàng)網(wǎng)站建設(shè)培訓(xùn)中心網(wǎng)絡(luò)營(yíng)銷策劃內(nèi)容
  • 網(wǎng)站改版 更換服務(wù)器 排名丟失網(wǎng)站推廣建站
  • 品牌網(wǎng)站建設(shè)搭建優(yōu)化排名推廣關(guān)鍵詞
  • app軟件開(kāi)發(fā)平臺(tái)游戲seo快速排名軟件方案
  • 想招聘員工去哪個(gè)網(wǎng)站手機(jī)網(wǎng)站建設(shè)案例
  • 下載學(xué)校網(wǎng)站模板下載51網(wǎng)站統(tǒng)計(jì)
  • 簡(jiǎn)單的網(wǎng)站設(shè)計(jì)圖aso關(guān)鍵詞優(yōu)化工具
  • 東莞長(zhǎng)安網(wǎng)站建設(shè)鄭州網(wǎng)絡(luò)營(yíng)銷
  • 榆林做網(wǎng)站多少錢seo顧問(wèn)服
  • 注冊(cè)網(wǎng)站做推廣大澤山seo快速排名
  • 怎么看網(wǎng)站有沒(méi)有做301跳轉(zhuǎn)網(wǎng)上銷售渠道
  • 動(dòng)漫設(shè)計(jì)制作專業(yè)學(xué)什么seo關(guān)鍵詞排名優(yōu)化評(píng)價(jià)
  • 建設(shè)一個(gè)怎樣的自己的網(wǎng)站濟(jì)南競(jìng)價(jià)托管公司
  • wordpress建立網(wǎng)站寧波網(wǎng)站seo診斷工具
  • 小程序定制開(kāi)發(fā)網(wǎng)站百度網(wǎng)址是什么
  • 網(wǎng)站壓縮山西網(wǎng)絡(luò)營(yíng)銷seo
  • 做提升自己的網(wǎng)站汕頭自動(dòng)seo
  • 織夢(mèng)網(wǎng)站模板怎么做搜索引擎seo外包
  • 網(wǎng)站會(huì)員模板網(wǎng)站關(guān)鍵詞推廣價(jià)格
  • vultr 做網(wǎng)站搜索引擎優(yōu)化的完整過(guò)程
  • vs2012手機(jī)網(wǎng)站開(kāi)發(fā)教程常用的五種網(wǎng)絡(luò)營(yíng)銷工具
  • 工藝禮品東莞網(wǎng)站建設(shè)seoul national university
  • asp網(wǎng)站制作實(shí)例教程目前網(wǎng)絡(luò)推廣平臺(tái)
  • 天寧寺網(wǎng)站建設(shè)seo學(xué)校培訓(xùn)
  • 站長(zhǎng)工具綜合查詢ip怎樣在百度上發(fā)布作品
  • 怎么做提取微信62的網(wǎng)站網(wǎng)頁(yè)制作流程
  • 網(wǎng)站的內(nèi)連接如何做沈陽(yáng)優(yōu)化網(wǎng)站公司
  • 怎么通過(guò)域名做網(wǎng)站年度關(guān)鍵詞有哪些
  • 在那個(gè)網(wǎng)站做義工好河南網(wǎng)站建設(shè)定制