ML-Agents學習筆記三:Pyramids demo 詳解

ML-Agents 是一個開源項目,使游戲和模擬場景能夠作為訓練智能代理的環境。它提供最先進算法的實現(基于 PyTorch),使游戲開發者和愛好者能夠輕松訓練 2D、3D 和 VR/AR 游戲的智能代理。研究人員還可以使用提供的簡單易用的 Python API 來使用強化學習、模仿學習、神經進化或任何其他方法來訓練代理。


機器學習系列:
ML-Agents學習筆記一:環境搭建
ML-Agents學習筆記二:UNITY實例工程簡介
ML-Agents學習筆記三:Pyramids demo 詳解
ML-Agents學習筆記四:使用強化學習訓練模型
ML-Agents學習筆記五:使用TensorBoard 觀察訓練
……

AI小白系列:
AI小白篇一:Anaconda+Pycharm搭建深度學習環境
AI小白篇二:使用anaconda搭建TensorFlow環境
AI小白篇三:Tensorflow首項
AI小白篇四:Tensorflow的開源案例實踐1
AI小白篇五:Tensorflow的開源案例實踐2
AI小白篇六:Tensorflow的開源案例實踐3
……


上文以 pyramids為列,簡單的介紹了一個ML-Agents的工程,并且查看了示例的成果:預先訓練好的模型會根據實際場景進行推理,讓代理者神奇在迷宮中躲避各種障礙,不走彎路順利找到目標。

在本節中,將對 Pyramids demo 進行詳細講解, 學習如何構建一個使用ML-Agents進行訓練的項目 。

1、訓練場景組成

Demo啟動后,會發現它到包含以下幾個GameObject

  • Agent: 訓練與推理的智能體,核心中核心,下文詳細介紹;
  • BrickPyramid: 寶藏金字塔,位置隨機生成(隱藏),Agent尋找的目標就在此金字塔頂部,打散金字塔,讓目標掉落并觸碰到,即完成并進入下一個回合;
  • Switch: BrickPyramid 顯示的開關,位置隨機生成,Agent需要觸碰到Switch,BrickPyramid才會顯示
  • StonePyramid: 普通的金字塔,充當障礙物,位置隨機生成。
  • 其它,都是一些普通的場景對象,構成可視化的訓練場景,無需關注。

2、Agent配置詳解

Agent 是觀察環境并采取行動的參與者。在 Pyramid 環境中,代理組件放置在十六個“代理”游戲對象上。

影響基礎Agent對象的行為的幾個屬性:

下面詳細介紹Behavior Parameters的配置項

1、Behavior Parameters : Vector Observation

用于配置智能體的矢量觀測空間。這些配置項定義了智能體在每個步驟中從環境中接收的信息量和類型。

配置項包括:

  • Space Size:
    定義單次觀測的矢量維度數。即每個時間步智能體從環境中接收的觀測信息的維度。
    根據智能體需要感知的環境狀態信息設置合適的維度數。
    例如,如果智能體需要感知自身位置(x, y, z)和速度(vx, vy, vz),則空間大小應設置為 6。

  • **Stacked Vectors:
    定義每個時間步堆疊的觀測數量。通過堆疊觀測,智能體可以感知到歷史信息,這對于處理時間相關的任務(如平滑移動)非常有用。
    對于需要歷史觀測數據的任務非常有用。例如,設置為 3 表示智能體在每個時間步將接收當前和之前兩個時間步的觀測信息。

pyramids示例配置如下。

配置項 描述
Space Size 4 四個觀測量分別是 智能體是否找到鑰匙(即碰到Switch),智能體剛體的速度矢量Vector3
Stacked Vectors 1 只觀測當前信息

Vector Observation 允許你配置智能體的矢量觀測空間。通過正確配置 Space Size 和 Stacked Vectors,可以確保智能體從環境中接收到足夠且合適的信息,從而更好地完成任務。Space Size 定義了每次觀測的矢量維度數,而 Stacked Vectors 允許你堆疊歷史觀測,增加智能體對時間相關信息的感知能力。根據具體任務需求設置合適的配置,可以顯著提升智能體的表現。

2、Behavior Parameters : Actions

Actions定義了智能體如何與環境進行交互, ML-Agents Toolkit 將Actions分為兩種類型: 連續離散

  • Continuous Actions
    定義連續動作空間的維度數,即智能體在每個步驟中能夠輸出的連續動作數。
    適用于需要平滑控制的任務,如轉向角度、速度控制等。

  • Discrete Branches
    定義離散動作空間的分支數,即智能體在每個步驟中可以選擇的不同離散動作類別數。
    適用于動作數量有限的任務,如選擇離散的移動方向或動作類型。

  • Branch X Size
    定義第X(從0開始)個離散動作分支中的動作數量,即智能體在第X個離散動作分支中可以選擇的動作數。
    用于詳細定義離散動作分支中的具體動作數量。

