欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

強化學習 Q-learning及python例子

系統 2528 0

文章目錄

  • Q-learning原理
  • python例子

本文是作者在學習莫煩的強化學習課程中的筆記,強烈推薦 莫煩強化學習。

Q-learning原理

我們以一個走迷宮的小游戲為例:讓探索者學會走迷宮. 黃色的是天堂 (reward 1), 黑色的地獄 (reward -1). 大多數 RL 是由 reward 導向的, 所以定義 reward 是 RL 中比較重要的一點.

強化學習 Q-learning及python例子_第1張圖片
Q-learning原理實際上就是建立一個Q表(最本文最后有展示),里面包含所有狀態下、不同動作的Q值(最終根據Q值走出迷宮),Q-learning通過不斷嘗試每個回合、每一步,不斷的更新Q表,最終達到最優的狀態。
強化學習 Q-learning及python例子_第2張圖片
整個算法就是一直不斷更新 Q table 里的值, 然后再根據新的值來判斷要在某個 state 采取怎樣的 action. Qlearning 是一個 off-policy 的算法, 因為里面的 max action 讓 Q table 的更新可以不基于正在經歷的經驗(可以是現在學習著很久以前的經驗,甚至是學習他人的經驗). 不過這一次的例子, 我們沒有運用到 off-policy, 而是把 Qlearning 用在了 on-policy 上, 也就是現學現賣, 將現在經歷的直接當場學習并運用. On-policy 和 off-policy 的差別我們會在之后的 Deep Q network (off-policy) 學習中見識到. 而之后的教程也會講到一個 on-policy (Sarsa) 的形式, 我們之后再對比。

python例子

首先我們先 import 兩個模塊, maze_env 是我們的環境模塊, 已經編寫好了, 大家可以直接在這里下載, maze_env 模塊我們可以不深入研究, 如果你對編輯環境感興趣, 可以去看看如何使用 python 自帶的簡單 GUI 模塊 tkinter 來編寫虛擬環境. maze_env 就是用 tkinter 編寫的. 而 RL_brain 這個模塊是 RL 的大腦部分.

            
              
                from
              
               maze_env 
              
                import
              
               Maze

              
                from
              
               RL_brain 
              
                import
              
               QLearningTable

            
          

下面的代碼, 我們可以根據上面的圖片中的算法對應起來, 這就是整個 Qlearning 最重要的迭代更新部分啦.

            
              
                def
              
              
                update
              
              
                (
              
              
                )
              
              
                :
              
              
                # 學習 100 回合
              
              
                for
              
               episode 
              
                in
              
              
                range
              
              
                (
              
              
                100
              
              
                )
              
              
                :
              
              
                # 初始化 state 的觀測值
              
              
        observation 
              
                =
              
               env
              
                .
              
              reset
              
                (
              
              
                )
              
              
                while
              
              
                True
              
              
                :
              
              
                # 更新可視化環境
              
              
            env
              
                .
              
              render
              
                (
              
              
                )
              
              
                # RL 大腦根據 state 的觀測值挑選 action
              
              
            action 
              
                =
              
               RL
              
                .
              
              choose_action
              
                (
              
              
                str
              
              
                (
              
              observation
              
                )
              
              
                )
              
              
                # 探索者在環境中實施這個 action, 并得到環境返回的下一個 state 觀測值, reward 和 done (是否是掉下地獄或者升上天堂)
              
              
            observation_
              
                ,
              
               reward
              
                ,
              
               done 
              
                =
              
               env
              
                .
              
              step
              
                (
              
              action
              
                )
              
              
                # RL 從這個序列 (state, action, reward, state_) 中學習
              
              
            RL
              
                .
              
              learn
              
                (
              
              
                str
              
              
                (
              
              observation
              
                )
              
              
                ,
              
               action
              
                ,
              
               reward
              
                ,
              
              
                str
              
              
                (
              
              observation_
              
                )
              
              
                )
              
              
                # 將下一個 state 的值傳到下一次循環
              
              
            observation 
              
                =
              
               observation_
            
              
                # 如果掉下地獄或者升上天堂, 這回合就結束了
              
              
                if
              
               done
              
                :
              
              
                break
              
              
                # 結束游戲并關閉窗口
              
              
                print
              
              
                (
              
              
                'game over'
              
              
                )
              
              
    env
              
                .
              
              destroy
              
                (
              
              
                )
              
              
                if
              
               __name__ 
              
                ==
              
              
                "__main__"
              
              
                :
              
              
                # 定義環境 env 和 RL 方式
              
              
    env 
              
                =
              
               Maze
              
                (
              
              
                )
              
              
    RL 
              
                =
              
               QLearningTable
              
                (
              
              actions
              
                =
              
              
                list
              
              
                (
              
              
                range
              
              
                (
              
              env
              
                .
              
              n_actions
              
                )
              
              
                )
              
              
                )
              
              
                # 開始可視化環境 env
              
              
    env
              
                .
              
              after
              
                (
              
              
                100
              
              
                ,
              
               update
              
                )
              
              
    env
              
                .
              
              mainloop
              
                (
              
              
                )
              
            
          

迷宮中各個狀態的位置:

強化學習 Q-learning及python例子_第3張圖片
最終學到的Q表:
強化學習 Q-learning及python例子_第4張圖片


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产欧美一区二区成人影院 | 精品久久影院 | 亚洲国产精品久久综合 | 日本99热 | 国产精品视_精品国产免费 亚洲综合在线另类色区奇米 | 久草福利在线观看 | 国产视频成人 | 色婷婷色婷婷 | 国产视频高清 | 亚洲人一区 | 99在线视频精品 | 欧美日韩在线一区 | 欧美性高清bbbbbbxxxxx | 亚洲免费小视频 | 日本三级韩国三级香港三级 | 亚洲一区国产视频 | 99久久久久久久 | 午夜在线观看视频 | 在线三级电影 | 日日狠日 | 亚洲一区中文字幕在线观看 | 韩漫重考生漫画画免费读漫画下拉式土豪漫 | 欧美日韩一区二区三区在线观看 | 青娱乐在线视频盛宴 | 加勒比精品久久一区二区三区 | 欧美日韩不卡合集视频 | 一区二区三区日韩在线观看 | 欧美一级欧美三级在线观看 | 精品久久久久久久人人人人传媒 | 国产精品毛片久久久久久久 | 三人弄娇妻高潮3p视频 | 天天影视免费在线观看入口 | 国产精品小黄鸭一区二区三区 | 欧美18—19sex性hd按摩 | 天天影视色香欲综合网老头 | 欧美爽爽爽高清免费视频 | 琪琪五月天综合婷婷 | 精品欧美成人高清视频在线观看 | 久久久久久久国产精品影院 | 九九精品视频在线观看九九 | 亚洲精品一区国产 |