本文旨在探究將PyTorch Lightning應用於激動人心的強化學習(RL)領域。在這里,我們將使用經典的倒立擺gym環境來構建一個標准的深度Q網絡(DQN)模型,以說明如何開始使用Lightning來構建RL模型。
- 在本文中,我們將討論:
- 什么是lighting以及為什么要將它應用於RL
- 標准DQN模型簡介
- 使用Lightning構建DQN的步驟
- 結果和結論
如果您想直接跳轉到代碼,可以在Pythorch Lightning示例頁面中找到示例,或者通過單擊下面的colab圖標查看交互式colab筆記本!
什么是lighting?

Lightning是一個最近發布的Pythorch庫,它可以清晰地抽象和自動化ML模型所附帶的所有日常樣板代碼,允許您專注於實際的ML部分(這些也往往是最有趣的部分)。
除了自動化樣板代碼外,Lightning還可以作為一種樣式指南,用於構建干凈且可復制的ML系統。
這非常吸引人,原因如下:
- 通過抽象出樣板工程代碼,可以更容易地識別和理解ML代碼。
- Lightning的統一結構使得在現有項目的基礎上進行構建和理解變得非常容易。
- Lightning 自動化的代碼是用經過全面測試、定期維護並遵循ML最佳實踐的高質量代碼構建的。
DQN

在我們進入代碼之前,讓我們快速回顧一下DQN的功能。DQN通過學習在特定狀態下執行每個操作的值來學習給定環境的最佳策略。這些值稱為Q值。
最初,智能體對其環境的理解非常差,因為它沒有太多的經驗。因此,它的Q值將非常不准確。然而,隨着時間的推移,當智能體探索其環境時,它會學習到更精確的Q值,然后可以做出正確的決策。這允許它進一步改進,直到它最終收斂到一個最優策略(理想情況下)。
我們感興趣的大多數環境,如現代電子游戲和模擬環境,都過於復雜和龐大,無法存儲每個狀態/動作對的值。這就是為什么我們使用深度神經網絡來近似這些值。
智能體的一般生命周期如下所述:
- 智能體獲取環境的當前狀態並將其通過網絡進行運算。然后,網絡輸出給定狀態的每個動作的Q值。
- 接下來,我們決定是使用由網絡給出智能體所認為的最優操作,還是采取隨機操作,以便進一步探索。
- 這個動作被傳遞到環境中並得到反饋,告訴智能體它處於的下一個狀態是什么,在上一個狀態中執行上一個動作所得到的獎勵,以及該步驟中的事件是否完成。
- 我們以元組(狀態, 行為, 獎勵, 下一狀態, 已經完成的事件)的形式獲取在最后一步中獲得的經驗,並將其存儲在智能體內存中。
- 最后,我們從智能體內存中抽取一小批重復經驗,並使用這些過去的經驗計算智能體的損失。
這是DQN功能的一個高度概述。
輕量化DQN
啟蒙時代是一場支配思想世界的智力和哲學運動,讓我們看看構成我們的DQN的組成部分
模型:用來逼近Q值的神經網絡
重播緩沖區:這是我們智能體的內存,用於存儲以前的經驗
智能體:智能體本身就是與環境和重播緩沖區交互的東西
Lightning模塊:處理智能體的所有訓練
完整文章請訪問 https://imba.deephub.ai/p/bb3d7380786811ea90cd05de3860c663
或關注公眾賬號

