一次只走一步的麻煩
標準的強化學習把每個決策都當成單一的原始動作(primitive action):推一下關節、按一個鍵、往左走一步。對短任務沒問題,但想像一個必須穿越大樓、開門、拿杯子的智能體。作為一個序列決策問題,這串原始動作長達數百步,而獎勵只在最後才出現。智能體於是面臨殘酷的信用分配問題:這數百個微小動作裡,到底哪些真正重要?
循环示意图:智能体向环境发送动作,环境返回奖励和下一个状态。
更深層的問題是,延遲獎勵在長時間跨度上會被「稀釋」。每個微小動作只分到一絲責難或功勞,因此每一步的學習訊號既微弱又充滿雜訊。探索也跟著受害:隨機的單步抖動幾乎不可能碰巧拼出一個百步的解法。
折扣回报:远处的奖励被 gamma^k 缩小,因此在长时域上每一步分到的那份信用都被稀释。
時序抽象化:核心概念
人類不會把走去廚房規劃成上千次肌肉抽動。我們想的是「走到門口」、「把門打開」、「走到流理臺」——每個都是可重用的行為,會持續好幾步然後停下。時序抽象化(temporal abstraction)給智能體同樣的能力:它能承諾執行一段延伸的行動,並在這些「行為塊」的層次上推理,而不是在原始動作的層次上。
這正是階層式強化學習(hierarchical reinforcement learning, HRL)的整個前提:建立一個策略的「階層」,由高層挑選粗略、長壽命的行為,由低層執行細粒度的原始動作。回報非常可觀——信用只需在少數幾個高層決策之間傳遞,而不必穿越數百個微步;探索也能在狀態空間中以有意義的大步跳躍。
巨集動作:抽象化的第一口
時序抽象化最簡單的形式是巨集動作(macro-action):把一串固定、開迴路(open-loop)的原始動作捆成一個可選擇的單位——就像西洋棋的開局定式,或是「前進三步再左轉」的固定流程。高層把整個巨集當成單一決策;環境只負責播放這段預錄的序列。
巨集動作立刻展現出好處——更少的決策、更遠的觸及——但也暴露出極限:它們是「開迴路」的。一段預錄序列無法在執行途中對世界的變化做出反應(有人把你正走向的那扇門關上了)。下一篇會把巨集升級成「選項」(options),它帶著自己的閉迴路(closed-loop)策略,並能自行決定何時停下。
階層從哪裡來?
一個自然的問題:誰來決定有用的子行為是什麼?一個經典答案是去尋找瓶頸狀態(bottleneck states)——所有成功路徑都必須匯流而過的窄通道。在多房間的迷宮裡,門口就是瓶頸:學會「抵達門口」,你就有了一項可重用的技能,能一口氣解鎖任務裡的整片區域。
一个交互式网格世界,智能体在其中学习动作价值;一个门口连接两个房间。
更廣義地說,子目標發現(subgoal discovery)是一門「自動提出中間目標」的技藝——也就是智能體應該學會命中的地標。瓶頸、被頻繁造訪的狀態、以及讓智能體感到意外的狀態,都是常用的訊號。我們會在第三、第五篇深入談發現;現在先記住這幅圖:一個階層需要「零件」(子行為)和一個把它們串起來的「老闆」。
這個學習路線會帶你做什麼
- 第二篇——選項框架(options framework):時序延伸動作精確、閉迴路的定義。
- 第三篇——端到端學習選項:選項內學習(intra-option learning)與選項-評論家(Option-Critic)架構。
- 第四篇——目標條件式與封建式強化學習:用「設定目標」而非「選擇選項」來建立階層。
- 第五篇——無獎勵的技能發現,以及階層式強化學習尚未攻克的前沿。