Unity3D ML – TensorBoard

簡介

當我們透過Unity ML套件來實驗AI訓練時,無論是使用官方提供的範例或是我們自己創建的訓練劇本,我們在訓練結束時(到達了Max Step),我們要怎麼知道訓練是否精準的訓練完成?

一種檢視方式是將訓練好的NN檔案丟到Project中的Brain中,讓場景Play一下,可以看到比較表面的訓練結果。另一個方式就是要透過我們這篇要介紹的TensorBoard來精準的觀察我們的訓練階段與成果。

在環境建介紹篇有提到怎樣喚起TensorBoard,就是接續你在命令提示字元中訓練完成的成果後鍵入以下程式碼,並開啟本機網頁就可以看到了。然而這篇我們來介紹一下頁面中的一些圖表在表達的是什麼、要調整什麼方向再去做訓練。

tensorboard --logdir=summaries --port=6006

TensorBoard – Note

在講解圖表前,我們可以先注意到官方提到的幾個要注意的地方:

1.假如你鍵入上方的指令後且無法開啟,TensorBoard使用的默認端口是6006。如果端口6006上正在運行現有會話,則可以使用–port選項在打開的端口上啟動。

2.如果你在開使訓練時的-run – id 沒有輸入名稱時,則mlagents-learn使用默認字符串“ ppo”。所有統計信息將保存到同一子文件夾中,並在TensorBoard中顯示為一個會話,則無法看到圖表的曲線顯示。

3.在TensorBoard窗口的左側(上圖的左側紅框框),你可以選擇要顯示的訓練項目。你可以選擇多個訓練ID來比較統計信息。 TensorBoard窗口還提供有關如何顯示和平滑圖形的選項(上圖的藍色框框)。

4.當你不想開啟TensorBoard,但又想儲存這些訓練圖表檔案可以使用以下的指令來作動。

--save-freq

TensorBoard – Environment Statistics

在Environment類別中,每一個圖表中會有X與Y軸,個別代表的不同意涵,但X軸每一個圖表都是代表訓練次數,而我們會來講解每一個圖代表的東西。

1.Environment/Cumulative Reward (累積的獎勵)– 此圖的Y軸代表的Reward,所有在Unity ML中所設定的Agent在每個訓練階段平均累積獎勵,可以看到一個正常且成功的訓練,圖表的曲線應該是要慢慢增長的。

2.Environment/Episode Length (每一次訓練存活時間)– 此圖的Y軸代表時間,場景中所有的Agent所有觀察每一次訓練累積Reward的存活時間,正常圖表是訓練到越後面他存活時間越久。

3.Environment/Lesson (課程訓練曲線)– 當我們使用機器學習的監督式強化學習時,此圖不會有任何起伏,這個圖表假如是使用『 curriculum training 』課程學習才會讓圖表有曲線變化。

TensorBoard – Loss Functions

在Loss Function圖表的X與Y軸一樣有不同的單位,Y軸是訓練次數,X軸則由下面來介紹吧。

1.Losses / Forward Loss (PPO+Curiosity AI演算法) – 逆模型損失函數的平均幅度。對應於模型對新觀測編碼的預測能力。X軸是代表Loss的值,Loss值越低則訓練模型越成功,然而在上圖表其實基本上在訓練到第10k的時候其實就可以終止訓練了,否則有時候訓練過頭會出現反效果。

2.Losses / Inverse Loss (PPO+Curiosity AI演算法) – 正向模型損失函數的平均幅度。與模型能夠很好地預測兩次觀察之間採取的行動相對應。

3.Losses / Policy Loss(PPO AI演算法)– Policy損失函數的平均大小。與策略(決定操作的過程)在多大程度上相關。在成功的培訓課程中,其強度應降低。

4.Losses / Value Loss(PPO AI演算法)– 值函數更新的平均損失。與模型能夠預測每個狀態的值的程度相關。在坐席正在學習時,該值應增加,然後在獎勵穩定後減少。

Loss小結論:
看到上圖的此圖表也是映照Forward Loss與Inverse Loss所顯示的最佳值是落在10k與Value Loss的最高點也在10K,代表你建置的此AI訓練在第10K次訓練效果最佳的階段。

TensorBoard – Policy Statistics

1.Policy / Curiosity Reward (PPO+Curiosity AI演算法) – 這對應於每訓練階段生成的平均累積內的獎勵。可以看到在10-15K時累積的Reward是最高的。

2.Policy / Entropy (PPO ; BC Curiosity AI演算法) – 模型的決策有多隨機。在成功的培訓過程中應緩慢降低。如果它降低得太快,則應增加在 train_config 中的 beta 參數。

3.Policy / Learning Rate (PPO ; BC Curiosity AI演算法) – 訓練演算法在搜索最佳策略時需要走多大的步伐。應該隨著時間的流逝而減少。

4.Policy / Value Estimate (PPO ; BC Curiosity AI演算法) – Agent訪問所有狀態的平均值估計。在成功的訓練過程中應增加。

小結

在本篇中有提到可以看著圖表來發現你的訓練在哪個階段發生什麼變化,根據 Environment , Loss , Policy三個面向來調整,而除了調整Unity場景中的程式碼或元件外,我們在下篇提到Command Line的指令介紹,並會下下一篇會講述到train_config檔案的參數,下篇可以跟這篇交互閱讀來提升自己的訓練狀態。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *