[譯] VINE:一種開源的神經進化(Neuroevolution)交互式數據可視化工具

VINE:一種開源的神經進化(Neuroevolution)交互式數據可視化工具

在 Uber 的規模上,機器學習的進步能夠顯著加強爲更安全和更可靠的交通解決方案提供動力的技術。Uber AI 實驗室最近宣佈的一項進展是深度神經進化,其中進化算法(如進化策略(ES)和遺傳算法(GA))幫助訓練深層神經網絡來解決困難的強化學習(RL)問題。最近,人們對深度神經進化的興趣愈來愈大,其主要貢獻來自於 OpenAIDeepMindGoogle BrainSentient 。這反過來又形成了解決該領域的研究人員對工具的需求的問題。html

特別是在神經進化和神經網絡優化中,每每很難觀察到學習過程的基本動態。爲了彌補這一差距並開放觀察過程,咱們引入視覺神經進化檢查器(VINE),一個開源的交互式數據可視化工具,旨在幫助那些對神經進化感興趣的人更好地理解和探索這一系列算法。咱們但願這項技術能夠在將來激發神經進化的創新和應用。前端

VINE 能夠高亮 ES- 和 GA- 風格的方法。本文中,咱們將把 ES 應用於 Mujoco 仿人運動任務的結果可視化爲咱們的示例。android

在傳統的 ES 應用(如 OpenAI 推廣)中,一組稱爲僞後代雲的神經網絡針對幾代人的目標進行優化。雲中每一個個體神經網絡的參數經過隨機擾動單個「父」神經網絡的參數生成。而後根據目標對每一個僞後代神經網絡進行評估:在仿人學習任務中,每一個僞後代神經網絡控制機器人的運動,並根據機器人的行走能力得到一個分數,稱爲適應度。ES 基於這些適應度評分來聚合僞後代的參數來構造下一個父級(這幾乎就像一種複雜的多親交叉形式,也令人想起隨機有限差分)。而後循環重複。ios

圖 1:模擬機器人訓練走遺傳算法(左)和進化策略(右)。git

使用 VINE

爲了利用 VINE,在評估期間會記錄每一個雙親和全部假後代的行爲特徵(BC)。在這裏,BC 能夠是代理在與其環境交互時行爲的任何指標。例如,在 Mujoco 中,咱們簡單地使用代理的最終位置{x,y}做爲 BC,所以它表示代理從原點移到了什麼位置。github

可視化工具根據它們的 BC 將雙親和僞後代映射到 2D 平面上。爲此,它調用圖形用戶界面(GUI),其主要組件由兩種相互關聯的圖形組成:一個或多個僞子代雲圖(在不一樣的 2D 平面上)和一個適應度圖。如圖 2 所示,下面的僞後代雲圖顯示了每一代在雲中的雙親和僞後代的 BC,而適應圖做爲世代進步的一個關鍵指標則顯示了雙親的適應度得分曲線。算法

圖 2:僞子代雲圖和適合度圖的事例。後端

而後用戶和這些圖交互,探索僞後代雲的整體趨勢以及任何雙親或僞後代在進化過程當中的個體行爲:(1)用戶能夠可視化任何一代的雙親,表現最好的和(或)整個僞後代雲,並探索具備不一樣適應度的僞後代在 2D BC 平面上的數量和空間分佈;(2)用戶能夠在世代間進行比較,瀏覽數代,以可視化父母和(或)僞後代雲是如何在 2D BC 平面上移動的,以及這些移動與適應度評分曲線的關係(如圖 3 所示,移動雲的完整電影片斷能夠自動生成);(3)點擊雲圖上的任意一點,就會顯示相應的僞後代的行爲信息和適應度分數。安全

圖 3:可視化的世代行爲演變過程。每一代顏色都會發生改變。在一代人的時間裏,每個僞後代顏色強度都是根據其在這一代人中的適應度分數的百分位數來計算的(合計爲五個分箱)。網絡

附加用例

該工具還支持默認功能以外的高級選項和自定義可視化。例如,做爲最終單點{x,y}的替換,BC 能夠替換爲每一個代理的完整軌跡(例如,用 1000 個時間點步驟鏈接的{x,y}) 代替單個最後{x,y}點。在這種狀況下,當 BC 的維數超過 2 時,須要使用維數簡約技術(如 PCA 或者 t-SNE)將 BC 數據降維到 2D。咱們的工具會自動化這些過程。

GUI 可以加載多組 2D BC(可能經過不一樣的縮減技術生成),並將它們顯示在同時鏈接的雲圖中,如圖 4 所示。此功能爲用戶探索不一樣的 BC 選擇和降維方法提供了一種便捷方式。此外,用戶還能夠經過定製功能擴展基礎的可視化。圖 4 展現了一個這樣的自定義雲圖,能夠顯示某些類型的特定領域的高維 BC(在這種狀況下,代理的完整軌跡)以及相應的減小的 2D BC。圖 5 中定製雲圖的另外一個例子容許用戶在與環境交互時重放代理的肯定性和隨機行爲。

圖 4:多個 2D BC 和一個高維 BC 的可視化以及一個適應度圖。

圖 5:VINE 容許用戶查看任何代理的肯定性和隨機行爲的視頻。

該工具還設計用於處理移動任務之外的域。下圖 6 演示了一個雲圖,它可視化了訓練代理來玩 Frostbit 遊戲,這是 Atari 2600 遊戲之一,咱們使用最後的模擬器 RAM 狀態(長度爲 128 的整數值向量,捕捉遊戲中的全部狀態變量)做爲 BC,並應用 PCA 將 BC 映射到 2D 平面上。

圖 6:可視化代理學習來演示 Frostbite。

從圖中,咱們能夠觀察到,隨着進化的發展,僞後代雲向左邊移動,並向那裏的星雲移動。可以看到每一個玩遊戲的代理的相應視頻,咱們能夠推斷每一個集羣對應於語義上有意義不一樣的結束狀態。

VINE 還能夠與其餘神經進化算法(如 GA)無縫協做,這些算法能使後代繁衍數代。事實上,該工具獨立於任何特定的神經進化算法。用戶只須要稍微修改他們的神經進化代碼,就能夠保存他們針對特定問題選擇的 BC。在代碼發行版中,咱們提供了對 ES 和 GA 實現了此類修改以做示例。

下一步

因爲進化方法是在一組點上操做,因此爲新型可視化提供了機會。在實現了提供可視化功能的工具後,咱們發現它頗有用而且想在機器學習社區進行分享,讓你們一塊兒受益。隨着神經進化擴展到具備數百萬或更多鏈接的神經網絡,經過 VINE 等工具得到更多的洞察力對加深進步愈來愈有價值,也愈來愈重要。

能夠在此連接找到 VINE。它是輕量級的,可移值的,並且是用 Python 實現的。

致謝: 咱們感謝 Uber AI 實驗室,尤爲是 Joel Lehman、Xingwen Zhang、Felipe Petroski Such 和 Vashisht Madhavan 爲咱們提供了寶貴的建議和有益的討論。

圖 1,左圖來源:例如Felipe Petroski。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索