遺傳編程
遺傳編程,或稱遺傳編程GP 受生物進化過程的啟發(fā),是一種自動生成和選擇計算機程序來完成用戶定義的任務(wù)的技術(shù)。理論上,人類只需要告訴計算機使用基因編程'需要完成什么',而不用告訴它'如何去完成'終于有可能實現(xiàn)真正的人工智能:自動化發(fā)明機器。遺傳編程是一種使用進化算法的特殊機器學(xué)習(xí)技術(shù),它始于一組隨機生成的數(shù)百萬個計算機程序'人群'然后根據(jù)一個程序完成給定任務(wù)的能力來確定它的適用性,并應(yīng)用達爾文 物競天擇(適者生存)為了確定獲勝的程序,計算機程序還模擬了性別組合突變基因復(fù)制基因刪除等世代進化直到達到預(yù)定的終止條件。
進展
遺傳編程的第一次實驗是由斯蒂芬進行的。史密斯 (1980)And nickelchromium alloy .克萊姆 (1985)發(fā)表。約翰.Koza(1992)他還寫了一本著名的書,《遺傳編程:用自然選擇讓計算機編程》,介紹遺傳編程。
使用遺傳編程的計算機程序可以用許多編程語言編寫。早期(或者說傳統(tǒng))在GP的實現(xiàn)中,程序的指令和數(shù)據(jù)值是以樹形結(jié)構(gòu)組織的,所以那些原本提供樹形組織的編程語言最適合GP,比如Koza使用的Lisp語言。其他形式的GP也被提倡和實現(xiàn),比如相對簡單,適合傳統(tǒng)編程語言(例如Fortran, BASIC, 和 C)的線性遺傳編程。一些商業(yè)GP軟件將線性遺傳編程與匯編語言相結(jié)合以獲得更好的性能,一些實現(xiàn)直接生成匯編程序。
遺傳編程所需的計算量非常大(處理大量候選計算機程序)以至于在90年代只能用來解決一些簡單的問題。近年來,隨著遺傳編程技術(shù)的發(fā)展和CPU 的計算能力,GP開始產(chǎn)生大量顯著的成果。比如2004年前后,GP在多個領(lǐng)域取得了近40項成果:量子計算,電子設(shè)計,游戲比賽,排序,搜索等等。這些計算機生成的程序(算法)其中有些與2000年后人工產(chǎn)生的發(fā)明非常相似,甚至有兩項成果產(chǎn)生了可以申請專利的新發(fā)明2。
發(fā)展
在20世紀(jì)90年代,人們普遍認(rèn)為為遺傳編程發(fā)展一種理論是非常困難的,GP在各種搜索技術(shù)中也處于劣勢。2000年以后,GP的理論有了很大的進步,可以建立精確的GP概率模型和3356馬爾可夫鏈模型。遺傳規(guī)劃比遺傳算法更適用(實際上包含了遺傳算法)
除了生成計算機程序,遺傳編程也被用來生成可開發(fā)的硬件。
Juergen Schmidhuber進一步提出了宏遺傳編程macro genetic programming,一種利用遺傳編程生成遺傳編程系統(tǒng)的技術(shù)。一些批評者認(rèn)為宏觀遺傳編程在理論上不可行,但需要更多的研究來證實。

