亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

強化學習 Q-learning及python例子

系統 2741 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條評論
主站蜘蛛池模板: 精品日本久久久久久久久久 | 天天干夜夜草 | 天天干人人干 | 大色综合色综合网站 | 免费在线一级片 | 色18美女社区 | 香蕉综合网 | 亚洲天天网综合自拍图片专区 | 亚洲狠狠婷婷综合久久久久网站 | 色综合久久六月婷婷中文字幕 | 亚洲一区二区免费在线观看 | 色妞bbbb女女女女 | 天天综合天天做天天综合 | 精品国产免费一区二区三区五区 | 亚洲精品成人一区二区www | 男女羞羞免费视频 | 99国产高清久久久久久网站 | 久久久噜久噜久久综合 | 免费看搡女人的视频 | 深夜福利剧场 | 在线观看日本人免费视频色 | 天天综合久久久网 | 精品一区二区三区在线播放 | 88国产经典欧美一区二区三区 | 这里精品 | 黄色网址亚洲 | 国产在线观看99 | 亚洲欧美在线播放 | 久久精品免视看国产盗摄 | 日韩在线国产精品 | 2019精品国产品免费观看 | 啪啪网站免费 | 午夜一级在线 | 日日夜夜操天天干 | 久久精品国产99久久无毒不卡 | 久久久久久久国产精品视频 | 国产精品视_精品国产免费 国产精品视频2021 | 四虎4hu永久免费 | 久久77777 | 天天曰曰 | 久久久精品国产四虎影视 |