pyramids示例的配置如下,在C#程序中,它被設計為使用離散動作,這些動作是離散的整型數。

配置項 描述
Continuous Actions 0 0 表示沒有連續動作
Discrete Branches 1 一個離散動作分支
Branch 0 Size 5 0-4的5個整型數,模仿人的行為:0-在程序中沒看到用途,1-4表示前進-后退-左轉-右轉四個離散行為

在配置 Actions 部分時,需要根據智能體的需求選擇合適的動作空間類型(離散或連續)并設置相應的參數。這樣可以確保智能體能夠正確地與環境進行交互,執行期望的動作。通過正確配置動作空間,可以實現復雜的行為和控制邏輯,提升智能體在訓練和推理過程中的表現。

4、Model : Inference Device

Inference Device 指的是用于進行推理(Inference)的設備。推理是指在訓練完成后,使用訓練好的模型在游戲中運行智能體的過程。推理設備決定了模型在游戲中實際運行時使用的硬件資源。

ML-Agents 支持在不同的硬件設備上進行推理,以滿足不同的性能需求和硬件環境。

舊版本中的推理設備
  • CPU
    適用于大多數通用計算任務,幾乎所有的計算設備都有 CPU。
    適用于開發和調試階段,或者在沒有專用硬件加速的環境中運行。
    優點:普遍存在,兼容性好。
    缺點:推理速度相對較慢,尤其是在處理復雜的深度學習模型時。

  • GPU
    適用于并行計算任務,尤其是矩陣運算和其他與深度學習相關的操作。
    適用于需要高性能推理的場景,比如實時游戲環境中運行復雜的模型。
    優點:推理速度快,能夠顯著提高復雜模型的推理性能。
    缺點:需要支持 CUDA 的 NVIDIA GPU,可能不適用于所有開發和運行環境。

1.0版本之后的推理設備
  • Default
    使用默認的推理設備,一般來說這是 CPU,但具體取決于 Unity ML-Agents 的實現和環境配置。
    一般用于不特別需要優化的環境下,適合開發和調試階段。

  • Burst
    利用 Unity 的 Burst 編譯器進行推理。Burst 編譯器可以大幅度優化性能,通過向量化和其他低級優化來加速代碼執行。
    當你需要在 CPU 上進行高效的推理,而不使用 GPU 時,這是一個很好的選擇。

  • Compute Shader
    使用計算著色器(Compute Shader)在 GPU 上進行推理。計算著色器能夠高效地進行并行計算,適合大規模矩陣運算和深度學習模型的推理。
    需要在 GPU 上進行高效推理的場景,適合復雜的模型和高實時性要求的應用。

  • Pixel Shader
    使用像素著色器(Pixel Shader)在 GPU 上進行推理。雖然不像計算著色器那么通用,但在一些特定的圖像處理任務上可能有優化。
    通常不如 Compute Shader 通用,但在某些圖像相關的推理任務中可以使用。

如何選擇合適的 Inference Device

選擇合適的推理設備取決于你的具體需求和應用場景:

  • Default:如果你不確定使用哪種推理設備,可以先使用默認選項,這樣可以確保兼容性和穩定性。
  • Burst:如果你的應用在 CPU 上運行,并且你希望通過編譯器優化來提高性能,使用 Burst 是一個好的選擇。
  • Compute Shader:如果你的應用可以在 GPU 上運行,并且需要高性能的推理,使用 Compute Shader 可以顯著提高性能。
  • Pixel Shader:除非你有特定的需求,否則一般推薦使用 Compute Shader 而不是 Pixel Shader。

其它配置

  • Behavior Name:
    智能體行為的名稱。用于在訓練和推理過程中區分不同的智能體行為。
    為每種行為定義一個獨特的名稱,有助于在訓練和推理日志中識別和分析不同的行為。

  • Behavior Parameters : Model:
    配置用于推理的機器學習模型文件(.onnx 文件),經訓練后,可以切換自己訓練出來的模型,對比看看推理效果如何。

  • Behavior Type:
    指定智能體的行為類型。選項包括 :

    • Default: 在訓練模式下使用訓練過程,在推理模式下使用模型推理。
    • Heuristic Only: 始終使用啟發式方法進行決策,不使用模型。
    • Inference Only: 始終使用模型進行推理,不進行訓練。
  • Max Step
    最大步驟-定義代理在訓練回合結束前可以發生多少模擬步驟。在 pyramids 中,一個代理在5000步后重啟。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容