Unity ML-Agents 第二章:範本介紹

Source: Deep Learning on Medium

Go to the profile of CK Sun

經過上一章的安裝,這次直接帶大家進入UnityML的世界,在本章我們會來開啟 Unity ML-Agents Toolkit中的經典範例-3D小球來介紹使用預訓練好的模型套用在範例專案上。

專案環境設定

這邊環境就用最新版的2018.3.3f1,安裝完成後打開Project,(點Open)

進到ml-agents/,點UnitySDK直接按打開就可以了。(截圖是OSX ,基本上往後步驟兩個作業系統操作幾乎一樣)

這邊他會問版本問題,不用理他直接按open,後面會問要不要升版本也是按升級。(windows版按continue,會有一些包的問題也都是直接按continue)

進來之後會看到這個畫面,如果是Uniy老手可以跳過下一段,這邊開始講解怎麼調整工作區到方便處理的位置。

(選用)首先點上面的Windows>Layouts>2 by 3,就會看到跟我一樣的排列工作區

(選用)然後關掉一個分區,接下來直接按著TAB直接拉到左邊(可視個人喜好調整),

(選用)最後會長這樣。

接下來安裝上一章節說的 TensorFlowSharp,到下載好的目錄。點選兩下匯入

點完之後會回專案然後載入會出現匯入的視窗,按import

匯入完之後檢查最左邊的工作區,點ML-agents>Plugins,看有沒有出現Computer資料夾,有的話代表匯入成功。

接下來點Edit>Project Settings…,打開專案設定。

點開左邊的Player然後點選other Settings的選項會跑出一堆選項。

拉到下面找到 Scripting Define Symbols的選項,在空格裡輸入

ENABLE_TENSORFLOW

輸入完會自動儲存,記得勾選unsafe Code,因為有載入TFSharp的外掛,所以沒有勾的話會出Error,點右上角的紅色按鈕離開,接下來環境就設定完成了(Windows用戶要多一個步驟,要點File>Save Project),可以進入最基礎的3D小球範例。

3D Ball

接下來開啟3D Ball場景,打開左邊的目錄

Assets/ML-Agents/Examples/3DBall/Scenes

底下點兩下3DBall,就會出現如我下面的場景。

載入預訓練好的模型

打開左邊的目錄,到Prefabs下面點兩下Game,

Assets/ML-Agents/Examples/3DBall/Prefabs

右邊的工作區點Platform,然後屬性視窗會有一堆屬性,找到Brain屬性,點一下框框

會發現目錄視窗跳出黃框,

把左邊黃框那個資料夾裡的 3DBallLearning直接拉到剛剛點的那個框框內。

之後點一下左邊目錄內的 3DBallLearning,會出現屬性。

把TFMODEL資料夾裡已經訓練好的模型 3DBallLearning拉到屬性內的Model,這樣子你已經完成載入預訓練好的數據了,點選中間上面的撥放鍵就可以看到已經訓練好的板板穩穩地接住小球了。

這邊概略講解一下原理,因為這12組可以視為一組小球+板板,我們剛剛在Prefabs裡可以發現一個關卡就是由一個平台含一個平面+一顆小球組成,而在這個平台裡我們有套用一組Agents腳本,然後在控制平台的Brain裡塞入一個Reinforcement Learning模型,採用Proximal Policy Optimization (PPO)演算法,有興趣的可以點入連結研究算法。

模型在訓練的時候會一直調整參數,完成之後會存成一組.bytes檔,打開的話會看到一堆不是人讀的編碼,不過要注意的是,每次訓練的參數在TF不一樣版本下載入會有相容性的問題,建議在訓練完之後用打開命令列匯出一組環境檔來做為備份。(前提是有裝anaconda or miniconda)

conda env export > environment.yml

輸入這個指令會得到一個environment.yml檔案,以後有需要用到同樣環境的時候只要在檔案存在的目錄下打

conda env create -f ./environment.yml

就會創建出一模一樣的環境了。

基本上分成12組訓練是因為訓練的時候都是用同一組模型在訓練,可以分12路平行訓練,如果覺得電腦夠強的話,可以增加到50組,也可以加速運算,建議是採多路運算,然後速度保持在可以觀察的情況下,這樣才可以隨時調整,不然訓練了一天一夜之後發現弄錯了就還得重來。

前面兩個章節都是引導大家建立好完整的環境來使用這些套件,下個章節開始會教大家用這些範本來訓練自己的模型。