周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

你是不是也曾經不止一次地幻想過,自己擁有這樣一種超能力:邊做夢邊學習,醒來之後的自己,已經變成另外一個“我”了:知識滿分,技能滿格;兵來將擋,水來土掩;一夫當關,萬夫莫開;萬事俱備,所向披靡······

就像電影

《武狀元蘇乞兒》

中所展現的那樣,周星馳在夢中得到老乞丐心法傳授,學會了

睡夢羅漢拳

。他只是睡了一覺,醒來之後就已經身懷絕技,武功天下第一了。

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

一邊休息,一邊學習,各得其所,兩不耽誤,天底下怎麼會有這麼好的事?

你別說,在這個世界上,還真有。

以下內容轉載自微信公眾號“量子位” (ID: QbitAI)

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

邊睡邊學習

,可能不少同學都YY過……真正做到能有幾人?

沒想到,現在AI已經學會了。

剛剛,兩位人工智慧界的大牛:Google Brain團隊的

David Ha

(從高盛董事總經理任上轉投AI研究),瑞士AI實驗室的

Jürgen Schmidhube

r(被譽為LSTM之父),共同釋出了最新的研究成果:

World Models(世界模型)。

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

簡而言之,他們教會了AI在夢裡“修煉”。

AI智慧體不僅僅能在它自己幻想出來的夢境中學習,還能把學到的技能用到實際應用中。

一眾人工智慧界同仁紛紛發來賀電。

還有人說他們倆搞的是

現實版《盜夢空間》

,並且P了一張電影海報圖:把Ha和Schmidhuber頭像換了上去……

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

這種神奇能力是怎麼回事?

我們結合兩位大牛的論文,嘗試解釋一下。

01

在夢裡開車

在夢境中學,在現實中用,可以說是

高階技能

了,我們先看一個比較基礎的:

在現實裡學,到夢境中用。

David Ha和Schmidhuber讓一個AI在真正的模擬環境中學會了開車,然後,把它放到了“夢境”裡,我們來看看這個學習過程:

先在真實的模擬環境中學開車:

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

當然,上圖是

人類視角

。在這個學習過程中,AI所看到的世界是這樣的:

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

把訓練好的AI智慧體放到AI的夢境中,它還是一樣在開車:

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

這個夢境是怎麼來的?要講清楚這個問題,我們還得先簡單介紹一下這項研究的方法。他們所構建的

智慧體

分為

三部分

,觀察周圍世界的

視覺模型

、預測未來狀態的

記憶模型

和負責行動的

控制器

負責做夢的主要力量,就是其中的記憶模型。他們所用的記憶模型是

MDN-RNN

,正這個

神經網路

,讓Google Brain的SketchRNN,能預測出你還沒畫完的簡筆畫究竟是一隻貓還是一朵花。

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

在開車過程中,記憶模型負責“幻想”出自己在開車的場景,根據當前狀態生成出下一時間的

機率分佈

,也就是環境的下一個狀態,視覺模型負責將這個狀態

解碼成

影象

。他們結合在一起生成的,就是我們開頭所說的“世界模型”。

然後,模型中的控制器就可以在記憶模型生成出來的虛假環境中開車了。

02

在夢裡學打Doom

做夢開車很簡單,但兩位大牛的研究顯然不止於此。既然AI幻想出來的環境很接近真實,那理論上講,他們這項研究的終極目的也是可以實現的:讓AI做著夢學技能,再用到現實中。

這一次,他們用了

VizDoom

,一個專門供AI練習打Doom的平臺。

“做夢”的主力,又是我們前面提到過的記憶模型。和賽車稍有不同的是,它現在不僅需要預測

環境的

下一狀態

,為了讓這個虛擬環境儘量真實,同時還要預測

AI智慧體的下一狀

是死是活。

這樣,強化學習訓練所需的資訊就齊全了,夢境中的訓練,GO!

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

夢境

重現

了真實環境中的

必要元素

,和真正的VizDoom有著一樣的遊戲邏輯、物理規則和(比較模糊的)3D圖形,也和真實環境一樣有會扔火球的怪物,AI智慧體要學著躲避這些火球。

更cool的是,這個夢境可以增加一些

不確定因素

,比如說讓火球飛得更沒有規律。這樣,夢中游戲就比真實環境更難。

在夢境中訓練之後,AI就可以去真正的VizDoom中一試身手了:

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

AI在VizDoom中的表現相當不錯,在連續100次測試中跑過了

1100幀

,比150幀的基準得分高出不少。

真是666啊……

03

怎麼做到的?

他們所用的方法,簡單來說就是

RNN和控制器的結合

這項研究把智慧體分為兩類模型:

大型的世界模型

小型的控制器模型

,用這種方式來訓練一個大型神經網路來解決強化學習問題。

具體來說,他們先訓練一個

大型的神經網路

無監督方式

來學習智慧體所在

世界的模型

,然後訓練一個

小型控制器

使用這個

世界模型

來學習如何解決任務。

這樣,控制器的訓練演算法只需要在很小的

搜尋空間

中專注於

信任度分配

問題,而大型的世界模型又保障了整個智慧體的

能力和表達性

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

這裡的世界模型包括兩部分,一個

視覺模型

,用來將觀察到的

高維資訊

編碼成

低維隱藏向量

;一個是

記憶RNN

,用來借

歷史編碼

預測未來狀態。

控制器

藉助V和M的表徵來選擇

好的行動

在我們上面講到的開車、打Doom實驗中,視覺模型V用了一個VAE,變分自編碼器;記憶模型M用的是MDN-RNN,和谷歌大腦讓你畫簡筆畫的SketchRNN一樣;控制器C是一個簡單的

單層線性模型

把這三個模型組裝在一起,就形成了這項研究中智慧體從感知到決策的整個流程:

周星馳的睡夢羅漢拳,AI的且夢且學習:夢夢不忘,必有迴響

視覺模型V負責處理每個時間步上對環境的

原始觀察資訊

,然後將這些資訊編碼成

隱藏向量

zt,和記憶模型M在同一時間步上的

隱藏狀態

ht串聯起來,輸入到控制器C,然後C輸出

行為向量

at。

然後,M根據當前的zt和at,來

更新

自己的

隱藏狀態

,生成下一步的ht+1。

04

這有什麼用?

讓AI會“做夢”,還能在“夢境”中學習,其實有很多

實際用途

比如說在教AI打遊戲的時候,如果直接在實際環境裡訓練,就要浪費很多

計算資源

來處理每一幀影象中的遊戲狀態,或者計算那些和遊戲並沒有太大關係的

物理規則

。用這個“做夢”的方式,就可以在

AI自己抽象並預測出來的環境中

,不消耗那麼多計算資源,一遍又一遍地訓練它。

在這項研究中,他們還藉助了

神經科學

的成果,主要感知

神經元

最初處於

抑制狀態

,在接收到

獎勵

之後才會

釋放

,也就是說神經網路主要學習的是任務相關的特徵。

將來,他們還打算給VAE加上

非監督分割層

,來提取更有用、可解釋性更好的特徵表示。

05

相關連結

論文:https://worldmodels。github。io/