當前位置:
首頁 > 新聞 > Uber開源「神經演化」可視化工具VINE

Uber開源「神經演化」可視化工具VINE

雷鋒網 AI 科技評論按:算力的提升可能會為舊的演算法注入活力。近兩年來,神經演化(Neuroevolution)的方法逐漸再次受到關注,包括OpenAI、DeepMind、Google Brain、Sentient、Uber等全球幾大研究機構近期在這方面都有一些研究,而其中Uber似乎投入了更多的精力。

圖1. Google Trend中「Neuroevolution」的變化

雷鋒網前段時間曾對 Uber 數日連發的 5 篇關於神經演化的文章進行了深度的解讀。這些文章介紹了他們在遺傳演算法(genetic algorithm)、突變方法(mutation)和演化策略(evolution strategies)等神經演化思路方面的研究成果,並通過使用神經演化的方法在深度強化學習的訓練中勝過 SGD 和策略梯度。這項工作宣告了神經演化方法進入了一個新的時代。

基於 Uber 的這些工作,目前有許多研究人員已經開始將目光從 SGD 或策略梯度方法轉移到神經演化。這在某種程度上也促進了對相關工具的需求,特別是在神經演化過程中如何動態、可視地觀察演化過程。為了解決這些問題,Uber 開發了一款用於神經演化的互動式數據可視化工具——Visual Inspector for Neuroevolution(VINE),並於昨日開源。

圖2. VINE可視化

為了介紹 VINE 如何進行可視化,這裡我們需要簡要介紹一下神經演化的基本思路。

神經演化(Neuroevolution)的概念最早於上世紀 80 年代被提出,其基本思路就是借鑒生物的演化過程:突變->選擇->繁衍->突變->……。在機器學習領域,傳統的方法是研究人員根據自己的經驗去設計一個神經網路,然後通過實驗驗證它的效率;而神經演化的思路是,先初始化一群(例如 100 個)略有差異的網路,通過訓練,篩選(也可以合成)出某些符合標準的個體,然後再複製出(例如)100 個副本,對這些副本網路添加一些隨機擾動(類似生物進化中的突變),隨後再訓練和再篩選,如此往複,直至篩選出符合期望的網路為止。

從上面的說明也可以看出,無論是初始化,還是差異的選擇或隨機擾動的定義,或者篩選過程和標準的制定,都可以根據實驗者的需求而定,因此演化的方法多種多樣,例如前面提到有遺傳演算法(GA)、突變方法(M)和演化策略(ES)等。我們以 ES 為例,並選用 Uber 常用的 Mujoco 人形步態任務具體來說明 VINE 如何將神經演化過程可視化。

圖3. 用遺傳演算法(左)和演化策略(右)訓練模擬機器人走路

在傳統的(如 OpenAI 所推廣的)ES 應用中,通常採用一組被稱為偽後代雲(pseudo-offspring cloud,POC)的神經網路,針對這一代的特定目標進行優化。具體來說就是,首先通過隨機擾動單個「父」神經網路的參數來生成 POC 中中每個單獨的神經網路的參數,然後根據目標對每個偽後代神經網路進行訓練和評估。在人形步態任務中,每個偽後代神經網路控制著一個 Mujoco 機器人的運動,基於機器人走路的好壞給每個網路的適應度進行打分(稱之為 fitness)。ES 通過基於這些適應性評分來聚合偽後代的參數(這似乎有點兒像多(雙)親交叉融合一樣),來構建下一個父親。然後循環往複。


VINE的基本使用

若想利用 VINE,就必須將演化過程中每個父親以及所有的偽後代的行為特徵記錄下來。這裡一個行為特徵可以是一個 agent 與環境進行交互時的任何行為指標。例如在 Mujoco 中,我們可以簡單地使用每個 agent 的終點位置 作為其行為特徵,終點位置代表了這個 agent 從原點起所能移動的距離。

有了行為特徵的信息,於是就可以藉助可視化工具將父親和偽後代映射到 2 維平面上。為此,VINE 調用了圖形用戶界面(GUI),其主要組件由兩類相互關聯的圖組成:

一個或多個偽後代雲圖(在一個單獨的 2 維平面上);

一個 fitness 圖

如下圖所示。偽後代雲圖顯示了每代父親和偽後代的行為特徵,而 fitness 圖則顯示了每一代的父親其 fitness 得分曲線如何變化。

圖4. 偽後代雲圖和 fitness 圖示例

除了將偽後代雲以及父親的 fitness 情況可視化外,在 VINE 中用戶還可以與這些圖進行交互,以探索偽後代雲的整體趨勢以及任何一起父親或偽後代在進化過程中的個體行為:

用戶可以選擇可視化父親、最佳表現者、任何一代的偽後代雲,並探索不同 fitness 得分的偽後代雲在二維行為特徵平面上的數量以及空間分布;

用戶還可以在不同代之間進行比較,通過可視化的方法來觀察父親或者偽後代雲在 2 維行為特徵平面上如何移動,以及它們與 fitness 得分曲線之間的關係。如圖 5 所示,甚至可以自動生成移動雲的完整影像剪輯。

點擊雲圖上的任何一點,可以顯示相應偽後代的行為特徵和 fitness 得分。

圖5. 可視化的世代行為演變。 每一代的顏色都會改變;在一代人中,每個偽後代的顏色強度基於該代中適應度得分的百分位數。


用戶自定義

當然 VINE 工具還支持一些高級選項。舉例來說,前面我們說到選擇終點位置 作為行為特徵,如果延伸一點的話,例如我們將每個 agent 從起點到終點分成 1000 個時間步長,並記錄下每個時間節點的位置,那麼我們就可以得出一個行為特徵向量,這個向量記錄了 agent 的軌跡。

當然在這種情況下,行為特徵的維度已經不再是 2 維,這時候就需要降維技術將行為特徵數據的維度降低到 2 維,例如 PCA 技術或者 t-SNE 技術。在 VINE 中,這個過程將自動完成。

當然 GUI 能夠載入多組 2 維行為特徵(通過不同的縮減技術生成),並將它們顯示在同時且連接起來的雲圖中,如圖 6 所示。這個功能為用戶探索不同的行為特徵和維度縮減方法提供了一種便捷的方式。

圖6. 可視化多個2D BC和一個高維BC以及一個健身情節。

此外,用戶還可以通過定製功能來擴展基本的可視化。在圖 6 中就暫時了一個自定義的雲圖,在這個雲圖中可以顯示某些類型特定領域的高維行為特徵(例如 agent 的完整軌跡)以及相應的縮減 2 維行為特徵。圖 7 是另外一個自定義雲圖的例子,這個圖中允許用戶回放 agent 在與環境進行互動式產生的確定性/隨機性行為。

圖7. VINE允許用戶查看任何agent產生的確定性/隨機性行為的視頻。

當然啦,如前面所說,VINE 並不僅僅只使用於 Mujoco 任務或者 ES 演算法當中。

圖 8 展示的是將 VINE 應用於 Atar 2600 遊戲中的一個經典遊戲 Frostbite,其中的行為特徵為終態模擬器 RAM 狀態(遊戲中能夠捕獲所有狀態變數的長度為 128 的整數值向量),並應用 PCA 技術將行為特徵映射到 2 維平面上。

圖8. 可視化agent學習Frostbite

從這個圖中,我們可以觀察到隨著演化的推進,偽後代雲在逐漸向左移動並出現聚集。通過查看這些 agent 玩這個遊戲的視頻,我們可以推斷其實每個集群都對應一個語義上有意義的不同的結束狀態。

此外,VINE 還可以與其他神經演化演算法(例如前面提到的遺傳演算法等)進行無縫的協作。事實上,這個工具獨立於任何特定的神經演化演算法,用戶所需要做的只是稍微修改一下他的神經演化代碼保存它想要了解的行為特徵。

開源地址:https://github.com/uber-common/deep-neuroevolution/tree/master/visual_inspector

via Uber Engineering Blog,雷鋒網AI 科技評論編譯。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

進化策略入門:最優化問題的另一種視角
這家以色列公司可解鎖任何蘋果手機,包括 iPhoneX!

TAG:雷鋒網 |