JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

無獎勵地發現技能——以及尚未攻克的前沿

階層最難的部分是「找到零件」。看看智能體如何在完全沒有任務獎勵下發現多樣的技能、這些技能如何餵給階層,以及哪些問題仍然真正未解。

把技能當成可重用的行為

我們已經看過選項(被命名的技能)與目標(被提出的目的地)。技能發現(skill discovery)提出這個問題最有野心的版本:智能體能不能「在被告知任務之前」就發明出一套有用的行為「曲目」——純粹靠與世界互動?若能如此,之後的高層控制器幾乎可以免費地把這些預製技能組合成階層。

技能發現是強化學習版的無監督學習:智能體在沒有任務獎勵的情況下學會如何行動,正如無監督方法在沒有標籤的情況下發現結構。

對比三種學習範式的示意圖:監督學習、無監督學習與強化學習。

多樣性就是你需要的一切(DIAYN)

代表性的方法是 Diversity Is All You Need(DIAYN,多樣性就是你需要的一切)。它的洞見簡單得令人愉快:一個「好」的技能,就是「你能從它去到的地方分辨出它與其他技能不同」。所以不給任務獎勵,而是給智能體一個「讓它的各個技能可被區分」的內在獎勵。

\mathcal{I}(S;Z) = \mathcal{H}(Z) - \mathcal{H}(Z\mid S)

DIAYN 的目標:最大化技能編碼 z 與其所訪問狀態之間的互信息,使不同技能易於區分。

  1. 在每回合開始時抽一個潛在技能編碼 z,並讓策略以它為條件(很像目標條件式強化學習中的目標)。
  2. 訓練一個「判別器」(discriminator),試著從每個被造訪的狀態猜出是哪個 z 產生的。
  3. 當判別器猜「對」時就獎勵策略——也就是獎勵每個技能去造訪能唯一辨識它的狀態。最大化這份互資訊(mutual information),會把各技能攤開來覆蓋整個狀態空間。
r_z(s) = \log q_\phi(z \mid s) - \log p(z)

DIAYN 的偽獎勵:當判別器 q_φ 能從所到狀態 s 自信地辨認出技能編碼 z 時,策略便獲得獎勵。

驚人的是,在完全沒有任務獎勵下,DIAYN 風格的智能體學會了走、跳、跑、翻——光是「要與眾不同」的壓力,就讓不同的移動步態自發浮現。而那些步態,正是階層所渴望的那種可重用基本單元。

從發現的技能到一個運作的階層

發現與控制隨後扣合在一起。凍結學到的技能集合,再訓練一個高層策略去挑選技能(或技能編碼 z)以最大化「真正的」任務獎勵。如今階層是乾淨的兩層:一個知道「怎麼移動」的、被發現的低層,與一個決定「何時部署哪種行為」的、被學到的高層——和封建世界裡同樣的管理者-工人分工,只是工人的技能是無獎勵自舉而來的。

因為這些技能只學一次且與任務無關,同一套曲目能遷移到許多下游任務——探索成本先付清,之後永遠重用。這正是為什麼技能發現常被宣傳為子目標發現瓶頸、以及我們在選項-評論家遇到的選項崩塌問題的直接解方。

前沿:哪些問題仍然真的很難

  1. 有用 vs. 只是多樣。多樣性目標獎勵「與眾不同」,而非「有用」。技能可能散去覆蓋一些無關緊要的狀態維度,卻錯過真實任務所需的行為——讓「發現」對齊「下游價值」仍是開放問題。
  2. 比兩層更深。實務上幾乎一切都只有兩層。穩定地學習三層或更多層的時序抽象,大致上仍未解決。
  3. 層與層之間的非平穩性。當工人還在改變時,管理者瞄準的是一個移動的標靶;要讓兩層穩定地共同適應,相當棘手。
  4. 階層到底何時才有幫助?在許多基準上,一個調得好的扁平智能體就能追平階層式的。刻畫出「哪些」問題真正需要階層,仍是熱烈爭論中的議題。

接下來往哪走

你現在握有階層的兩大家族——「選項」(第二、三篇)與「目標」(第四篇)——再加上餵養兩者的「發現」機制(本篇)。自然的下一步是探索(技能發現其實是偽裝過的有向探索)、遷移與元強化學習(可重用技能在此大放異彩),以及由管理者協調整支隊伍的多智能體情境。