編者按:笛卡爾遺傳規(guī)劃(Cartesian Genetic Programming)在圖像處理任務(wù)中已經(jīng)發(fā)揮了不小的作用,這一方法同樣可以應(yīng)用到雅達利游戲中。說起雅達利游戲,我們首先會想到深度學(xué)習(xí)在其中做過的努力,但是本項目的研究人員們卻用另一種有效的方法——演化算法,控制雅達利游戲的進行,結(jié)果顯示,演化算法的性能并不比深度學(xué)習(xí)差。以下是論智帶來的編譯。
隨著神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)技術(shù)的發(fā)展,計算機科學(xué)領(lǐng)域幾乎被這些新技術(shù)占據(jù)。特別是神經(jīng)網(wǎng)絡(luò),已經(jīng)在某些任務(wù)上達到甚至超過了人類水平,例如目標和人臉識別、棋類游戲和多種街機游戲比賽。
這些網(wǎng)絡(luò)都是根據(jù)人類大腦的工作原理建立的,因為人類大腦能產(chǎn)生最多的可能性,對嗎?
答案不盡然?,F(xiàn)在有一種全新的計算方式能比神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)擁有更強大的計算力。這行技術(shù)是基于人腦形成的過程——演化。換句話說,一些列迭代變化和選擇生成了最復(fù)雜的機器——人類。演化的力量可以看成是奇跡。
自從30年前第一次應(yīng)用于對生產(chǎn)線的優(yōu)化后,進化計算就取得了令人矚目的成果。但是最近幾年,由于深度學(xué)習(xí)的發(fā)展和它取得的巨大成功,進化計算淡出了人們的視線。
今天,來自法國圖盧茲大學(xué)的研究人員Dennis Wilson等人的一項研究讓人們注意到了演化計算能達到和深度學(xué)習(xí)機器同樣的性能。在街機游戲,例如雅達利游戲中的《乓》、《打磚塊》、《太空侵略者》中表現(xiàn)出了超越人類的水平。這項工作表明,人們在重視深度學(xué)習(xí)方法的同時,也要給予演化算法相當(dāng)?shù)年P(guān)注。
深度學(xué)習(xí) VS 演化計算
演化計算和神經(jīng)網(wǎng)絡(luò)完全不同,它的目標是創(chuàng)建能用反直覺式的方法解決特殊問題的代碼。通常代碼創(chuàng)建的一般方法是有了特定目標后按第一原理開始書寫。
而演化計算用的是另一種方法,它完全是隨機生成代碼,并且不只有一個版本,而是多個版本,有的時候甚至由成百上千個片段隨機拼湊起來形成代碼。
但是很多情況下,這些代碼片段的效果并不是很好。接著它們會再次重新生成,其中會加入更多的代碼片段。然而,第二次訓(xùn)練和第一次的代碼不會完全相同,一定有某些改動。這些改變可能會導(dǎo)致某種計算點突變。
之后生成的新代碼會經(jīng)過測試,看它們表現(xiàn)的如何。表現(xiàn)最好的代碼會優(yōu)先進入下一批代碼生成,以此類推。
這一過程就是代碼演化的過程。隨著時間的推移,代碼表現(xiàn)得越來越好,多次迭代后,如果條件合適,它的表現(xiàn)會比人類設(shè)計的代碼更好。
計算機科學(xué)家們已經(jīng)成功地將演化計算應(yīng)用到很多問題上,包括機器人設(shè)計和建造航天器部件。
但是,深度學(xué)習(xí)的巨大成功讓演化計算“失寵”了。所以,一個很重要的問題是,演化計算能夠達到和深度學(xué)習(xí)同樣的水平。為了弄清楚這一點,Wilson和他的同事們用演化計算創(chuàng)建出了能玩雅達利游戲的代碼。
游戲設(shè)計
這些游戲目前在Arcade Learning Environment數(shù)據(jù)集中可用,該數(shù)據(jù)集經(jīng)常被用來測試不同類型游戲的學(xué)習(xí)行為。數(shù)據(jù)集含有61種雅達利游戲,例如《乓》、《太空侵略者》、《打磚塊》和《功夫大師》等等。
任務(wù)的目的是創(chuàng)建一套算法,只需要看屏幕上輸出的效果,就能熟練地玩雅達利游戲,和人類玩游戲的方式一樣。所以算法必須分析每次游戲動作的位置,然后決定如何移動才能得到最多分數(shù)。
對所有游戲的控制方法都是相同的,它對應(yīng)著八個不同的移動方向:上、下、左、右、以及左上、左下、右上、右下。另外還有一個可以和八個方向結(jié)合的按鈕,可以隨意進行組合。并不是所有游戲都能用到18個可能的結(jié)合,一些游戲只能用到四種。
首先,代碼創(chuàng)造出來之后,演化方法需要一系列術(shù)語來生成計算代碼,其中包括簡單的“ADD(x+y)/2”到更復(fù)雜的“return the 1-element x-vector if x is a scalar”。
同時,選擇何種術(shù)語來組成這一系列詞典是非常重要的,Wilson和他的同事們使用的是已經(jīng)被稱為笛卡爾遺傳規(guī)劃(Cartesian Genetic Programming)的集合。
在這一過程的開始,系統(tǒng)隨機創(chuàng)建包含40個術(shù)語的代碼,這可以看作是該項目的“基因組”。之后,這些代碼經(jīng)過游戲測試,看最終能得到多少分。根據(jù)它們的表現(xiàn),“基因組”會不斷改變進行重復(fù)生成,再進行測試。最后,該研究小組用這種方法測試了10000個“基因組”。
實驗結(jié)果
結(jié)果很有趣。最初,代碼玩游戲的水平很差,但是經(jīng)過一段時間的迭代,代碼的表現(xiàn)越來越好。經(jīng)過多次代碼生成后,它們已經(jīng)表現(xiàn)得很好了,甚至有時還超過了人類。
代碼在很多情況下都會生成全新的游戲策略,通常都很復(fù)雜。但是有時也會找到被人們忽略的簡單游戲方法。
例如,當(dāng)計算機在玩《功夫大師》時,演化算法發(fā)現(xiàn),最有價值的攻擊是下蹲拳。下蹲更加安全,因為它能躲避一半的子彈并且進行近身攻擊。算法最初的策略是重復(fù)使用這一技巧,不添加其他動作,事后想來這樣做也是有道理的。
這樣研究人員非常吃驚,他們表示:“運用這種策略比正常玩這種游戲得到的分數(shù)更好,而且現(xiàn)在代碼在這個游戲中只使用下蹲拳?!?/p>
總的來說,演化出的算法能很好地掌握多種游戲,甚至超過人類水平。更重要的是,這些算法能和深度學(xué)習(xí)相媲美。它同樣還有另一種結(jié)果:“雖然這一項目體積相對較小,很多控制器在這種方法上就非常有競爭力,所需的訓(xùn)練時間就更少?!?/p>
生成的代碼還有另一個優(yōu)點。由于它很小,就很容易觀察它的工作過程。相反,深度學(xué)習(xí)技術(shù)眾所周知的問題就是有時我們不知道它為什么會做出某種決策,這就會導(dǎo)致很多現(xiàn)實和法律問題。
小結(jié)
總的來說,這項有趣的工作也許能提醒那些只關(guān)注深度學(xué)習(xí)的科學(xué)家們,還有演化算法這樣的替代性技術(shù)。
Keras締造者、深度學(xué)習(xí)研究人員Fran?ois Chollet在推特上表示:“這項研究很了不起,通常用深度學(xué)習(xí)總會經(jīng)歷多次微小迭代,而這項工作是不同類型的嘗試。通常,如果你能在老生常談的問題上得到小有競爭力的結(jié)果,那么最終一定有所作為?!?/p>
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4717瀏覽量
100007 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5422瀏覽量
120591
原文標題:在深度學(xué)習(xí)“大行其道”的今天,不要忽視更強大的演化算法
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論