国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于TensorFlow 的Q-Learning 算法研究與實現(xiàn)

2019-11-22 08:22劉俊利
現(xiàn)代計算機 2019年29期
關(guān)鍵詞:迷宮定義狀態(tài)

劉俊利

(西南科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院,綿陽 621000)

0 引言

近年來,隨著科技的發(fā)展,人工智能在多個領(lǐng)域均取得了令人矚目的成就。其中AlphaGo[1]以3 比0 的總比分戰(zhàn)勝了世界圍棋冠軍柯潔就是其標志性成果之一,而關(guān)于這次勝利背后所運用到的技術(shù),強化學(xué)習(xí)是核心之一。強化學(xué)習(xí)的算法主要分為兩大類:一種是基于值的算法(Value-Based),另一種是基于策略的算法(Policy-Based)。基于值的算法是通過計算每一個狀態(tài)動作的價值,選擇價值最大的動作執(zhí)行;基于策略的算法直接對策略進行建模。兩者方式不同,但核心都是在行動-評價的環(huán)境中獲得學(xué)習(xí)信息并更新模型參數(shù),改進行動方案以適應(yīng)環(huán)境。Q-Learning 是強化學(xué)習(xí)中基于值的經(jīng)典算法之一,它能夠很好地體現(xiàn)強化學(xué)習(xí)的思想并且已經(jīng)得到了廣泛應(yīng)用。本文將分析Q-Learning 算法的原理及公式,然后借助TensorFlow訓(xùn)練框架的算力,最終完成該算法的運行與實現(xiàn)。

1 強化學(xué)習(xí)簡介

強化學(xué)習(xí)(Reinforcement Learning,RL)[2]是機器學(xué)習(xí)的一個重要分支。有別于其他傳統(tǒng)的機器學(xué)習(xí)模式,它受到行為主義心理學(xué)啟發(fā),模擬生物的學(xué)習(xí)過程,不要求預(yù)先給定任何數(shù)據(jù),也沒有監(jiān)督者,強調(diào)在給定情景下不斷試錯,最終學(xué)習(xí)得出最佳策略。強化學(xué)習(xí)有5 個核心概念,分別為:智能體(Agent)、環(huán)境(Environment)、行動(Action)、狀態(tài)(State)和獎勵(Reward)。智能體可以理解為機器人,用于完成學(xué)習(xí)任務(wù);環(huán)境是一個外部系統(tǒng),智能體存在于環(huán)境中;動作是智能體輸出的行為;狀態(tài)用于描述環(huán)境和智能體的關(guān)系,是做出決策的依據(jù);獎勵是環(huán)境提供給智能體的反饋信號,用于評價智能體某一行動的好壞。具體地,它們的關(guān)系如圖1 所示。

圖1 強化學(xué)習(xí)關(guān)系圖

t 表示t 時刻;St表示t 時刻的環(huán)境狀態(tài);rt表示t時刻環(huán)境對當前動作或者狀態(tài)的回報;αt表示t 時刻選擇的行為。智能體通過感知t 時刻的St和rt選擇執(zhí)行αt,αt執(zhí)行后影響環(huán)境,環(huán)境狀態(tài)立即由St變?yōu)镾t+1,同時新的環(huán)境立即給出回報rt+1反饋給智能體。直到新的環(huán)境狀態(tài)為結(jié)束狀態(tài),強化學(xué)習(xí)需要不斷循環(huán)這一過程。

2 Q-Learning算法

2.1算法思想

Q-Learning 算法[3]是一種基于值的算法,Q-table和Q(s,a)函數(shù)是該算法的核心。Q-table 是一張存儲Q值的表格,用于指導(dǎo)智能體的行動,它的每一列代表一個動作,每一行表示一個狀態(tài)。Q(s,a)函數(shù)又稱動作值函數(shù)(action-value function),用于計算在s 狀態(tài)執(zhí)行了a 行為后的期望獎勵數(shù)值,計算所得即Q 值最終完成Q-table 單元格的填充。具體Q(s,a)函數(shù)公式如式(1),Q-table 表格如表1。

表1 Q-table 表格

2.2 算法流程

由于Q-Learning 算法要實現(xiàn)智能體在環(huán)境中學(xué)習(xí),所以在算法執(zhí)行之前首先要完成環(huán)境的定義,完成環(huán)境的定義后開始Q-Learning 算法的具體流程:首先要對Q-table 進行初始化,在其所有單元格內(nèi)設(shè)定相同的初始值(大多數(shù)情況下是0)。然后智能體開始對環(huán)境進行探索,在不斷嘗試和接收反饋的過程中,Q-table通過迭代使用Bellman 方程[4]實現(xiàn)單元格內(nèi)Q(si,aj)值的更新,找到對于每個狀態(tài)來說的最佳動作,最終通過Q-table 得到最優(yōu)策略。具體流程如圖2 所示。

