深度強化學習課程文件
Huggy 的工作原理
並獲得增強的文件體驗
開始使用
Huggy 的工作原理
Huggy 是由 Hugging Face 製作的深度強化學習環境,基於 Unity MLAgents 團隊的 Puppo the Corgi 專案。此環境是使用 Unity 遊戲引擎 和 MLAgents 建立的。ML-Agents 是 Unity 遊戲引擎的工具包,它允許我們使用 Unity 建立環境或使用預製環境來訓練我們的智慧體。
在此環境中,我們的目標是訓練 Huggy 撿起我們扔的棍子。這意味著他需要正確地朝棍子移動。
狀態空間,Huggy 的感知。
Huggy 不會“看”他的環境。相反,我們向他提供有關環境的資訊
- 目標(棍子)位置
- 他與目標之間的相對位置
- 他腿的方向。
有了所有這些資訊,Huggy 可以使用他的策略來決定下一步採取什麼行動以實現他的目標。
動作空間,Huggy 可以執行的動作
關節馬達驅動 Huggy 的腿。這意味著要達到目標,Huggy 需要學習正確地旋轉他每條腿的關節馬達,以便他能夠移動。
獎勵函式
獎勵函式旨在使 Huggy 實現他的目標:撿到棍子。
請記住,強化學習的基礎之一是獎勵假設:目標可以描述為最大化預期累積獎勵。
在這裡,我們的目標是 Huggy 走向棍子但不要旋轉太多。因此,我們的獎勵函式必須實現此目標。
我們的獎勵函式
- 方向獎勵:我們獎勵他接近目標。
- 時間懲罰:每次行動都會給予固定的時間懲罰,以迫使他儘快到達棍子。
- 旋轉懲罰:如果 Huggy 旋轉過多或轉動過快,我們將懲罰他。
- 到達目標獎勵:我們獎勵 Huggy 到達目標。
如果您想了解此獎勵函式在數學上是什麼樣子,請檢視 Puppo the Corgi 簡報。
訓練 Huggy
Huggy 的目標是學習正確地以最快速度跑向目標。為此,在每一步中,根據環境觀察,他需要決定如何旋轉他腿的每個關節馬達,以便正確地移動(不過度旋轉)並朝向目標。
訓練迴圈如下所示
訓練環境如下所示
這是一個隨機生成棍子的地方。當 Huggy 拿到它時,棍子會生成在其他地方。我們為訓練構建了環境的多個副本。這有助於透過提供更多樣化的經驗來加速訓練。
現在您已經對環境有了大致的瞭解,您就可以訓練 Huggy 去撿棍子了。
為此,我們將使用 MLAgents。如果您以前從未使用過它,請不要擔心。在此單元中,我們將使用 Google Colab 訓練 Huggy,然後您將能夠載入您訓練好的 Huggy 並直接在瀏覽器中與他玩耍。
在未來的一個單元中,我們將更深入地研究 MLAgents 並瞭解其工作原理。但目前,我們透過只使用提供的實現來保持簡單。
< > 在 GitHub 上更新