從玩遊戲的AI中研究好奇心?(上)

新年放假偷懶了兩周,這周說什麼也要回來啦!

本期文章:Curiosity-driven Exploration by Self-supervised Prediction

ICML 2017年的新文章,在新聞中還很火了一小下。

這篇文章本想仔細看一下他們的程序和演算法,然而力有未逮,所以暫且分為上下集,上集先講一講他們的研究思路,下集再做具體的技術細節講解。

人為什麼會好奇?

當我們在談論「為什麼」的時候,其實有兩個解釋的方向:

  • 這樣做有什麼好處?即對應到亞里士多德所說的「目的因」。

大部分人在談論好奇心時也是這個思路:你說探求宇宙如何運轉什麼的,本來是多麼累腦子的事兒,於生活實際也毫無幫助,可人怎麼能樂此不疲呢?難以解釋此事,很多人便把好奇心歸為一種人格特質,開始問「為什麼有人比其他人更好奇?」

但實則也不必把此事人格化。即使是一個對事事都不好奇的人,總還是偶爾會對某些事多問一句;即使是天生好奇的小寶寶,也不會一直喜歡同一個玩具。什麼情況下好奇心更盛,這些時候的好奇對人有什麼好處?這是更容易研究的問題。

  • 好奇心產生的機制是什麼樣的?可以大致對應到「物質因」和「動力因」。

大部分人如果試圖解釋某個心理活動的機制,往往會直接跳到物質基礎——大腦是怎麼搞的?哪個神經遞質分泌了,哪個腦區亮了?

但實際上還有很重要的一個層次是演算法。如果好奇心是驅動某一個生理變化的信號,那麼這個信號本身又是怎麼來的?從信息傳遞的角度,什麼樣的上游信息會推導出「啊,你應該此時好奇心大盛了「?如果想製造一個機器人,和人進行同樣的生活,那麼該如何教這個機器人適時表示出好奇呢?

回到本篇文章。作者只是用「好奇」來啟發和命名這種AI的演算法,目的更在於得到玩遊戲玩得更好的AI,並不真的試圖回答對人為何好奇。但作者也試圖暗示他們可以對這個問題有所幫助,簡而言之,他們的回答是:

  • 好奇心有什麼好處?——即使在沒有外界指導反饋的情況下,仍能憑藉自己的探索學到相當不錯的東西,最終獲得正反饋,並且可以更好地處理類似的新場景。
  • 好奇心的演算法機制是什麼?——自己的預測與實際情況相差越懸殊,越應該感到好奇。

好奇是如何讓AI學會玩超級瑪麗的

AI在玩超級馬里奧

AI在玩VizDoom,一個第一人稱迷宮探險的遊戲

準確說這篇文章訓練了兩個AI,分別去玩超級馬里奧和VizDoom。基本的方法還是強化學習。

一般來說,訓練AI玩遊戲的方法都是靠reward。每時每刻所處的狀態s都有對應的獎賞r作為一種反饋,而學習者則需通過學習最佳的策略a來最大化獎賞。

本文作者偏偏說,我們不需要獎賞!

除了不需要,也是不容易有。馬里奧遊戲中,如果沒有那些小蘑菇和金幣的加分,唯一的reward只是是救到公主,那可就難了。現實生活中這個問題更巨大。想想那些前途很美好,路上卻總容易動力缺乏的事情吧:學業、發paper、找對象……

所以這篇文章甚至不把超級馬里奧的死亡設置成懲罰(負獎賞)。死亡的唯一後果只是:看不到新東西。而看不到新東西卻是極為嚴重的懲罰,因為,無法提供作者定義的「好奇心」了。

演算法結構示意圖。好奇心的計算ICM(Intrinsic Curiosity Module)是本文核心

下面仔細解說這篇文章中如何定義學習過程。

左半部分就是一個典型的強化學習,s代表state,a代表action,r代表reward,其中 r^e 是external reward, r^i 是internal reward——這個內部獎賞就是好奇心的快樂。

右半部分具體解釋了 r^i 的計算,也就是「好奇心」的演算法機制。從最上面看到一個 hat{phi}(s_{t+1})-phi(s_{t+1}) 的差分計算,對應於對下一時刻world state的「預測錯誤」——即預測錯誤越大,內部獎賞越大。為什麼要獎勵錯誤?如果你做題總做那些你能做對的,固然成績好,但也無法從錯誤中學到新東西。

具體來說:

eta >0即代表鼓勵犯錯,$eta$ 越大,鼓勵越起勁兒。

當然,我們不願鼓勵Forward Model(預測模型)隨便亂猜,永遠猜不中,所以還需要考慮預測準確性的目標函數(Loss function):

最後,您要問了,為什麼不直接取具體state的預測誤差,而是要包裹一層特徵函數$phi$呢?這就需要考慮一項AI眼中的世界了:並非是一條路、一個管道、一個蘑菇,而是一堆RBG像素點。需要學習這個世界有用的特徵,而有用即可定義為:

其中 hat{a}_t 是Inverse Model所推測的行為,然後和實際行為 a_t 相對比。

總結而言,

其中 0leqetaleq1

來,談談哲學

讓我們從演算法的數學海洋中暫停一下,扯兩句。這篇文章不聲不響地為人生提供了很多哲學啟發:

  • 死是什麼?死本身不可怕,可怕的是死後你無法繼續向前探索,見識到新的東西。所以當我們說,有的人活著他已經死了……嗯。
  • 錯誤是什麼?錯誤不是對既往的否定,而是對未來方向的明晰。越大錯,越值得再復盤迴看,調整自己的模型。
  • 世間信息紛繁,什麼是重要的?凡是你的行動能有所影響和改變的,便是重要特徵。

結論

  • 根據這個演算法學習的AI的確會出現主動探索的行為。下圖表現了在同一個vizdoom地形中好奇的(綠色)機器人會比隨機遊走的機器人探索更多的房間。符合我們直覺上對「好奇寶寶」的行為定義。

  • 由好奇驅動的AI相比baseline(A3C)的確有更好的遊戲表現,尤其是在reward稀少的時候(不稀奇)。

尤其是泛化到沒見過的場景(不同地圖),之前學過其它地圖的AI相比從零開始的同等演算法表現更好。更快的泛化,似的確是生活中常見的好奇心的正面作用。

研究範式評價:優點與局限

  • 這些結論對實證研究,有多大用處?

可以啟發我們設計新的研究範式,探索把這些演算法假設推廣到實驗被試身上。需要直接測量internal prediction(forward model)或intrinsic reward嗎?

  • 除了這倆遊戲,可以推廣到其它學習場景嗎?

這倆遊戲的一個巨大簡化是:action有限,只有前後左右四個行走方向(超級馬里奧則是前後上下)。當action space加大,這個演算法還會有效嗎?

下篇預告

對比其它的AI演算法。這並不是對好奇的唯一演算法定義。

親自看看他們的代碼結構,對這樣的project有多旁大建立些概念。


推薦閱讀:

Frequentist vs Bayesian 1 之 為什麼心理學可以是科學:p<0.005?
當我們相信不該相信的事情時,我們在相信什麼?
問題生成 (Question generation):AI與認知科學
什麼是一流的科學研究?--千禧年的諾貝爾獎,神經科學大師坎德爾
食色性也之1:食 --- 味覺

TAG:人工智能 | 认知科学 |