深度強化學習課程文件

Huggy 的工作原理

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

Huggy 的工作原理

Huggy 是由 Hugging Face 製作的深度強化學習環境,基於 Unity MLAgents 團隊的 Puppo the Corgi 專案。此環境是使用 Unity 遊戲引擎MLAgents 建立的。ML-Agents 是 Unity 遊戲引擎的工具包,它允許我們使用 Unity 建立環境或使用預製環境來訓練我們的智慧體

Huggy

在此環境中,我們的目標是訓練 Huggy 撿起我們扔的棍子。這意味著他需要正確地朝棍子移動

狀態空間,Huggy 的感知。

Huggy 不會“看”他的環境。相反,我們向他提供有關環境的資訊

  • 目標(棍子)位置
  • 他與目標之間的相對位置
  • 他腿的方向。

有了所有這些資訊,Huggy 可以使用他的策略來決定下一步採取什麼行動以實現他的目標

動作空間,Huggy 可以執行的動作

Huggy action

關節馬達驅動 Huggy 的腿。這意味著要達到目標,Huggy 需要學習正確地旋轉他每條腿的關節馬達,以便他能夠移動

獎勵函式

獎勵函式旨在使 Huggy 實現他的目標:撿到棍子。

請記住,強化學習的基礎之一是獎勵假設:目標可以描述為最大化預期累積獎勵

在這裡,我們的目標是 Huggy 走向棍子但不要旋轉太多。因此,我們的獎勵函式必須實現此目標。

我們的獎勵函式

Huggy reward function
  • 方向獎勵:我們獎勵他接近目標
  • 時間懲罰:每次行動都會給予固定的時間懲罰,以迫使他儘快到達棍子
  • 旋轉懲罰:如果 Huggy 旋轉過多或轉動過快,我們將懲罰他。
  • 到達目標獎勵:我們獎勵 Huggy 到達目標

如果您想了解此獎勵函式在數學上是什麼樣子,請檢視 Puppo the Corgi 簡報

訓練 Huggy

Huggy 的目標是學習正確地以最快速度跑向目標。為此,在每一步中,根據環境觀察,他需要決定如何旋轉他腿的每個關節馬達,以便正確地移動(不過度旋轉)並朝向目標。

訓練迴圈如下所示

Huggy loop

訓練環境如下所示

Huggy training env

這是一個隨機生成棍子的地方。當 Huggy 拿到它時,棍子會生成在其他地方。我們為訓練構建了環境的多個副本。這有助於透過提供更多樣化的經驗來加速訓練。

現在您已經對環境有了大致的瞭解,您就可以訓練 Huggy 去撿棍子了。

為此,我們將使用 MLAgents。如果您以前從未使用過它,請不要擔心。在此單元中,我們將使用 Google Colab 訓練 Huggy,然後您將能夠載入您訓練好的 Huggy 並直接在瀏覽器中與他玩耍。

在未來的一個單元中,我們將更深入地研究 MLAgents 並瞭解其工作原理。但目前,我們透過只使用提供的實現來保持簡單。

< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.