簡介
今天我們來說明一下Unity ML一些主要神經元,其中有三大塊,Agent、Brain以及這篇要介紹的Academy。先簡單說一下Academy他在這三個神經元主要負責什麼工作,在先前幾篇有提到他就像是大學教授一般會搜集其他研究學生所實驗出的數據做整合,並與先前其他研究做比對再給出新的假設數據給予研究學生進行下一步的實驗,而先前的其他研究的資料在這邊就是就是透過Python API所提供,根據外部設定檔案來制定研究規則等限制(也就是train_config檔)來進行AI的訓練。
先知道Academy主要在做啥
Academy在Unity場景中協調所有Agent對象。每個自己訓練的AI場景都必須包含一個Academy。要使用Academy,必須創建自己的子類。但是,您可以覆蓋的所有方法都是可選的。主要有三個方法會使用在Academy程式中:
1.Initialize the environment after the scene loads
(場景加載後初始化環境)
2.Reset the environment
(重置環境)
3.Change things in the environment at each simulation step
(在每個模擬步驟更改環境中的事物)
大家可以看到這三種方法幾乎都是在改變在你場景中的環境重置(這也可以放在Agent使用)與初始化環境。
如何在你自己環境下建置Academy
Step1 : 先在你的Project中新增一個C#程式檔案,檔案名稱可以再加上xxx_Academy.cs,這樣比較好分辨檔案別。
Step2 : 我們先做一個基本動作,在上圖標示1的,先import Unity ML環境的套件。讓你的此程式碼檔案可以使用Unity ML類別與方法,這邊就打上:(您要先確定前幾篇所講述的Unity ML環境安裝要成功才行)
using MLAgents;
Step3 : 標示2的是你的C#剛剛程式的名稱,切記要跟你新增xxx_Academy.cs檔名要一樣,不然會出錯,這邊我是以我自己命名的SeesawAcademy.cs。
Step4 : 接著要看到是標示3的,剛剛在第一步有成功的話,我們就可以引用MLAgents套件中的Academy類別,繼承此類別讓你的程式檔擁有Academy功能,在這邊就把monobehaviour改成Academy吧。
實現方法
1.Initializing an Academy
初始化在Academy對象的生命週期中執行一次。將InitializeAcademy()方法用於通常在標準Unity(monobehaviour) Start()或Awake()方法中執行的任何邏輯。
重點:InitializeAcademy會在程式啟動時執行一次而已。
2.Resetting an Environment
AcademyReset():在結束一次train之後(得到reward或扣分)就會啟動此方法將物件、參數或是環境(必要重置的實體)進行重置,接著繼續訓練。可能你每次訓練的random物件想要不同,例如環境的random,掛載agents的物件位置、角度等等,都可以使用到這個方法,讓整個訓練可以克服更多的環境變數達到更smart的境界。
3.Controlling an Environment
AcademyStep() : 假如設計出不同階段的模擬場景時就可以用到此方法。這方法是在AgentAction()前會呼叫到。在AgentAction()還沒作動前也可使用AcademyStep()來更新場景中的物件。舉例來說,假如你設定訓練MaxStep到了多少想要在場景增加難度,新增新的訓練物件,就可以把新的物件程式寫在這個方法中。
Academy在Unity Inspector
將我們剛剛新增好的程式碼儲存後,在Unity場景中新增一個空物件並重新命名它,然後把剛剛的Academy程式碼加入此空物件成為他的元件,成功後就會顯現如上圖。
1.Broadcast Hub
– 此欄位是在放置我們設定好的Brain,假如要新增或移除上方有相對按鈕,假如要給外部訓練的話 Control要打勾
2.Max Steps
– 總共訓練次數,設定“0”,可以透過trian_config來設定就好
3.Training Configuration – 此區設定關聯到training的品質跟速度
– Width :環境視窗的寬
– Height:環境視窗的高
– Quality level:運算畫面的品質,數值越高越好
– Time scale:環境運算的速度,數值越高運算越快
– Target frame rate:想要維持的FPS
4.Inference Configuration (他會預設,可以不用動)
5.Reset Parameters
– 客製化的參數,當環境重置時可以改變此參數。
小結
Academy 在場景中協調驅動模擬的Policy決策部分,每個虛擬環境中只需要一個Academy。在Academy中最重要的事Max Step,這參數是代表你的訓練會有幾個(循環-episode),此參數會出現在inspector中。在下一篇我們來講講舊版本提到的Brain與新版本Behaviou。