通俗易懂談強(qiáng)化學(xué)習(xí)之Q-Learning算法實戰(zhàn)

本文約3500字,建議閱讀7分鐘 本篇實戰(zhàn)講解強(qiáng)化學(xué)習(xí),所有的實戰(zhàn)代碼可以自行下載運(yùn)行。
01 強(qiáng)化學(xué)習(xí)
上一篇帖子
http://mp.weixin.qq.com/s?__biz=MzIyNjM2MzQyNg==&mid=2247601164&idx=1&sn=f04f1ce25158509cb632e724bf735809&chksm=e8729d41df051457e501db18fa649400e430515326be92c29c4f2ee58017df905912de7d969b&scene=21#wechat_redirect
02 Pacman Project講解

03 Q-Learning介紹
Agent(智能體):?強(qiáng)化學(xué)習(xí)訓(xùn)練的主體就是Agent:智能體。Pacman中就是這個張開大嘴的黃色扇形移動體; Environment(環(huán)境):?整個游戲的大背景就是環(huán)境;Pacman中Agent、Ghost、豆子以及里面各個隔離板塊組成了整個環(huán)境; State(狀態(tài)):?當(dāng)前 Environment和Agent所處的狀態(tài),因為Ghost一直在移動,豆子數(shù)目也在不停變化,Agent的位置也在不停變化,所以整個State處于變化中;State包含了Agent和Environment的狀態(tài); Action(行動):?基于當(dāng)前的State,Agent可以采取哪些action,比如向左or右,向上or下;Action是和State強(qiáng)掛鉤的,比如上圖中很多位置都是有隔板的,很明顯Agent在此State下是不能往左或者往右的,只能上下; Reward(獎勵):Agent在當(dāng)前State下,采取了某個特定的action后,會獲得環(huán)境的一定反饋就是Reward。這里面用Reward進(jìn)行統(tǒng)稱,雖然Reward翻譯成中文是“獎勵”的意思,但其實強(qiáng)化學(xué)習(xí)中Reward只是代表環(huán)境給予的“反饋”,可能是獎勵也可能是懲罰。比如Pacman游戲中,Agent碰見了Ghost那環(huán)境給予的就是懲罰。
Q-Value(State, Action): Q-value是由State和Action組合在一起決定的,這里的Value不是Reward,Reward是Value組成的一部分,具體如何生成Q-value下面會單獨介紹。實際的項目中我們會存儲一張表,我們叫它Q表。key是(state, action), value就是對應(yīng)的Q-value。每當(dāng)agent進(jìn)入到某個state下時,我們就會來這張表進(jìn)行查詢,選擇當(dāng)前State下對應(yīng)Value最大的Action,執(zhí)行這個action進(jìn)入到下一個state,然后繼續(xù)查表選擇action,這樣循環(huán)。Q-Value的價值就在于指導(dǎo)Agent在不同state下選擇哪個action。
3.1 Bellman 方程
3.2 貝爾曼方程的Q-Value版


04 Q-Learning實戰(zhàn)

4.1 預(yù)熱

python pacman.py -p RandomAgent -n 14.2 Q-Learning算法訓(xùn)練
State:game.py文件已經(jīng)將如何獲取Agent當(dāng)前的State定義成了Class,直接引用即可; Action:game.py文件已經(jīng)將Agent在當(dāng)前State可以采取的Action定義成了Class,直接引用即可;(感興趣的同學(xué)可以自己打開文件查看代碼,核心就是建立一個坐標(biāo)系,然后確定擋板、Ghost、豆子、Agent的位置,然后進(jìn)行判斷和數(shù)學(xué)表達(dá)。) 參數(shù)設(shè)置:學(xué)習(xí)率alpha我們設(shè)置為0.2,折扣率gamma設(shè)置為0.8,最終訓(xùn)練完我們讓Pacman運(yùn)行numTraining=10次查看效果,同時這里面有一個探索率epsilon = 0.05。這就是上一篇介紹的EE問題,我們不能光讓Agent去執(zhí)行Q-value最大的action,同時我們也需要讓Pacman有一定的探索。







python pacman.py -p QLearnAgent -x 2000 -n 2010 -l smallGrid下圖是訓(xùn)練時打印的message;



編輯:王菁
校對:龔力
評論
圖片
表情
