0%
第十五章 人工進化 15.2 你力所不逮的,進化能行

第十五章 人工進化

15.2 你力所不逮的,進化能行

事實上,雷正專註于開發一種新硬體,那應該是一種新技術。雷認為他可以將虛擬計算機和為它編寫的基本語言「燒制」進一塊計算機晶元——一塊進化用的矽片。這個現成的達爾文進化晶元就成了可以插|進任何計算機的模塊,它會為你迅速繁殖東西。你可以演化出代碼,或子程序,或許甚至可能是整個軟體程序。「我發現這相當奇怪,」雷吐露道,「作為一個熱帶植物生態學家,我竟然搞起了計算機設計。」
找到登上一處高點的路徑並不難。自然界中的進化和計算機中的進化程序所擅長的,是在山巒起伏、一山更比一山高的地形中,爬到全局意義上的至高點——主峰。
在真實的自然生活中,性是遠比變異更重要的變化來源。性,從概念上講,是遺傳重組——一些來自父親的基因和一些來自母親的基因結合成為後代的全新基因組。在「地球」中,寄生蟲有時會在無性繁殖中「借用」其他病毒的複製功能,而「收割機」有可能在這個過程中碰巧殺死了宿主,宿主原有的空間被新病毒佔用。發生這種情況的時候,寄生蟲就會使用新病毒的部分代碼,以及「死去」病毒被打斷了的部分複製功能。由此產生的後代是個未經刻意變異而產生的天然的新組合。(雷還說這種古怪的繁殖「相當於和死人發生性關係!」)在雷的九九藏書「培養液」里這種中斷式交配其實一直都在發生,但只有當他關閉變異功能時,他才注意到這點。原來,不經意的重組本身就足以推動進化。死亡時生物所棲息的內存空間中就會有足夠的不規則性,而這種複雜性提供了進化所需的多樣性。從某種意義上說,系統進化出了變異。
「進化者」軟體對最大多數患者的最寬泛的病歷進行優化。它嘗試給出一名典型患者的基本描述,然後檢查有多少患者符合這份描述,再對病歷進行多緯度改進,看看是否有更多患者與之相符,然後修改、選擇、再修改,直至最大數量的患者符合這份描述。這項工作特別適合進化。
達爾文進化晶元可能帶來的前景是美妙的。設想在你的個人計算機中就有一塊,而在你的計算機中使用的文字處理軟體是微軟的Word。由於達爾文進化論常駐操作系統,Word會隨著你的工作而進化。它會利用處理器的空閑周期,以緩慢的進化方式自我改善和學習,使自己適應你的工作習慣。只有那些提高了速度和準確性的改變會保留下來。不過,雷深信應該將雜亂無章的進化與工作分割開。「你應該把進化與終端用戶分開,」他說。他設想在後台離線進行「數字耕牧」,這樣一來,進化中不可或缺的錯誤和失敗就不會為用戶所見;在用戶的九-九-藏-書使用過程中,進化也處於「休眠」狀態。
遺憾的是,雷從來沒有將他的世界以馬拉松的方式運行過,去看看幾個月或者幾年之後會發生些什麼。他還在不停地擺弄著他的程序,對其進行改進,以使之能夠收集長期運行所產生的海量數據(每天50兆位元組)。他承認,「有時,我們就像一群有一輛車的男孩子。我們總是在車庫裡打開發動機罩,把引擎零件拿出來擺弄,但是我們幾乎從不開車,因為我們太執著于加大馬力了。」
比如說,你有三萬名病人的醫療記錄。你可能很想了解一個典型患者的癥狀。資料庫越大,想看到你存在特定位置的數據就越困難。大多數軟體都能計算平均值,但是憑這並不能抽取出一個「典型」患者。你想了解的是,在收集到的幾千種類別的數據中,哪一套量測值對最多數人群來說具有相似的意義。這是一個對海量交互變數進行優化的問題。對任何生物來說,這都是一個再熟悉不過的問題:如何將成千上萬個變數所輸出的結果最大化呢?浣熊必須確保自己的生存,但是有上千種變數(腳的大小,夜視能力,心率,皮膚顏色等等)可以隨時間推移而發生變化,且一個參數的改變會引起另一個參數的改變。要想穿過這片包含各種可能結果的廣闊空間,並且還留有些許登九_九_藏_書頂的希望,唯一的方法就是進化。
雷所發現的「生物」是人類程序員無法編寫出來的。
也許湯姆·雷的電進化機最驚人的事情是它創造了性。沒人告訴它什麼是性,然而它還是發現了它。在一次實驗中,為了看看關閉變異功能會產生什麼結果,雷讓「培養液」在沒有外加錯誤的情況下運行。結果讓他大吃一驚,即便沒有程序變異,進化仍然發生了。
因為病毒要消耗計算機周期,所以較小(指令集更短)的病毒就有一定的優勢。雷重寫了「地球」的代碼,使系統根據病毒大小按比例為其分配計算機資源,大病毒得到更多周期。在這種模式下,雷的病毒們所棲息的是一個不偏不倚的世界。正因為這個世界對大小病毒一視同仁,因此長期運行也許會更有意義些。有一次雷將它運行了150億個計算機周期。在大約第110億個周期左右,誕生了一種長度為36位元組的病毒,它可是聰明得近乎狡詐了。它計算自己的真實尺寸,然後在「尾部」(我們姑且用這樣的稱謂吧)將長度值向左移了一位,在二進位中,這就相當於翻倍。靠著謊報自己的尺寸,病毒36神不知鬼不覺地竊取了病毒72的資源,這就意味著它得到了兩倍于實際所需的中央處理器時間。這個變種自然橫掃了整個系統。
計算機科學家把這個過程九-九-藏-書叫作「爬山法」。進化程序試圖在包含最優解的形式庫中向頂峰攀升。通過持續不斷地向更好的解決方案推進,程序一直向上攀登,直到不能爬得更高。在那一點上,它們就到達了峰頂——一個極大值。然而始終有個問題:這個峰頂是周圍最高的嗎?或者,程序是否被困在一個局部高點,與旁邊高得多的峰頂只有一條峽谷之隔,卻又無從回退?
「我從編寫80位元組的東西開始,」雷回憶說,「因為那是我能拿出來的最佳設計了。我猜想或許進化能把它降到75位元組左右,於是就讓程序運行了一整夜。結果第二天早上就出現了一個新東西——不是寄生蟲,而是某種能完全自我複製的東西——它只有22位元組!令我大惑不解的是,在沒有像寄生蟲那樣盜用別人指令的情況下,一個電腦病毒是怎樣僅通過22個指令就做到自行複製的呢?為了和他人分享這個新發現,我把它的基本演算法發到網上。麻省理工學院一位計算機專業的學生看到了我的解釋,但不知怎麼卻沒有得到病毒22的代碼。他試圖手工重新創造它,但是他的最好成績也需要31條指令。當他得知我是在睡覺時得到22條指令的時候,他沮喪極了。」
對科學家而言,雷的人造進化機最令人欣喜之處在於,他的小世界展示的似乎是間斷平衡。在相對較長的時期里,九-九-藏-書種群比例保持著一個相對穩定局面,只是偶爾有物種滅絕或新物種誕生。接著,幾乎是一眨眼功夫,這種平衡就立刻被一陣翻江倒海般的新老物種交替給打斷了。對一個較短的時間來說,變化是狂暴而不受約束的。接著事情解決了,靜止和平衡再次成為主宰。化石研究顯示,這種形式在地球上的自然界中佔壓倒優勢。靜止是常態;而變化總是突如其來。在進化的其他計算機模型中也能看到同樣的間斷平衡方式,比如克里斯蒂安·林格倫的囚徒困境式的共同進化世界。如果人為進化反映了生物進化,你肯定想知道,如果雷讓他的世界永遠運行下去,會出現什麼狀況?他的病毒怪物會創造出多細胞嗎?
人類力所不逮的,進化卻能做到。雷在一台顯示器上展示了22在培養液中繁殖倍增的蹤跡,以作為他的陳述的最佳詮釋:「想想看,隨機地改動程序竟然能勝過精雕細琢的手工編程,這聽上去挺荒謬的,可這就是一個活生生的例子。」這位旁觀者突然明了了,這些「沒腦子」的黑客具有的創造力是永無止境的。
進化在市面上也算不上天方夜譚了。今天你就能買到類似功能的電子錶格模塊。它的名字就叫作「進化者」。「進化者」是蘋果電腦上的電子錶格模板——非常複雜,密密麻麻有數百個變數和「假設」函數。工程師和資料庫專家們都使用它。