把技能當成可重用的行為
我們已經看過選項(被命名的技能)與目標(被提出的目的地)。技能發現(skill discovery)提出這個問題最有野心的版本:智能體能不能「在被告知任務之前」就發明出一套有用的行為「曲目」——純粹靠與世界互動?若能如此,之後的高層控制器幾乎可以免費地把這些預製技能組合成階層。
對比三種學習範式的示意圖:監督學習、無監督學習與強化學習。
多樣性就是你需要的一切(DIAYN)
代表性的方法是 Diversity Is All You Need(DIAYN,多樣性就是你需要的一切)。它的洞見簡單得令人愉快:一個「好」的技能,就是「你能從它去到的地方分辨出它與其他技能不同」。所以不給任務獎勵,而是給智能體一個「讓它的各個技能可被區分」的內在獎勵。
DIAYN 的目標:最大化技能編碼 z 與其所訪問狀態之間的互信息,使不同技能易於區分。
- 在每回合開始時抽一個潛在技能編碼 z,並讓策略以它為條件(很像目標條件式強化學習中的目標)。
- 訓練一個「判別器」(discriminator),試著從每個被造訪的狀態猜出是哪個 z 產生的。
- 當判別器猜「對」時就獎勵策略——也就是獎勵每個技能去造訪能唯一辨識它的狀態。最大化這份互資訊(mutual information),會把各技能攤開來覆蓋整個狀態空間。
DIAYN 的偽獎勵:當判別器 q_φ 能從所到狀態 s 自信地辨認出技能編碼 z 時,策略便獲得獎勵。
驚人的是,在完全沒有任務獎勵下,DIAYN 風格的智能體學會了走、跳、跑、翻——光是「要與眾不同」的壓力,就讓不同的移動步態自發浮現。而那些步態,正是階層所渴望的那種可重用基本單元。
從發現的技能到一個運作的階層
發現與控制隨後扣合在一起。凍結學到的技能集合,再訓練一個高層策略去挑選技能(或技能編碼 z)以最大化「真正的」任務獎勵。如今階層是乾淨的兩層:一個知道「怎麼移動」的、被發現的低層,與一個決定「何時部署哪種行為」的、被學到的高層——和封建世界裡同樣的管理者-工人分工,只是工人的技能是無獎勵自舉而來的。
因為這些技能只學一次且與任務無關,同一套曲目能遷移到許多下游任務——探索成本先付清,之後永遠重用。這正是為什麼技能發現常被宣傳為子目標發現瓶頸、以及我們在選項-評論家遇到的選項崩塌問題的直接解方。
前沿:哪些問題仍然真的很難
接下來往哪走
你現在握有階層的兩大家族——「選項」(第二、三篇)與「目標」(第四篇)——再加上餵養兩者的「發現」機制(本篇)。自然的下一步是探索(技能發現其實是偽裝過的有向探索)、遷移與元強化學習(可重用技能在此大放異彩),以及由管理者協調整支隊伍的多智能體情境。