圖2 Q-Learning 算法流程

3 Python實現(xiàn)

3.1 定義迷宮環(huán)境

定義一個5 行9 列的迷宮地圖并將智能體的位置為作為狀態(tài),設(shè)置其具體位置為(self.x,self.y),self.x 和self.y 初始值均為1。智能體在迷宮中各種行為的表示是環(huán)境定義的重點,interact 函數(shù)中的action 屬性共有4 個取值:0,1,2,3,分別表示四個基本動作:向上、向下、向左、向右,每個動作的執(zhí)行環(huán)境都會判斷并給予相應(yīng)的回報。

def interact(self,action):

assert self.is_end is False

new_x=self.x+DX[action]#新的x 坐標

new_y=self.y+DY[action]#新的y 坐標

new_pos_char=self.map[new_x][new_y]#新的位置

self.step+=1#表示已經(jīng)走了幾步

if new_pos_char=='.':#如果走到墻壁

reward=0 #不改變位置且沒有獎勵

elif new_pos_char=='':#如果沒有寶藏

self.x=new_x

self.y=new_y

reward=0#走到新的位置但是沒有獎勵

elif new_pos_char=='o':#如果有寶藏

self.x=new_x

self.y=new_y#走到新的位置

self.map[new_x][new_y]='' #更新地圖

self.is_end=True #游戲結(jié)束

reward=100#獲得100 獎勵

self.total_reward+=reward

return reward

3.2 定義Q-Learning算法

Q 函數(shù)是Q-Learning 算法的核心,首先定義Q函數(shù):

e=Env()#環(huán)境

Q= np.zeros((e.state_num,4))#e.state_num 表示狀態(tài)的總數(shù),4 表示可以執(zhí)行4 個動作

然后學(xué)習(xí)計算定義好的Q 函數(shù)的值,具體程序如下:

for i in range(200):#進行200 次游戲

e=Env()#每進行一次游戲都需要初始環(huán)境

while(e.is_end is False)and(e.step

action = epsilon_greedy(Q,e.present_state)#依據(jù)Q 值和當前狀態(tài),利用ε-greedy 策略[5]挑選行動

state=e.present_state#當前狀態(tài)

reward=e.interact(action)#當前回報

new_state=e.present_state#新的狀態(tài)

Q[state,action]=(1-ALPHA)*Q[state,action]+

ALPHA *(reward + GAMMA * Q[new_state,:].max())#更新Q 值

其中更新Q 值對應(yīng)的公式具體如式(2):

4 程序運行界面效果

利用深度學(xué)習(xí)框架TensorFlow[6]實現(xiàn)一個簡單的Q-Learning 算法示例:一個自動尋寶的機器人,運行效果如圖4 所示(運行結(jié)果太長,只能截取部分),效果非常直觀。其中A 表示智能體,o 表示迷宮里的寶藏,智能體一共玩了200 次這個游戲且每次游戲結(jié)束后運行界面均會顯示智能體的整個動作過程。在200 次的游戲過程中,明顯可以感受到智能體在不斷地“學(xué)習(xí)”且最終確實達到了以較少步驟獲得獎勵的目標,實現(xiàn)了Q-Learning 算法。

圖3 運行效果

5 結(jié)語

本文首先介紹了強化學(xué)習(xí)的基本概念,之后給出了Q-Learning 算法的算法思想和算法流程,然后利用TensorFlow 搭建迷宮環(huán)境,定義并訓(xùn)練Q 函數(shù),最終實現(xiàn)Q-Learning 算法的一個簡單示例:一個自動尋寶的機器人。運行結(jié)果良好,在200 次的游戲中機器人確取得了較好的學(xué)習(xí)效果,實現(xiàn)了Q-Learning 算法,也證明了Q-Learning 算法確實可以實現(xiàn)在沒有任何監(jiān)督的情況下找到最優(yōu)策略。

猜你喜歡
迷宮定義狀態(tài)
以愛之名,定義成長
一種基于ResNet的車鉤狀態(tài)識別方法及其應(yīng)用
嚴昊:不定義終點 一直在路上
定義“風(fēng)格”
狀態(tài)聯(lián)想
生命的另一種狀態(tài)
大迷宮
迷宮
捕網(wǎng)迷宮
創(chuàng)造獨一無二的迷宮
东源县| 平和县| 子长县| 辽阳县| 肥城市| 循化| 雷州市| 新沂市| 福贡县| 武陟县| 黔西| 海林市| 金秀| 马鞍山市| 渝北区| 日喀则市| 蛟河市| 晋城| 三河市| 合肥市| 周宁县| 浮梁县| 康保县| 永昌县| 迭部县| 罗甸县| 盐津县| 大丰市| 车致| 海阳市| 于田县| 惠来县| 乌什县| 宿州市| 太白县| 盱眙县| 璧山县| 巴楚县| 云南省| 江川县| 崇州市|