最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

強化學習實戰(zhàn)之QLearning實現(xiàn)滑動桿小游戲

2021-10-11 19:07 作者:深度之眼官方賬號  | 我要投稿

嘿嘿!本篇也是學姐粉絲的投稿!“上次的征稿活動”還在繼續(xù)!投稿就會有獎品的!真不是學姐偷懶用粉絲的投稿發(fā)推文,是他們寫的真的很不錯,迫不及待的想把他們總結(jié)的精華都展現(xiàn)出來給大家!


廢話不多說,今天的學習從玩?zhèn)€游戲(滑動桿CartPole)開始,看下圖。我們的目標是,我們通過向左或向右滑動滑塊來保證桿子始終在滑塊的上方。下圖我設置隨機滑動滑塊,展現(xiàn)出來就是這樣一個效果。



經(jīng)過該篇文章學習后,你能通過強化學習操控滑塊,達到如下的一個效果。



首先需要安裝Gym,即游戲仿真平臺。使用pip install gym,即可完成安裝。需要注意的是,如果使用google colab等在線編程平臺就不能成功彈出可視化圖像。建議本地運行。


CartPole游戲比較有名,大多數(shù)強化學習入門教材都會使用這個例子。


文章后面有完整源代碼。



01?具體操作步驟



1.1 gym使用



如上代碼,?



看到這里不難發(fā)現(xiàn),該游戲的行為(action)只有向左或向右移動滑塊。也就是說,想要玩好這個游戲。我們需要有一個策略決定如何在不同的環(huán)境下,來向左或向右移動滑塊。


什么是不同的環(huán)境?在該游戲的背景下,滑塊的位置,滑塊的速度,滑塊的桿的角度以及滑塊桿的角速度,這四點確定,是不是我們就可以說環(huán)境確定下來了。OK,先不管這么多,看結(jié)果輸出。


結(jié)果:



對了,還有一個很重要的沒講。如下代碼env.step將返回四個值。

  • obs是一個數(shù)組,包含滑塊的位置,滑塊的速度,滑塊的桿的角度以及滑塊桿的角速度。



  • rew即reward,強化學習里面的概念。如果游戲始終進行,其值就為1;game over 該值為0。



  • done:要不怎么說這是游戲仿真器呢,如果滑塊上的桿不在滑塊上方,done為True,否則為False。當done為True是,也就意味著游戲結(jié)束??慈缦麓a,你的感觸會更深。



  • info:沒什么用。





結(jié)果:





1.2 QLearning介紹


就這個游戲進行展開:


問題定義:


玩好這個游戲,我們可以換一種具體的表述,即在環(huán)境觀察值 observation確定的情況下,如何對行為 action進行預測。


更具體點就是,給定滑塊的位置,滑塊的速度,滑塊的桿的角度以及滑塊桿的角速度,我們?nèi)绾闻袛嘞乱徊降男袨椋椿瑝K向左還是向右滑動。


這樣太斷然了,更合理的定義應該是:給定環(huán)境觀測值以及相應地行為標識,我們輸出對應行為的概率。


問題分析:


我們自然想到使用字典來維護這個映射。


  • 字典的keys由環(huán)境觀察值的四元組+行為的標識組成(行為值為0向左,1向右)構(gòu)成。

  • values由一個數(shù)值構(gòu)成,代表進行對應行為概率(置信度)。

  • 如此,只要我們成功維護該字典,玩游戲時,就能通過字典的key(環(huán)境觀察值及行為標識),找到其value,與環(huán)境觀察值相同的其他行為標識value值進行比較,進而選擇可能性更大的走法。

  • Qlearning中的Q,其實就是我們這里的字典


字典如何維護?



剛玩游戲時,字典Q是空的,代表我們沒有任何經(jīng)驗。引入一個概念,利用與探索(即經(jīng)驗與試錯)。在讓模型玩游戲的過程中,以一定的概率(?)來進行利用與探索。


利用:代表使用當前已有的Q字典進行決策,按照決策行動后,還沒有game over的話,那就給這個決策獎勵,即相應的行為probability增加。


探索:代表隨機進行決策,同樣的,按照決策行動后,還沒有game over的話,那就也給這個決策獎勵。


Tips:利用過程剛開始為字典空,那就意味著向左向右的概率相同,也就相當于探索。


那如何通過具體的獎勵(reward)來更新行動的概率值呢?QLearning這樣做,如下。


QLearning公式:



其中s就是當前環(huán)境觀察值,a就是行為標識,α就是學習率,r就是reward獎勵,s′與a′就是決策后的環(huán)境與行為,γ是對未來reward的衰減值。為什么如上公式有效,全網(wǎng)有很多理論證明,我這里就不細說了。


不斷玩游戲,Q字典就不斷得到完善。如上表示可能還不是很清晰,具體細節(jié)可看如下代碼,也很簡單。



1.3 生成Q表


其實講到現(xiàn)在還有個問題沒有解決。你想啊,我們的環(huán)境觀察值雖然是四元組,但是其中每一個值都是連續(xù)的。這不就代表游戲中有無數(shù)多種環(huán)境嗎?那這個字典還怎么維護的了。我們需要將其離散化。使用如下函數(shù)即可。



訓練生成Q表:



如上代碼進行了1萬次的游戲。Q表已經(jīng)維護的比較好了。接下來我們就要利用Q表信息,完成可視化。



1.4 Q表決策



結(jié)果:



02?源代碼



03?總結(jié)


關于QLearning中的超參數(shù)設置有講究。不同的超參數(shù)得到的實驗結(jié)果相差很大,如果是做一個陌生的課題,調(diào)參是很有必要的。


QLearning算法,像這種環(huán)境簡單,決策也簡單的模型,尚可駕馭。但象棋,圍棋甚至王者榮耀這種決策游戲,環(huán)境狀態(tài)可以多到比天上的星星還多,恐怕計算機內(nèi)存再大也無法存儲下Q表。這時候神經(jīng)網(wǎng)絡就來了,這兩者的結(jié)合就是天造地設。


神經(jīng)網(wǎng)絡能夠識別模式,也就是說環(huán)境狀態(tài)雖然多,但只要讓網(wǎng)絡學習到了環(huán)境狀態(tài)到?jīng)Q策的映射,我們無需維護Q表,使用網(wǎng)絡直接就能生成Q值。


參考資料:


https://mofanpy.com/tutorials/machine-learning/reinforcement-learning/intro-q-learning/


https://github.com/microsoft/ML-For-Beginners/tree/main/8-Reinforcement/1-QLearning


如有雷同文章,那就是學姐粉絲寫的【狗頭】


如果你有什么想法,可以來學姐的交流群,交流一下!關注【學姐帶你玩AI】公眾號后臺回復“加群”即可!



強化學習實戰(zhàn)之QLearning實現(xiàn)滑動桿小游戲的評論 (共 條)

分享到微博請遵守國家法律
滁州市| 尤溪县| 丹寨县| 西贡区| 七台河市| 涪陵区| 买车| 定边县| 杭锦后旗| 阿图什市| 海林市| 祁东县| 巴马| 石泉县| 屏东市| 灵台县| 根河市| 上犹县| 股票| 靖州| 海淀区| 松原市| 林口县| 栖霞市| 吉林省| 伊宁市| 清流县| 漯河市| 凭祥市| 弋阳县| 安康市| 武胜县| 独山县| 英吉沙县| 会东县| 突泉县| 太康县| 肇东市| 宁蒗| 德惠市| 通辽市|