強化學習 - 機器人走迷宮
通過這篇文章,分享基於Udacity的機器人走迷宮項目,使用強化學習實現;
問題描述
規則、需求如下:
- 智能機器人顯示在右上角,在迷宮中,有陷阱(紅色炸彈)及終點(藍色的目標點)兩種情景,機器人要盡量避開陷阱、盡快到達目的地;
- 機器人可執行的動作包括:向上走 u、向右走 r、向下走 d、向左走 l;
- 執行不同的動作后,根據不同的情況會獲得不同的獎勵,具體而言,有以下幾種情況;
- 撞到牆壁:-10
- 走到終點:50
- 走到陷阱:-30
- 其余情況:-0.1
- 通過修改 robot.py 中的代碼,來實現一個 Q Learning 機器人,實現上述的目標;
算法Q-Learning
QLearning是強化學習算法中value-based的算法,Q即為Q(s,a)就是在某一時刻的 s 狀態下(s∈S),采取 動作a (a∈A)動作能夠獲得收益的期望,環境會根據agent的動作反饋相應的回報reward r,所以算法的主要思想就是將State與Action構建成一張Q-table來存儲Q值,然后根據Q值來選取能夠獲得最大的收益的動作;
項目截圖
項目總結
強化學習也是目前比較熱門的方向,與傳統ML不同的是,強化學習並不是數據貪婪性算法,即不需要預置大量的歷史數據,而是通過不斷的探索、更新、探索、更新的方式來不斷的優化自身的策略,這一點相信在類似游戲AI的領域的應用是廣泛的,當然,本文只是拋磚引玉,以QLearning這樣一個簡單易於理解的算法作為引導,更多的是想展示強化學習的應用場景、領域,為大家打開思路,如果大家需要完整瀏覽整個項目,可以直接在下面的項目鏈接找到,可以通過nbviewer瀏覽或者通過github直接下載下來運行,並調試各個參數看動態效果,相信動手后,會有更多體會;
項目地址
因為項目使用Jupyter寫的,而目前博客園不支持iframe元素,因此無法很好的展示,大家可以直接生成的頁面查看:
https://nbviewer.jupyter.org/github/NemoHoHaloAi/qlearning_maze/blob/master/robot_maze.ipynb
當然也可以直接去Github上找到:
https://github.com/NemoHoHaloAi/qlearning_maze
如果可以順便Follow、Fork、Start,那就感激不盡了,后面會持續分享自己的一些工作、生活、學習上的收獲,如果能對大家有一點點的幫助,那是最好不過的;