另一種建立階層的方式
選項回答的是「哪一項技能?」。還有第二種、越來越流行的答案:與其從一份技能菜單中挑選,不如讓高層「提出一個目標」,再由低層學會抵達它被交付的任何目標。這就是目標條件式強化學習(goal-conditioned RL)——單一的策略與價值函數把「想要的目標」當成額外輸入,於是一個網路就能追求成千上萬個不同的目標。
這是用「意圖的抽象」而非「行為的抽象」來建立階層:高層仍以粗略的時序抽象時間尺度運作(它為一個目標承諾許多步),但它送出的是一個「目的地」,而不是一個手工命名的技能。
通用價值函數(UVFA)
要追求任意目標,你需要一個能在目標之間泛化的價值函數。通用價值函數近似器(universal value function approximators, UVFAs)正是做這件事:它把目標折進輸入,近似 `V(狀態, 目標)` 或 `Q(狀態, 動作, 目標)`。只要在少數目標上訓練,UVFA 就能「內插」到它從未明確練習過的目標——這正是讓目標條件式階層能夠擴展的橋樑。
通用價值函數逼近器學習一個在所有目標 g 之間共享的價值函數,滿足這個以目標為條件的貝爾曼最優方程。
事後目標重標記
目標條件式強化學習在稀疏獎勵情境下有個雞生蛋的問題:若智能體幾乎從不抵達被指定的目標,就幾乎從不拿到獎勵,於是永遠學不會。事後目標重標記(hindsight goal relabeling)是個優雅的解法——也是現代強化學習中最低調卻最強大的想法之一。
互動式 Q 學習網格世界,智能體學習導航到目標格子。
- 跑一回合,瞄準目標 g。假設你失敗了,最後落在某個狀態 *g'*。
- 把同一條軌跡重新標記成「彷彿 *g'* 一開始就是目標」。如今它是一次「成功」——一個真實、密集的學習訊號。
- 用原始目標與重標記目標一起訓練 UVFA。每一次失敗都變成關於「某個」可達目標的一課。
封建式強化學習:管理者與工人
封建式強化學習(feudal reinforcement learning)把「設定目標」的想法變成一個明確的兩層管理者-工人階層(manager-worker hierarchy)。「管理者」(manager)以較慢的時間尺度運作並送出一個目標——通常是學到的潛在空間中的一個方向或目標點。「工人」(worker)以快速的原始時間尺度運作,並因「把狀態推向管理者的目標」而得到獎勵。
其定義性原則是「獎勵隱藏」(reward hiding):工人從不看見真正的任務獎勵,只看見管理者的「抵達目標」訊號;管理者也從不發出原始動作,只發出目標。這種乾淨的分工意味著管理者可以學習長跨度的策略,而工人專精短跨度的控制。現代變體(例如 FeUdal Networks)在潛在空間中設定目標,並用一個「轉移方向」目標來訓練管理者,使它的目標保持可達。
封建式強化學習中的獎勵隱藏:工人的內在獎勵只衡量其移動與管理者下達的方向 g 的吻合程度——它從不接觸真實的任務獎勵。
選項還是目標——如何抉擇
- 當存在「一小組清楚可重用、可命名的技能」、而你想把它們當成離散、可遷移的積木時,選用「選項」。
- 當「理想子目標」的空間很大或連續時,選用「目標條件式/封建式」設計——讓管理者在目標空間中提出點,遠比列舉成千上萬個選項更易擴展。
- 無論哪種,子目標發現都會再度浮現:一個能提出「好目標」的封建管理者,與一個能找出「好技能」的選項學習器,解的是同一個問題。