摘要:
但是,這種演算法思路有著明顯的短板:許多成功案例都要透過精心設計、資訊量大的獎勵機制才能實現,當遇到很少給予反饋的複雜環境時,強化學習演算法就很容易碰壁。因此,過往的 AI 難以解決探索困難(hard-exploration)的問題,這類問題通常伴隨著獎勵稀疏(sparse)且會有欺騙性(deceptive)的獎勵存在。
今天,一項發表在《自然》(Nature)雜誌的研究提出了一類全新的增強學習演算法,該演算法在雅達利(Atari 2600)經典遊戲中的得分超過了人類頂級玩家和以往的 AI 系統,在《蒙特祖馬的復仇》(Montezuma’s Revenge)和《陷阱》(Pitfall!)等一系列探索類遊戲中達到了目前最先進的水平。
論文的主要作者來分別來自 OpenAI 和 Uber AI Labs,他們將這類演算法統稱為 Go-Explore,該類演算法改善了對複雜環境的探索方式,或是 AI 向真正智慧學習體進化邁出的重要一步。
有兩個主要問題阻礙了以前演算法的探索能力。
第一是 “分離”(detachment),演算法過早地停止返回狀態空間的某些區域,儘管有證據表明這些區域仍是有希望的。當有多個區域需要探索時,分離尤其可能發生,因為智慧體可能會部分探索一個區域,切換到第二個區域,並且忘記如何訪問第一個區域。
第二個是 “脫軌”(derailment),演算法的探索機制阻止智慧體返回到以前訪問過的狀態,直接阻止探索或迫使將探索機制最小化,從而不會發生有效的探索。
舉個例子,當智慧體處在兩個迷宮入口之間,它先從左邊的迷宮開始隨機搜尋,由於 IM 演算法要求智慧體隨機嘗試新行為以找到更多的內在獎勵的機制,在搜尋完左邊迷宮的 50% 時,智慧體可能會在任意時刻開始對右邊的迷宮進行搜尋。
但是,深度學習自身有著 “災難性遺忘”(Catastrophic Forgetting)的問題,這指的是利用神經網路學習一個新任務的時候,需要更新網路中的引數,但是上一個任務提取出來的知識也是儲存在這些引數上的,於是每當學習新的任務時,智慧體就會把學習舊任務得到的知識給遺忘掉,而不能像人類那樣在學習中可以利用先前學習過的經驗和知識,快速地進行相似技能的學習。
所以,在完成右邊的搜尋後,智慧體並不記得在左邊迷宮中探索的事情,更糟糕的情況是,左邊迷宮前期的一部分割槽域已經被探索過了,因而幾乎沒有可獲得的內在獎勵去刺激智慧體深入探索。研究人員將這種狀況總結為:演算法從提供內在動機的狀態範圍分離開了。當智慧體認為已經訪問過這些區域了,深入探索行為可能就會停滯,因而錯過那些仍未探索到的大片區域。
為了避免分離,Go-Explore 建立了一個智慧體在環境中訪問過的不同狀態的 “檔案”,從而確保狀態不會被遺忘。
《人工智慧大勢》點評:
終於,有人開竅了,發現了人工智慧真正的問題所在……
先來簡單解釋下這個研究成果究竟做了什麼,記得30多年前我剛開始接觸電腦的時候,就看到過一個機器人走迷宮的程式,當時覺得很神奇,但其實那個程式很簡單,其原理就是把所有的路徑都走一遍,直到找出正確路徑,計算機專業的術語就叫“遍歷”。
遍歷這種方法雖然有效,但在很多情況下卻是不適用的,比如當需要搜尋的空間非常大時,就好像探索圍棋下一步的可能走法,就不可能採用這種方法,因為可能的走法是天文數字。而走法相對較少的象棋就可以採用遍歷的方法,比如戰勝國際象棋冠軍卡斯帕羅夫的IBM深藍計算機就是採用的這一方法。
當不能使用遍歷的時候,就需要在對一些區域進行了一定探索後,根據一定的原則或隨機放棄某些區域的完全探索,轉而去探索其它區域,專業的術語叫“剪枝”演算法,即將搜尋樹的某些分枝給剪掉,不再對其進行搜尋。就像我們人找東西一樣,開啟一個抽屜大致翻一翻,感覺不會在這裡,於是關上這個抽屜,又去另一個抽屜中找……。這的確也是很不錯的方法,它幫助AlphaGo在圍棋上打敗了人類。
但是,你也一定有過這種經歷,當把所有可能的地方都找過後還是沒有找到,你很可能會回過頭去,把之前沒有仔細找過的地方再找一遍,有時甚至還會找上三、四遍。這篇論文的研究就是模仿我們人類的這種行為,而以前的演算法都不能做到這一點,一個分枝剪掉了,就不會再去搜索,如文中上圖所示:
圖1:需要搜尋的左、右兩個區域,從中間開始搜尋,綠色表示未搜尋的區域;
圖2:先搜尋左邊區域,紫色為正在搜尋的區域;
圖3:左邊搜尋到一半時,放棄後邊的區域,掉頭去搜索右邊,白色為搜尋過的區域;
圖4:右邊搜尋後完,回過來準備再搜尋左邊,發現左邊已經搜尋過了,於是停止搜尋,導致左邊沒有搜尋完全。
之所以被世界頂級科學期刊《Nature》作為重磅,就在於這一研究成果“或是 AI 向真正智慧學習體進化邁出的重要一步”。我們一直強調現在的人工智慧還不夠智慧的最主要原因,就在於它們沒有認知能力,由於深度學習災難性遺忘的本質缺陷,導致其無法將學習到的東西作為知識儲存起來,以便以後使用。而這一研究成果就是讓強化學習,也是深度學習的一種,用文件把學習到的東西儲存起來,讓我們似乎看到了解決機器認知能力的希望,也就等於看到了達到真正人類智慧的希望。
可能也有懂編寫程式的朋友說,不就是把一個區域還沒有搜尋完這件事用文件記錄下來,以便以後還可以再搜尋嗎?這好像沒有什麼了不起呀,《Nature》是不是有點小題大做呀?我很同意這種說法,確實有點小題大做。其原因就在於深度學習的災難性遺忘,導致其要做到這麼簡單的事情是很難的。這就好像你用一把鈍刀切菜很難切得好,於是你刻苦練習,費了九牛二虎之力,你終於能用鈍刀把菜切好了,而其他人都做不到,於是大家紛紛稱讚你了不起。
但其實,你完全可以換一把刀,一把鋒利的刀,不用費勁去做那無用功。具體到這個研究,就是想把“重新搜尋未搜完區域”這一能力融入到強化學習的獎勵機制中去,實在有些勉為其難。更重要的是,如果要做更困難的事,這把鈍刀還是沒有辦法做好。這個研究目前看來可以做到此類簡單的事情,在一些簡單遊戲上取得不錯的成績,也可以說是邁出了重要的一步,啟示我們需要將學習獲得的知識儲存記憶,但是看文章所述,要真正讓機器具有認知能力,可以將五花八門、完全不同的知識記憶住,且能靈活應用,實現類人的通用人工智慧,在深度學習的侷限下恐怕仍然是一個不可能完成的任務。
是的,人工智慧到了需要換掉深度學習這把鈍刀的時候了,業界需要去找一把更鋒利的刀,從而能舉重若輕地真正做到知識儲存和認知智慧。