加速訓練

強化學習可能是一個計算上困難的問題,它不僅樣本效率低下,而且難以擴展到更複雜的環境。在本頁中,我們將討論加速訓練的一般策略:向量化環境、優化訓練和演算法啟發法。

向量化環境

通常在訓練中,代理 (Agent) 會從單一環境中採樣,將每秒步數(樣本)限制為環境的速度。通過同時在多個環境中執行動作,可以大幅提高訓練速度,這稱為向量化環境,其中相同環境的多個實例並行運行(在多個 CPU 上)。Gymnasium 提供了兩個內建類別來向量化大多數通用環境:gymnasium.vector.SyncVectorEnvgymnasium.vector.AsyncVectorEnv,可以使用 gymnasium.make_vec() 輕鬆建立。

應該注意的是,向量化環境可能需要更改您的訓練演算法,並且可能在子環境數量非常多的情況下導致訓練不穩定。

優化訓練

通常可以通過優化您的程式碼來實現加速訓練,特別是對於在訓練中使用 GPU 的深度強化學習,需要將資料傳輸到 RAM 和 GPU 記憶體以及從 RAM 和 GPU 記憶體傳輸資料。

對於以 PyTorch 和 Jax 撰寫的程式碼,它們提供了 jit(即時編譯)程式碼順序的能力,適用於 CPU、GPU 和 TPU(對於 jax),以減少訓練時間。

演算法啟發法

學術研究人員不斷探索新的優化方法,以提高代理 (Agent) 效能並減少訓練代理 (Agent) 所需的樣本數量。特別是,樣本高效強化學習是強化學習的一個專業子領域,它探索訓練演算法和環境啟發法的優化,以減少代理 (Agent) 最大化效能所需的代理 (Agent) 觀察數量。由於該領域不斷改進,我們建議讀者查找綜述論文和最新研究,以了解目前存在的最有效演算法改進。