使用 PyTorch 的策略梯度 – Hugging Face 深度強化學習課程 第 5 單元

TL;DR

Hugging Face 發布了一個實作 REINFORCE(蒙特卡羅策略梯度)演算法的實作教學,使用 PyTorch,並在 CartPole‑v1、PixelCopter 與 Pong 上進行基準測試,標誌著其免費深度強化學習課程第 5 單元的完成。


什麼是策略梯度方法?

策略梯度方法屬於更廣泛的基於策略的強化學習演算法類別,直接優化策略,而不學習中介的價值函數。它們透過對隨機策略 (\pi_{\theta}(a\mid s)) 的參數 (\theta) 進行梯度上升,以最大化期望回報的目標。

策略梯度概述

強化學習的目標是找到能最大化期望累積獎勵的策略。在策略梯度方法中,策略為每個狀態輸出一個行動的機率分佈。透過抽樣回合、計算總回報 (R(\tau)),並調整 (\theta) 以提升導致高回報的行動的對數機率,演算法將策略導向更有獎勵的行為。

策略梯度方法的優勢

  1. 簡潔性 – 無需儲存或估計行動價值表;演算法直接更新策略。
  2. 隨機策略 – 代理人透過從其行動分佈抽樣自然探索,免除手動設計探索策略的需求。
  3. 對感知別名的魯棒性 – 在模糊狀態下,隨機策略可以隨機化行動,避免確定性策略可能遭遇的死路。
  4. 可擴展至高維或連續行動空間 – 與必須對每個離散行動評估 Q 值的 Deep Q‑Learning 不同,策略梯度輸出一個分佈,可表示無限多的行動。

策略梯度方法的劣勢

  • 局部最適 – 梯度上升可能收斂到次佳策略。
  • 樣本效率低 – 由於更新基於蒙特卡羅回報,訓練可能需要大量回合。
  • 高變異 – 梯度估計可能噪聲較大;通常需要使用降低變異的技巧(例如基線)。

欲深入了解優缺點,文章提供了 YouTube 說明的連結。


REINFORCE(蒙特卡羅策略梯度)

REINFORCE 使用整個回合的回報來更新策略參數:

  1. 收集一個回合 (\tau) 透過執行目前的策略 (\pi_{\theta})。
  2. 估計梯度 (\hat{g}=\nabla_{\theta} J(\theta)) 其中 [ J(\theta)=\mathbb{E}{\tau\sim\pi{\theta}}[R(\tau)] ] 梯度以 (\nabla_{\theta}\log \pi_{\theta}(a_t\mid s_t),R(\tau)) 於每個時間步近似。
  3. 使用學習率 (\alpha) 更新策略: [ \theta \leftarrow \theta + \alpha \hat{g} ]

項 (\nabla_{\theta}\log \pi_{\theta}(a_t\mid s_t)) 指向所採取行動之對數機率最陡上升的方向,而回報 (R(\tau)) 會對此方向進行縮放:高回報會提升觀測到的狀態‑行動配對的機率,低回報則會降低它們。


使用 PyTorch 的實作操作

教學提供了一個 Colab 筆記本,內容包括:

  • 在 PyTorch 中定義一個隨機策略網路。
  • 從三個環境中抽樣完整回合 – CartPole‑v1PixelCopterPong
  • 計算回合回報並套用 REINFORCE 更新規則。
  • 將表現記錄至公開排行榜,讓學習者可比較分數。

Resources


教育背景與後續步驟

此單元結束了 Deep Reinforcement Learning Class 的策略梯度部分 – 由 Hugging Face 主辦的免費、從入門到專家的課程。完成 REINFORCE 實作後,鼓勵學習者:

  • 嘗試其他環境以鞏固理解。
  • 檢視課程大綱中連結的補充閱讀材料。
  • 為下一單元做準備,該單元將介紹結合策略與價值學習的 Actor‑Critic 方法。

透過 Google 表單收集回饋,以持續改進課程。


重點回顧

Hugging Face 的新教學為學習者提供完整、從頭開始的 PyTorch REINFORCE 演算法實作,展示其在經典控制與 Atari 風格任務中的適用性,並作為通往更進階混合方法(如 Actor‑Critic)的門檻。

Sources