Related Posts Plugin for WordPress, Blogger...

7-4 Imitation Learning Example : Banana Collectors

本章要來介紹模仿學習的範例,香蕉收集者。本章僅以應用為主,實際寫Code的部分留待下一章再開始。

模仿學習Imitation Learning
在傳統的強化學習任務中,通常通過計算累積獎賞來學習最優策略(政策),這種方式簡單直接,而且在可以獲得較多訓練數據的情況下有較好的表現。然而在多步決策 (連續決定)中,學習器不能頻繁地得到獎勵,且這種基於累積獎賞及學習方式存在非常巨大的搜索空間。而模仿學習(模仿學習)的方法經過多年的發展,已經能夠很好地解決多步決策問題,在機器人,NLP等領域也有很多的應用。

引述自:https://zhuanlan.zhihu.com/p/25688750

底下是一個香蕉收集者的範例,必須控制藍色小方框搜集新鮮的香蕉,黃色的才是新鮮的香蕉,藍紫色的是不新鮮的香蕉。吃到新鮮的香蕉會有正向反饋,吃到不新鮮的香蕉會有負向反饋。這個項目裡面會有兩個場景,一個是訓練用的場景,跟著操作者去吃新鮮的香蕉。經過一個訓練之後,就會放到下面這個大規模的場景。

首先開啟我們的專案,然後打開放在ML-Agents/Examples/BananaCollectors/Scenes底下的BananaIL,這就是用來進行模仿學習的場景。

打開場景後,可以看見有一個戴著帽子的藍色小方框,這就是給玩家操作的老師。而右邊則是從頂部觀看的情況,可以看見整個場景的學習狀況。

由於我第七章的課程,都會以MacOS進行開發,如不懂如何進行環境建置的話,請先參考下列文章:
7-3 Setting Up Unity ML-Agents On MacOS
https://3dactionrpg.blogspot.com/2018/07/7-3-setting-up-unity-ml-agents-on-macos.html

如需要Windows的環境建置教學,也可參考此文章:
7-2 Setting Up Unity ML-Agents On Windows
https://3dactionrpg.blogspot.com/2018/07/7-2-setting-up-unity-ml-agents-on.html

接下來,我們啟動Virtualenv,輸入指令:
source ~/tensorflow/bin/activate

然後再切換到專案的Python資料夾,請大家依自己放置的路徑進行切換唷,輸入指令:
cd /Users/datastar/Documents/Unity\ Project/ml-agents/python

接著,我們要在編輯器內進行學習,請輸入指令:
python learn.py --train --slow

其中,--slow參數是要放慢訓練過程,因為玩家操作的速度無法比上機器自動操作,所以訓練過程也要放慢,才能準確記錄到玩家的操作。

當終端機跳出Unity標誌之後,就代表訓練開始了,這時請回到Unity,啟動遊戲。

開始操作你的角色,當你操作一段時間以後,就會發現其他的AI也開始行動了。由於是模仿學習,所以我先操作在原地轉圈,轉了一段時間後,其他的AI也會模仿我,跟著開始轉圈。如果一直站在原地不動,其他AI也會跟著停下來。如不要讓AI學習你現在的動作,可按下R鍵關閉記錄功能。

如你認為學習的效果可以了,停止遊戲,回到終端機。你就會看見『Now saving model』的提示。

回到專案的python/models/ppo資料夾內,會看見一個名叫editor_Academy_ppo.bytes的檔案,這就是訓練過後的Model檔。由於是在編輯器內訓練,所以檔名開頭會有editor字樣。

將這個Model檔案拉進Unity專案。

接著打開另外一個Scene,名叫Banana。

從場景中找到BananaBrain,並將Graph Model替換成我們剛剛訓練好的Model檔。

啟動遊戲,你就會發現AI是依照我們訓練的結果進行移動的。

另外一提,如果你覺得訓練後儲存的bytes檔都放在ppo資料夾內很容易搞混,可以在訓練指令內多加一個參數。輸入指令:
python learn.py --run-id=banana --train --slow

--run-id=banana,指定要放在名為banana的資料夾。

訓練完後,就會發現在ppo資料夾旁,多出了一個banana的資料夾。

裡面確實放有訓練後的Model檔。

留言