第十五章 人工進化
失控:全人類的最終命運和結局 作者:凱文·凱利 投票推薦 加入書簽 留言反饋
15.1 湯姆· 雷的電進化機
湯姆·雷[1]剛把編寫好的小玩意兒放進計算機,它就迅速繁殖起來,直到幾百個副本占滿了可用的存儲空間。雷的小玩意兒勉強算是個試驗性的計算機病毒,因為一旦離開他的計算機便不能再複製,所以它沒什麽危險。他隻是想看看,如果病毒必須在一個有限空間裏互相競爭,會有什麽結果。
雷的世界設計得很巧妙,在病毒老祖宗數以千計的克隆品中,有大約10%在自我複製時發生了微小變異。最初那個家夥是一個“80”——叫這個名字是因為它的編碼長度為80個字節。有些80發生了一點隨機的變異,成了79或81。這些新病毒中的一些變種不久就接管了雷的虛擬世界。它們進而再變異出更多種類。病毒80幾乎被這迅速增長的新“物種”大軍逼到瀕臨滅絕的地步。不過,它挺了過來,在79、51和45這些新麵孔出現並達到數量峰值一段時間以後,80又死灰複燃了。
不過區區幾個小時,湯姆·雷的電進化機已經進化出了“一鍋培養液”,近百種計算機病毒為了在這個與世隔絕的世界中生存而大打出手。在花了幾個月的時間編寫代碼後,雷在他的首次嚐試中就孕育出了人工進化。
當雷還是個說話細聲細氣、靦腆的哈佛本科生時,就曾為著名的蟻人威爾森[2]在哥斯達黎加收集蟻群。威爾森的劍橋實驗室需要活的切葉蟻群,而雷受雇到中美洲茂密的熱帶叢林尋找並捕獲狀態良好的野外蟻群,然後運到哈佛。他發現自己特別擅長做這個工作。他的竅門是以外科醫生般的靈巧對叢林土壤進行挖掘,搬走蟻群的核心部分。需要搬走的是蟻後的完整內室,包括蟻後自己、她的看護蟻以及一個儲存著足夠食物的微型蟻園,以在運輸中確保蟻群們不會忍饑挨餓。年輕的新生蟻群是最理想的了。這種蟻群的核心部分正好可以裝進一個茶杯裏。而另一個技巧就是找出藏在森林植被下的很小的蟻巢。隻需幾年時間,這個巴掌大小的小蟻群就可以填滿一個大房間。
在熱帶雨林采集螞蟻的同時,雷還發現了一種不明種類的蝴蝶,它會尾隨行軍蟻的行軍路線。行軍蟻吞噬其前進道路上所有動物的殘忍習性,會把一群飛蟲趕得慌不擇路。一種鳥逐漸形成了跟隨這個掠食大軍的習慣,愉快地享用那些在空中四散奔逃的蟲兒。而在緊隨行軍蟻大軍的飛鳥身後,蝴蝶又接踵而至。蝴蝶尾隨其後的目的是享用“螞蟻鳥”的糞便“大餐”——那是產卵所急需的氮的來源。螞蟻,“螞蟻鳥”,“螞蟻鳥蝴蝶”,也許還有誰知道什麽玩意兒的東西跟在後麵,組成了一支雜牌軍,像一群串聯好了的吉普賽人一樣,浩浩蕩蕩地橫掃這片叢林。
雷被如此精妙的複雜組合折服了。這簡直就是一個遊牧社會嘛!在無奇不有的天地萬物麵前,大多數企圖了解生態關係的嚐試都顯得那麽可笑。在茫茫宇宙之中,這三個種群(一種螞蟻、三種蝴蝶、十幾種鳥)是如何結成這種奇異的相互依賴關係的呢?為什麽會這樣呢?
雷在讀完博士的時候,覺得生態科學暮氣沉沉停滯不前,因為它不能對上麵這些重要的問題給出一個滿意的答案。生態學缺少好的理論來概括由每一片荒野的觀察數據所積累起來的財富。它受到大量局部知識的困擾:沒有一個總體理論,生態學隻不過是個充斥著迷人童話的圖書館。藤壺群落的生命周期、毛茛田地的季節性形態變化或山貓家族的行為已是眾所周知的了,但是,是什麽原則(如果有的話)主導了這三者的變化呢?生物學需要一門關於複雜性的科學來解答這個關於形態、曆史和發展的難解之謎——這些都是非常有趣的問題,而且都有野外數據的支持。
和許多生物學家一樣,雷也認為生物學的希望在於將其研究重點從生物時間(森林的千年壽命)轉移到進化時間(樹種的百萬年壽命)。進化起碼還有一個理論。然而,對細節的過分執著也往往糾纏著進化研究。“我很沮喪,”雷對我說,“因為我不想研究進化的產品——爬藤啊、螞蟻啊、蝴蝶啊什麽的。我想研究進化本身。”
湯姆·雷夢寐以求的是製造一台電進化機。用一個“盛有”進化的黑匣子,他就能夠闡明生態學的曆史法則——雨林是如何由早期森林傳承而來,生態係統到底是如何從產生了各種物種的同一原初力量中湧現出來的。如果他能研製出一台進化機,他就會有一個試驗台可以用來做真正的生態實驗。他可以選擇一個群落,以不同的組合一遍又一遍地進行試驗,比如說生成沒有水藻的池塘,沒有白蟻的森林,沒有黃鼠的草地,或者為免以偏概全,生成有黃鼠的叢林和有水藻的草地。他可以從製造病毒開始,看看這一切將把他帶向何處。
雷以前觀察鳥類,收集昆蟲,種植花卉——與計算機狂人完全不沾邊兒,而他卻堅信這樣一台機器是能夠造出來的。他記得十年前當他向一位麻省理工學院的計算機高手學習日本圍棋時,那個高手曾運用生物隱喻來解釋遊戲規則。雷陳述道:“他對我說,‘你知道嗎?編寫一個能夠自行複製的計算機程序是可行的。’在那一刻,我所憧憬的正是我現在所做的。我問他該怎麽做,他說,‘噢,小菜一碟,不值一提。’但是我不記得他說了什麽,或者他是否真的懂。當我想起那次談話時,我就把小說扔到一邊,捧起計算機手冊來了。”
雷的電進化機方案是從簡單的複製體開始,給它們一個舒適的棲息地,以及大量能源和有待填補的空間。和這些家夥最接近的實物是自複製的核糖核酸碎片。這個艱巨任務看上去是可行的。他打算調製一份計算機病毒的培養液。
當時正值1989年,新聞雜誌上鋪天蓋地都是計算機病毒比瘟疫還糟、是技術所能到達的邪惡之極的封麵報道。但雷卻從計算機病毒的簡單代碼中窺見了一個新科學的誕生:實驗進化與生態學。
為保護外部世界(和保證自己的計算機不會崩潰),雷用一台虛擬計算機來運行他的實驗。虛擬計算機是一種在真實計算機的潛意識深處模擬特定計算機的智能軟件。通過將那些可自我複製的小家夥們限製在這個影子計算機中,雷把它們與外界隔離,使自己在不危及主機的情況下,能夠對計算機內存這樣的重要功能胡亂折騰。“看了一年計算機手冊之後,我坐下來寫代碼。兩個月後,這小玩意兒跑起來了。在程序運行的頭兩分鍾裏,我就已經獲得了可以進化的生物。”
雷在他稱為“地球”的世界裏種下了他編寫的一個小玩意兒——80字節的程序代碼,並把它放入他的虛擬計算機的內存中。這個小家夥先是找到一塊80字節大小的空白內存空間,然後用一份自己的複製品占據這塊地盤,從而實現了自我複製。不消幾分鍾,內存裏就滿是80的複製品了。
雷增加了兩個重要功能,將這台施樂複印機般的複製機改造成一台進化機:他的程序在複製中偶爾會搞亂幾位代碼,他還賦予這些“生物”中的劊子手以優先權。簡言之,他引入了變異和死亡。
計算機科學家告訴過他,如果隨意改變計算機代碼(他的所有生物實際上都是代碼),改變後的程序可能無法正常運行,甚而使計算機崩潰。他們認為通過向編碼中隨機引入漏洞來獲得可運行的程序的概率太低了,他的方案無異於浪費時間。雷其實也知道,維持計算機運行所需的完美實在是太弱不禁風了——漏洞會殺死進程。不過,由於他的造物程序在他的影子計算機中運行,一旦變異產生一個嚴重“畸形”的東西,他的劊子手程序——他將其命名為“收割機”——就會將它殺死,而他的“地球”的其餘部分則繼續運轉。“地球”實際上是找出不能複製的漏洞程序,將其從虛擬計算機中拖將出去。
然而“收割機”會放過極少數有效變種,也就是說,那些碰巧形成一個真正的替代程序的變種。這些合法的變種能夠複製並產生其他變種。如果你像雷那樣將“地球”運行10億個計算機周期,在這10億次的機會中,將出現數量驚人的隨機產生的東西。為了讓係統更有活力,雷還為造出來的小東西們打上了年齡戳記,這樣一來,老一些的家夥就會死亡。“收割機既殺死最老的家夥,也殺死最搗蛋的家夥。”雷笑著說。
在“地球”的首輪運行中,隨機變異、死亡和自然選擇都起了作用。沒幾分鍾,雷就見證了一個生態係統的誕生——這個係統由那些新的生物組成,它們為搶奪計算機周期而競爭。競爭獎勵個頭小的家夥,因為它們需要的周期更少,而殘酷的達爾文進化論淘汰的則是貪婪的消耗者、體弱多病的物種和老家夥。物種79(比80少一個字節)是幸運的。它的工作卓有成效,很快就超過了80。
雷還發現了非常奇怪的東西——一種隻有45個字節的變種。它的代碼效率極高,數量上也超過了所有其他變種。“這個係統自我優化的速度之快令我震驚,”雷回憶說,“係統中的存活者有著越來越短的基因,我可以用圖把這個速度描繪出來。”
在對45的代碼做進一步考察時,雷驚奇地發現它是一隻寄生蟲。它隻包含了生存所需的代碼。為了繁殖,它“借用”了80的繁殖代碼來複製自己。隻要周圍有足夠的80宿主,45就會興盛起來。但是,如果在有限的範圍內45太多了,就不會有足夠的80提供複製源。隨著80的減少,45也減少了。這對舞伴跳著共同進化的探戈,進進退退,就像北部森林中的狐狸和兔子一樣。
“所有成功的係統都會吸引寄生蟲,這似乎是生命的普遍屬性。”雷提醒我說。在自然界寄生蟲如此常見,以至於宿主很快就共同進化出針對它們的免疫力。寄生蟲隨之進化出騙過那種免疫力的策略。結果宿主再共同進化出抵製它們的防禦能力。實際上這些行動並不是交替出現的,而是兩股持續相互作用的力量。
雷學會了用寄生蟲在“地球”中進行生態實驗。他把79裝到他的“培養液”裏,因為他覺得79可能對寄生蟲45免疫。的確如此。不過隨著79的興旺,第二種能夠捕食它們的寄生蟲進化出來。這一種有51字節長。當雷為它的基因排序時,他發現,45之所以能變成51,正是由一個“基因事件”所引起的:“7個出處已無從考究的指令取代了45中間段某處的一個指令,”把一個喪失能力的寄生蟲變成了強有力的新物種。但這還不算完——一個對51具有免疫力的新物種進化了出來,而這樣的過程還在繼續。
在運行了很長時間的“培養液”中,雷發現了以其他寄生蟲為宿主的超寄生蟲:“超寄生蟲就像是從你家的電線上偷電的鄰居。他們用你的電,你付電費,而你還蒙在鼓裏。”在“地球”裏,像45這樣的有機體發現自己無需“攜帶”大量代碼來複製自己,因為它們周圍有足夠的代碼。雷俏皮地說:“這就像我們利用其他動物的氨基酸一樣(在我們吃它們的時候)。”在進一步檢查中,雷發現超-超寄生蟲興旺起來,寄生升級到了第三重。他發現了“社交騙子”——這種生物利用兩個合作的超寄生蟲的代碼(“合作”的超寄生蟲彼此還相互偷竊!)。社會騙子需要相當發達的生態環境。至於超-超-超寄生蟲,雖然還沒看到,不過也許已經有了。在他的世界裏,這種不勞而獲的遊戲也許永無止境。 15.2 你力所不逮的,進化能行
雷所發現的“生物”是人類程序員無法編寫出來的。
“我從編寫80字節的東西開始,”雷回憶說,“因為那是我能拿出來的最佳設計了。我猜想或許進化能把它降到75字節左右,於是就讓程序運行了一整夜。結果第二天早上就出現了一個新東西——不是寄生蟲,而是某種能完全自我複製的東西——它隻有22字節!令我大惑不解的是,在沒有像寄生蟲那樣盜用別人指令的情況下,一個電腦病毒是怎樣僅通過22個指令就做到自行複製的呢?為了和他人分享這個新發現,我把它的基本算法發到網上。麻省理工學院一位計算機專業的學生看到了我的解釋,但不知怎麽卻沒有得到病毒22的代碼。他試圖手工重新創造它,但是他的最好成績也需要31條指令。當他得知我是在睡覺時得到22條指令的時候,他沮喪極了。”
人類力所不逮的,進化卻能做到。雷在一台顯示器上展示了22在培養液中繁殖倍增的蹤跡,以作為他的陳述的最佳詮釋:“想想看,隨機地改動程序竟然能勝過精雕細琢的手工編程,這聽上去挺荒謬的,可這就是一個活生生的例子。”這位旁觀者突然明了了,這些“沒腦子”的黑客具有的創造力是永無止境的。
因為病毒要消耗計算機周期,所以較小(指令集更短)的病毒就有一定的優勢。雷重寫了“地球”的代碼,使係統根據病毒大小按比例為其分配計算機資源,大病毒得到更多周期。在這種模式下,雷的病毒們所棲息的是一個不偏不倚的世界。正因為這個世界對大小病毒一視同仁,因此長期運行也許會更有意義些。有一次雷將它運行了150億個計算機周期。在大約第110億個周期左右,誕生了一種長度為36字節的病毒,它可是聰明得近乎狡詐了。它計算自己的真實尺寸,然後在“尾部”(我們姑且用這樣的稱謂吧)將長度值向左移了一位,在二進製中,這就相當於翻倍。靠著謊報自己的尺寸,病毒36神不知鬼不覺地竊取了病毒72的資源,這就意味著它得到了兩倍於實際所需的中央處理器時間。這個變種自然橫掃了整個係統。
也許湯姆·雷的電進化機最驚人的事情是它創造了性。沒人告訴它什麽是性,然而它還是發現了它。在一次實驗中,為了看看關閉變異功能會產生什麽結果,雷讓“培養液”在沒有外加錯誤的情況下運行。結果讓他大吃一驚,即便沒有程序變異,進化仍然發生了。
在真實的自然生活中,性是遠比變異更重要的變化來源。性,從概念上講,是遺傳重組——一些來自父親的基因和一些來自母親的基因結合成為後代的全新基因組。在“地球”中,寄生蟲有時會在無性繁殖中“借用”其他病毒的複製功能,而“收割機”有可能在這個過程中碰巧殺死了宿主,宿主原有的空間被新病毒占用。發生這種情況的時候,寄生蟲就會使用新病毒的部分代碼,以及“死去”病毒被打斷了的部分複製功能。由此產生的後代是個未經刻意變異而產生的天然的新組合。(雷還說這種古怪的繁殖“相當於和死人發生性關係!”)在雷的“培養液”裏,這種中斷式交配其實一直都在發生,但隻有當他關閉變異功能時,他才注意到這點。原來,不經意的重組本身就足以推動進化。死亡時生物所棲息的內存空間中就會有足夠的不規則性,而這種複雜性提供了進化所需的多樣性。從某種意義上說,係統進化出了變異。
對科學家而言,雷的人造進化機最令人欣喜之處在於,他的小世界展示的似乎是間斷平衡。在相對較長的時期裏,種群比例保持著一個相對穩定的局麵,隻是偶爾有物種滅絕或新物種誕生。接著,幾乎是一眨眼功夫,這種平衡就立刻被一陣翻江倒海般的新老物種交替給打斷了。對一個較短的時間來說,變化是狂暴而不受約束的。接著事情解決了,靜止和平衡再次成為主宰。化石研究顯示,這種形式在地球上的自然界中占壓倒優勢。靜止是常態;而變化總是突如其來。在進化的其他計算機模型中也能看到同樣的間斷平衡方式,比如克裏斯蒂安·林格倫的囚徒困境式的共同進化世界。如果人為進化反映了生物進化,你肯定想知道,如果雷讓他的世界永遠運行下去,會出現什麽狀況?他的病毒怪物會創造出多細胞嗎?
遺憾的是,雷從來沒有將他的世界以馬拉鬆的方式運行過,去看看幾個月或者幾年之後會發生些什麽。他還在不停地擺弄著他的程序,對其進行改進,以使之能夠收集長期運行所產生的海量數據(每天50兆字節)。他承認:“有時,我們就像一群有一輛車的男孩子。我們總是在車庫裏打開發動機罩,把引擎零件拿出來擺弄,但是我們幾乎從不開車,因為我們太執著於加大馬力了。”
事實上,雷正專注於開發一種新硬件,那應該是一種新技術。雷認為他可以將虛擬計算機和為它編寫的基本語言“燒製”進一塊計算機芯片——一塊進化用的矽片。這個現成的達爾文進化芯片就成了可以插進任何計算機的模塊,它會為你迅速繁殖東西。你可以演化出代碼,或子程序,或許甚至可能是整個軟件程序。“我發現這相當奇怪,”雷吐露道,“作為一個熱帶植物生態學家,我竟然搞起了計算機設計。”
達爾文進化芯片可能帶來的前景是美妙的。設想在你的個人計算機中就有一塊,而在你的計算機中使用的文字處理軟件是微軟的word。由於達爾文進化論常駐操作係統,word會隨著你的工作而進化。它會利用處理器的空閑周期,以緩慢的進化方式自我改善和學習,使自己適應你的工作習慣。隻有那些提高了速度和準確性的改變會保留下來。不過,雷深信應該將雜亂無章的進化與工作分割開。“你應該把進化與終端用戶分開,”他說。他設想在後台離線進行“數字耕牧”,這樣一來,進化中不可或缺的錯誤和失敗就不會為用戶所見;在用戶的使用過程中,進化也處於“休眠”狀態。
進化在市麵上也算不上天方夜譚了。今天你就能買到類似功能的電子表格模塊。它的名字就叫作“進化者”。“進化者”是蘋果電腦上的電子表格模板——非常複雜,密密麻麻有數百個變量和“假設”函數。工程師和數據庫專家們都使用它。
比如說,你有三萬名病人的醫療記錄。你可能很想了解一個典型患者的症狀。數據庫越大,想看到你存在特定位置的數據就越困難。大多數軟件都能計算平均值,但是憑這並不能抽取出一個“典型”患者。你想了解的是,在收集到的幾千種類別的數據中,哪一套量測值對最多數人群來說具有相似的意義。這是一個對海量交互變量進行優化的問題。對任何生物來說,這都是一個再熟悉不過的問題:如何將成千上萬個變量所輸出的結果最大化呢?浣熊必須確保自己的生存,但是有上千種變量(腳的大小,夜視能力,心率,皮膚顏色等)可以隨時間推移而發生變化,且一個參數的改變會引起另一個參數的改變。要想穿過這片包含各種可能結果的廣闊空間,並且還留有些許登頂的希望,唯一的方法就是進化。
“進化者”軟件對最大多數患者的最寬泛的病曆進行優化。它嚐試給出一名典型患者的基本描述,然後檢查有多少患者符合這份描述,再對病曆進行多緯度改進,看看是否有更多患者與之相符,然後修改、選擇、再修改,直至最大數量的患者符合這份描述。這項工作特別適合進化。
計算機科學家把這個過程叫作“爬山法”。進化程序試圖在包含最優解的形式庫中向頂峰攀升。通過持續不斷地向更好的解決方案推進,程序一直向上攀登,直到不能爬得更高。在那一點上,它們就到達了峰頂——一個極大值。然而始終有個問題:這個峰頂是周圍最高的嗎?或者,程序是否被困在一個局部高點,與旁邊高得多的峰頂隻有一條峽穀之隔,卻又無從回退?
找到登上一處高點的路徑並不難。自然界中的進化和計算機中的進化程序所擅長的,是在山巒起伏、一山更比一山高的地形中,爬到全局意義上的至高點——主峰。 15.3 並行實施的盲目行為
從外表看很難判斷約翰·霍蘭德的真實年齡。他曾經擺弄過世界上最早的計算機,現在則任教於密歇根大學。他首次提出了一種數學方法,用以描述進化所具備的優化能力,並且該方法可以輕鬆地在計算機上編程實現。因其數學形式在某種程度上類似於遺傳信息,霍蘭德把它們稱為遺傳算法[3]。
和湯姆·雷不同,霍蘭德從性開始入手。霍蘭德的遺傳算法選取兩組類似於dna的計算機代碼,這兩組代碼在問題求解上都有不錯的效果,然後以交配互換的方式將它們隨機重組,看看新的代碼會不會表現得更好一點。在設計係統時,和雷一樣,霍蘭德必須克服一個懸而未決的問題:對於任何隨機生成的計算機程序來說,往往都談不上什麽好壞,而是根本就不靠譜。從統計學的意義上說,對可用代碼做隨機變異,結局注定是屢戰屢敗。
早在20世紀60年代初理論生物學家就發現,與突變相比,交配所產生的實用個體比例更高,因而以其為基礎的計算機進化也更穩定和有生命力。但是,單靠有性交配,其結果很受局限。20世紀60年代中期,霍蘭德發明了遺傳算法;遺傳算法中起主要作用的是交配,但突變也是幕後策劃者之一。通過將交配與突變結合在一起,係統變得靈活且寬泛。
和其他具有係統觀念的人一樣,霍蘭德認為大自然的工作和計算機的任務是相似的。“生物體是高明的問題解決者,”霍蘭德在他的工作總結中寫道,“它們所展示出來的多才多藝使最好的計算機程序都為之汗顏。”這個論斷尤其令計算機科學家們感到難堪。他們可能經年累月地在某個算法上絞盡腦汁,而生物體卻通過無目標的進化和自然選擇獲得了它們的能力。
霍蘭德寫道,進化的方法“排除了軟件設計中最大的一個障礙:預先規定問題的所有特征”。如果你有許多相互矛盾而又彼此關聯的變量,而目標定義又很寬泛,可能有無數個解,那麽進化正是解決之道。
正如進化需要大量的個體才能發揮效用一樣,遺傳算法也要炮製出數量龐大的代碼群,並且這些代碼們同時進行處理數據和發生變異。遺傳算法實際上是一大群略有差別的策略,試圖在崎嶇的地形上同時攀爬不同的峰頂。由於大量代碼並行作業,因而能同時訪問該地形的多個區域,確保它不會錯過那真正的高峰。
隱含的並行主義是進化過程確保其不單攀上高峰、而且是最高峰的魔力所在。如何找出全局最優值?通過同時考察整個地貌的每一寸土地。如何在複雜係統中對上千個相互衝突的變量做出最佳平衡?通過同時嚐試上千種組合。如何培養出能在惡劣條件下生存的生物體?通過同時投入一千個略有差異的個體。
在霍蘭德的算法中,那些“處在最高處”的代碼們彼此交配。換句話說,“地勢高”的區域,交配率就高。這便將係統的注意力集中到最有前途的區域,同時,對那些沒有希望的地區,係統則剝奪了它們所占用的計算周期。這樣,並行主義既做到了“天網恢恢,疏而不漏”,又減少了尋找頂峰所需要的代碼數量。
並行是繞過隨機變異所固有的愚蠢和盲目的途徑之一。這是生命的極大諷喻:一個接一個地重複盲目行為隻能導致更深層的荒謬,而由一群個體並行執行的盲目行為,在條件適合時,卻能導出所有我們覺得有趣的東西。
約翰·霍蘭德在20世紀60年代研究適應機製時發明了遺傳算法。而直到20世紀80年代末,他的成果都沒有引起任何關注,除了12個異想天開的計算機研究生。其他幾個研究者,如工程師勞倫斯·福格爾[4]和漢斯·布雷默曼[5],在20世紀60年代獨立開展了種群的機械式進化研究;現在密歇根州韋恩州立大學工作的計算機科學家邁克爾·康拉德,在20世紀70年代也從對適應的研究轉向了為種群進化建立計算機模型;他們都受到了同樣的冷落。總之,這項工作在計算機科學領域裏可以說是默默無聞,而生物學界對它更是一無所知。
在霍蘭德關於遺傳算法和進化的書《自然與人工係統中的適應》(adaptation in natural and articial systemss)於1975年問世前,隻有兩三個學生寫過關於遺傳算法的論文。直到1992年再版時,這本書隻賣出2500本。在1972年至1982年間,整個科學界關於遺傳算法的文章不超過二十幾篇,更遑論有什麽對計算機進化頂禮膜拜的追隨者了。
生物學界對此缺乏興趣尚情有可原(但也不是什麽光彩的事情);生物學家認為自然界太複雜,難以用當時的計算機來展現其真實全貌。而計算機科學對此興趣寥寥,就莫名其妙了。我在為本書做調研時經常感到困惑,像計算進化這樣重要的方法為什麽竟無人理睬呢?現在我相信,這種視而不見的根源,在於進化所固有的看上去雜亂無章的並行性,以及它與當時盛行的計算機信條——馮·諾依曼串行程序——在根本上的抵觸。
人類的第一台電子計算機叫作電子數值積分計算器[6],是1945年為解決美軍的彈道計算問題而研發的。電子數值積分計算器是一個由1.8萬支電子管、7萬個電阻和1萬個電容構成的龐然大物。它需要6000個手動開關來設置指令,然後運行程序;各個數值的計算實際上是以並行方式同時進行的。這對編程來說是個負擔。
天才的馮·諾依曼從根本上改變了這種笨拙的編程係統。電子數值積分計算器的接替者——離散變量自動電子計算機[7],是第一台可運行存儲程序的通用計算機。馮·諾依曼24歲那年(1927年)發表了他的第一篇關於數學邏輯係統和博弈論的學術論文,自那時起,他就一直在考慮係統邏輯問題。在與離散變量自動電子計算機小組共事時,為了應付計算機編程在求解多問題時所需的複雜運算,他發明了一種方法來控製這些運算。他建議將問題分成離散的邏輯步驟,類似於長除法的求解步驟,並把求解過程的中間值臨時儲存在計算機中。這樣一來,那些中間值就可以被看成是下一部分問題的輸入值。通過這樣一個共同演化的循環(現在稱為子程序)來進行計算,並將程序邏輯儲存在計算機中以使它能與答案交互,馮·諾依曼能將任何一個問題轉化成人腦所能理解的一係列步驟。他還發明了描述這種分步線路的標記法:即現在大家所熟悉的流程圖。馮·諾依曼的串行計算架構——一次執行一條指令,其普適性令人驚歎,並且非常適合人類編程。1946年馮·諾依曼發表了這個架構的概要,隨後所有的商用計算機都采用了這個架構,無一例外。
1949年,約翰·霍蘭德曾效力於離散變量自動電子計算機的後續項目“旋風計劃”[8]。1950年,他參加了ibm“國防計算機”的邏輯設計團隊,這款機型後來演變成ibm 701機,是世界第一部商用計算機。當時的計算機有房間那麽大,耗電量驚人。到了50年代中期,霍蘭德加入了一個帶有傳奇性的圈子,裏麵都是些思想深邃之人,他們開始討論人工智能的可能性。
當赫伯特·西蒙和艾倫·紐厄爾[9]這樣的學界泰鬥把學習看作高貴和高等的成就時,霍蘭德卻把它看作光鮮外表下的低端適應。霍蘭德認為,如果我們能理解適應性尤其是進化的適應性,就可能理解甚至模仿有意識的學習。盡管其他人有可能意識到進化與學習之間的相似之處,然而在一個快速發展的領域裏,進化並不太為人所關注。
1953年,霍蘭德在密歇根大學數學圖書館漫無目的地瀏覽時,偶然發現了一卷由r.a.費希爾[10]寫於1929年的《自然選擇的遺傳理論》(gical eory of natural selectionn),頓時大受啟發。達爾文引領了從對生物的個體研究到種群研究的轉向,而把種群思維轉變為定量科學的則是費希爾。費希爾以一個隨時間推移而進化的蝴蝶族群為對象,將其看作是一個將差別信息並行傳遍整個族群的整體係統。他提出了控製信息擴散的方程。通過駕馭自然界最強大的力量——進化,以及人類最強有力的工具——數學,費希爾單槍匹馬開創了一個人類知識的新世界。“我第一次意識到能對進化進行有意義的數學運算。”霍蘭德回憶起那次奇妙邂逅時說。“那個想法對我非常有吸引力。”霍蘭德如此醉心於將進化作為一種數學來處理,以至於(在複印機還沒有問世的當時)拚命想搞到絕版的全文。他懇求圖書館把書賣給他,但沒有成功。霍蘭德吸取了費希爾的見解,又將其升華為自己的構想:一群協處理器,在計算機內存的原野上,如蝴蝶一般翩翩起舞。
霍蘭德認為,人工學習其本質上是適應性的一個特例。他相當確定能在計算機上實現適應性。在領悟了費希爾關於進化是一種概率的洞見後,霍蘭德著手嚐試把進化編為代碼輸入機器。
在嚐試之初,他麵臨著一個兩難處境:進化是並行的處理器,而所有可用的電子計算機卻都是馮·諾依曼式的串行處理器。
在把計算機變為進化平台的迫切願望下,霍蘭德做了唯一合理的決定:設計一台大規模並行計算機來運行他的實驗。在並行運算中,許多指令同時得到執行,而不是一次隻執行一個指令。1959年,他提交了一篇論文,其內容正如其標題所概括,介紹了“能同時執行任意數量子程序的通用計算機”[11],這個機巧裝置後來被稱為“霍蘭德機”。而等了差不多30年,一台這樣的計算機才終於問世。
在此期間,霍蘭德和其他計算進化論者不得不依賴串行計算機來培育進化。他們使出渾身解數在快速串行處理器上編程模擬一個緩慢的並行過程。模擬工作卓有成效,足以揭示出真正並行過程的威力。 15.4 計算中的軍備競賽
直到20世紀80年代中期,丹尼·希利斯才開始建造第一台大規模並行運算計算機。其實早在幾年前,希利斯就已是一個計算機科學專業的神童了。他的那些惡作劇和黑客事跡即使在麻省理工這個號稱黑客鼻祖的學校中也頗具傳奇性。希利斯以其慣有的清楚明了向作家史蒂文·列維[12]總結了馮·諾依曼計算機的瓶頸所在:“你為計算機輸入的知識越多,它運行得越慢。而對人來說,你給他的知識越多,他的頭腦越敏捷。所以說我們處在一種悖論之中,你越想讓計算機聰明,它就變得越愚笨。”
希利斯真正想做的是生物學家,而他理解複雜程序的特長卻將他吸引到麻省理工學院的人工智能實驗室。在那裏,他最終決定嚐試設計一台“會成為我的驕傲”的思考型計算機。他把設計一個無法無天、三頭六臂的計算機怪獸的開創性想法歸功於約翰·霍蘭德的啟發。最終希利斯領導的小組發明了第一台並行處理計算機——“連接機”。1988年,每台“連接機”可賣得一百萬美元高價,賺得盆滿缽滿。有了機器,希利斯就開始認真地從事計算機生物學研究了。
“我們知道,隻有兩種方法能製造出結構極其複雜的東西,”希利斯說,“一個是依靠工程學,另一個是通過進化。而在兩者中,進化能夠製造出更加複雜的東西。”如果靠設計不能製造出令我們驕傲的計算機,那我們就不得不依靠進化。
希利斯的第一台大規模並行“連接機”能使64000個處理器同時運行。他迫不及待地要啟動進化,於是給計算機注入了64000個非常簡單的程序。和霍蘭德的遺傳算法或雷的“地球”一樣,每一個個體都是可以發生變異的一串符號。不過,在希利斯的“連接機”中,每個程序都有專門的處理器來對其進行處理。因此,種群能極其迅速地做出反應,而其數量之多,是串行計算機根本不可能做到的。
在他的培養液裏,最初的“小家夥”都是些隨機的指令序列,但是經過幾萬代進化,它們就變成能將一長串數字進行排序的程序(排序體)。大多數較大型的軟件都會包含這樣的排序例程。多年來,在計算機科學領域有無數的人力花費在設計最有效的排序算法上。希利斯讓數千個排序體在計算機中增殖,隨機變異,偶爾進行有性基因互換。然後,正如通常的進化策略一樣,他的係統會測試這些程序,終止那些效率低下的,隻有最短的(最好的)排序體才有複製的機會。經過上萬代的循環後,他的係統培育出一種程序,它幾乎和由人類程序員編製的最佳排序程序一樣短。
接著,希利斯重新開始試驗,不過這次有一個很重要的不同:允許在對進化的排序體進行測試時,測試程序(測試體)本身也可以發生變異。用來測試的字符串可以變得更複雜,以抵製那些簡單的排序體。排序體必須瞄準一個移動的目標,而測試體則需要躲避一支會轉向的利箭。事實上,希利斯將測試用的數字列表從一個僵化被動的環境轉變成了一個積極主動的有機體。就像狐狸和野兔、黑脈金斑蝶和馬利筋一樣,排序體和測試體也構成了經典的共同進化關係。
希利斯骨子裏還是個生物學家,他把不斷變異的測試體看成是一個試圖幹擾排序程序的寄生生物,把他的世界看成是一場軍備競賽——寄生蟲進攻,宿主防衛,寄生蟲反攻,宿主防守反擊,如此循環。傳統觀念認為,這種膠著的軍備競賽是在愚蠢地浪費時間,或難逃陷入泥潭的厄運。然而希利斯發現,寄生蟲的引入並沒有妨礙排序體的發展,恰恰相反,它加快了進化的速率。寄生蟲式的軍備競賽也許很醜陋,但它們大大加快了進化的速度。
和湯姆·雷一樣,丹尼·希利斯也發現進化能超越通常的人類能力。在“連接機”中發展起來的寄生蟲,刺激了排序體去設計更有效的解決辦法。在共同進化了1萬個周期之後,希利斯的小怪物們進化出一種計算機科學家們前所未見的排序體。最具諷刺性的是,它剛好比人類設計的最短算法少一步。看似愚鈍的進化設計出了一個獨具匠心又非常有效的軟件程序。
“連接機”中的單個處理器很愚蠢,智力跟一隻螞蟻差不多。不管花上多少年時間,單個處理器都無法獨自想出任何問題的獨創性解決辦法。即使把64000個處理器串到一起也好不了多少。
而當64000個又蠢又笨的螞蟻大腦形成相互聯結的龐大網絡時,它們就構成了一個進化的種群,看起來就像大腦裏的一大堆神經元。那些使人類精疲力盡的難題,卻往往在這裏得到絕妙的解法。這種“海量連接中湧現出秩序”的人工智能方法便被冠以“連接主義”的名號。
早期認為進化與學習緊密相關的直覺又被連接主義重新喚醒了。探索人工學習的連接主義者通過將愚鈍的神經元聯結成巨大的網絡而大展拳腳。他們研發了一種基於聯結的並行處理方法——在虛擬或硬件實現的並行計算機上運行——與遺傳算法相似,它能同時進行大量的運算,不過它的評估機製更加精密(更聰明)。這些大大“開竅”了的網絡被稱為神經網絡。迄今為止,神經網絡在產生“智能”方麵所取得的成就還很有限,盡管它們的模式識別能力非常有用。
然而,一切事物均來自低等連接這一理念著實令人驚詫。網絡內部究竟發生了什麽神奇變化,竟使它具有了近乎神的力量,從相互連接的愚鈍節點中孕育出組織,或是從相互連接的愚笨處理器中繁育出程序?當你把所有的一切聯結到一起時,發生了什麽點石成金的變化呢?在上一分鍾,你有的還隻是由簡單個體組成的烏合之眾;在下一分鍾,聯結之後,你卻獲得了湧現出來的、有用的秩序。
曾有那麽一瞬間,連接主義者猜想:也許創造理智與意識所需要的一切,不過就是一個夠大的互相連接的神經元網絡,理性智能可以在其中完成自我組裝。甫一嚐試,他們的這個夢就破滅了。
但是人工進化者們仍然在追尋著連接主義的夢想。隻是,和著進化的緩慢節奏,他們會更有耐心。而這緩慢的、非常緩慢的進化節奏著實令我不安。我這樣向湯姆·雷表達我的憂慮:“現成的進化芯片和並行進化處理機讓我有些焦慮,因為進化需要的時間多得令人難以置信。這個時間從何而來?看看大自然的運行速度,想一下,在我們談話期間,有多少微小分子被吸附到一起。大自然的並行速度之快、規模之廣之大令人難以置信,而我們卻打算嚐試超越它。在我看來,根本就沒有足夠的時間能做成這件事。”
雷回答道:“哦,我也有同樣的焦慮。但另一方麵,讓我驚訝的是,在我的係統裏即使僅靠一個虛擬處理器,進化也能進行得如此之快。再者,時間是相對的。進化的時間尺度是由進化中一代的時間跨度來決定的。對人類來說,一代是30年,但對我的小東西們來說,一代就是幾分之一秒。而且,當我扮演上帝時,我能加快整體的突變率。我不敢肯定,但是也許我可以在計算機上得到更多的進化。”
在計算機上進行進化還有其他的原因。比如,雷能記錄每個“小東西”的基因組序列,保存完整的人口統計和種群譜係。它生成大量數據,而在現實世界中根本無法收集這些數據。盡管隨著人造世界複雜性的激增,提取信息的複雜性和成本也會激增,但做起來仍可能比無法掌控的有機世界更容易些。正如雷告訴我的那樣,“即使我的世界變得像真實世界一樣複雜,但我是上帝,我無所不知。我能獲取任何我感興趣的信息而不打擾它,也不用走來走去踩壞植物。這是一個根本的不同。” 15.5 駕馭野性的進化
回到18世紀,本傑明·富蘭克林很難讓朋友們相信,他實驗室裏產生的微弱電流與荒野中發生的雷電本質上是一回事。部分原因是由於他的人造電火花與撕裂天空的巨型閃電相比根本不在一個級別上,但更主要的原因是,那些旁觀者們認為,福蘭克林所聲稱的再現自然有違常理。
今天,湯姆·雷也難以讓他的同事們信服,他在實驗室裏人工合成的進化與塑造自然界動植物的進化本質上是相同的。他的世界裏幾個小時的進化與蠻荒大自然中數十億年的進化在時間尺度上的差別也隻是部分原因;最主要的是,懷疑者們也認為,雷所聲稱的再現一個難以明了的自然過程是有違常理的。
在富蘭克林之後200年,人工生成的可駕馭和可度量的閃電通過電線被導入建築物和工具,成為社會尤其是數字社會中最重要的組織力量。再200年後,可駕馭和可度量的人工適應也將被導入各種機械設備,成為我們社會的主要組織力量。
還沒有一個計算機科學家可以合成出符合預期的、無比強大的、能帶來翻天覆地變化的人工智能。也沒有一個生物化學家能夠創造出人工生命。然而,雷和一些人已經捕捉到了進化的一角,並按照他們各自的需求來再現進化。許多技術人員相信,星星之火必將燎原,我們所夢寐以求的人工生命和人工智能都將由此而來。與其製造,不如培育。
我們已經運用工程技術造出了盡可能複雜的機器。如今,我們所麵對的項目——數千萬行代碼的軟件程序,覆蓋全球的通訊係統,必須適應迅速變化的全球購買習慣並在幾天內更新設備的工廠,價廉物美的機器人——其複雜度隻有進化才能搞定。
由於進化是緩慢的、無形的和冗長的,因而在這個快節奏的、咄咄逼人的人造機器世界裏,進化恍若一個難以察覺的幽靈。但我更願意相信,進化是一種能被容易地轉化為計算機代碼的自然而然的技術。正是進化與計算機之間的這種超級兼容性,將推動人工進化進入我們的數字生活。 15.6 進化聰明分子的愚鈍科學家
不過,人工進化不僅限於矽片。隻要是工程方法一籌莫展的地方,都可以導入進化。生物工程這種尖端領域已經采用了合成進化技術。
這是一個來自真實世界的問題。你需要一種藥物來抗擊剛剛分離出機理的疾病。把這個疾病機理看作是一把鎖。你所需要的是一把正確的鑰匙——一種藥,來打開這把鎖。
有機分子的構成非常複雜。它們由數千個原子組成,其排列方式多達數十億種。僅僅知道一種蛋白質的化學成分對我們了解其結構沒有太大幫助。長長的氨基酸鏈層層疊疊繞成一團,而熱點[13]——蛋白質的活躍部分——恰好處於外側麵的合適位置上。這種折疊蛋白質的方式就好比將一條一英裏長、上麵用藍色標記了6個點的繩子繞成一團,使6個藍色的點都落在不同的外側麵上。纏繞的方式不計其數,但是符合要求的卻沒有幾個。你甚至無從知道一種方式是否接近答案——除非你已經快完成了它。變化是如此之多,縱使窮盡地老天荒也無法一一試遍。
製藥商們通常有兩種手段來對付這種複雜性。過去,藥劑師靠的是碰運氣。他們試遍所有從自然中發現的化學物質,看看哪一個可以解開這把給定的鎖。一般都會有一兩種天然化合物能夠部分地發揮效用——這也算是獲得了鑰匙的一部分。今天,在工程學時代,生物化學家們試圖破譯基因代碼和蛋白質折疊之間的路徑,看是否能通過工程方法設計出構建分子所需的步驟。盡管有些許成功的例子,但蛋白質折疊和基因路徑仍然因過於複雜而難以控製。因而,這種被稱為“合理化藥物設計”的邏輯方法,實際上已經撞上了工程方法所能處理的複雜性的極限。
自20世紀80年代末起,世界各地的生物工程實驗室都開始致力於完善另一種我們用來創造複雜體的工具——進化。
簡單地說,進化係統產生出數十億隨機分子,並用來試著開鎖。在這數十億個平凡的候選者中,也許隻有一個分子的一部分與這把鎖的6個點之一相合。這把“親和”鑰匙便被保留下來,其餘的則被無情地淘汰。接著,由幸存下來的“親和”鑰匙又繁育出數十億個新變種,同時與鎖相合的那個點保持不變(稱為綁定),再被用來試那把鎖。也許此時又能發現一把可以匹配兩個點的“親和”鑰匙。這把鑰匙就作為幸存者保留下來,其餘的則死去。幸存者繁育出數十億個變種,最般配的後代將存活下去。這種淘汰-變異-綁定的過程重複幾代後,這個分子繁育程序就會找到一種藥——或許是救命藥,與鎖的所有點都相契合。
幾乎任何一種分子都能被進化。譬如說,生物技術人員能進化出一種改進版的胰島素。他們將胰島素注入兔子體內,兔子的免疫係統會對這種“毒素”產生抗體(抗體是毒素的互補構型[14])。接下來,將這種抗體提取出來,注入進化係統。在進化係統中,抗體就好比是測試用的鎖。經過幾代進化之後,生物技術人員可以得到抗體的互補構型,實際上也就是胰島素的替代版。這種替代版極具價值。天然藥物的替代品具備諸多優勢:它們可能更小;更容易注入身體;副作用更小;更容易製造;或靶向更精準。
生物進化者們還可以進化出一種對抗肝炎病毒的抗體,然後再進化出一種與抗體相配的仿肝炎病毒。被選中的病毒並非完美的變種,而是缺失了一些可引發致命症狀的活性點。這種有缺陷、無能力的替代品就是所謂的疫苗。因而,疫苗也可以通過非工程的方法進化出來。
所有藥物製造的常規邏輯在進化方法麵前都不再適用。進化出來的分子與合理化設計出來的藥物在效果上並無二致。唯一不同的是,我們對其功效的原理和方式一無所知。我們隻知道它通過了所有的測試。這些發明出來的藥物已經超出了我們的理解力,它們是“非理性設計”的產物。
藥物進化允許研究人員不明就裏,而進化本身卻慢慢聰明起來。印地安那州立大學的進化生物化學家安德魯·埃林頓(andrew ellington)告訴《科學》雜誌,在進化係統中“要讓分子告訴你有關它的事情,因為它比你更了解它自己。”
繁育藥物可以使醫學受益。但藥物與軟件不同。我們也許可以繁育軟件,然後將係統交到它的手裏,任由其自行繁育,走向無人知曉的境界。但我們能否讓分子也走上這條不知通往何處的進化之路呢?
答案是肯定的,但這也會是一項艱巨的任務。湯姆·雷的電進化機偏重於處理可遺傳的信息,卻忽略了機體;而分子進化則偏重於機體,卻忽略了可遺傳的信息。單純的信息本身很難消除,而沒有死亡就沒有進化。肌肉和血液之所以對進化非常有幫助,正是因為機體提供了一個讓信息死去的便捷方式。任何能將可遺傳信息與可消亡機體合二為一的係統都具備了進化係統的要素。
聖地亞哥的生物化學家傑拉爾德·喬伊斯研究的是早期生命化學。他提出了一種簡單的方法,能夠將信息和機體這對進化的雙重本質融入到一個強健的人工進化係統中:他在一個試管裏再現了可能是地球生命的早期階段——“核糖核酸[15]世界”。
核糖核酸是非常精密的分子係統。它並不是最早的生命係統,但地球生命發展到某個階段幾乎必然成為核糖核酸生命。喬伊斯說:“生物學中的一切跡象都表明,39億年前的地球是由核糖核酸來唱主角。”
核糖核酸有一個獨一無二的優勢,是我們所知的任何其他係統都不具有的。它能同時兼任機體和信息兩個角色——既是表現形式,又是內在成因;既充當信使,又是信息。一個核糖核酸分子既要擔當起與世界互動的職責,又要完成延續世界的重任,至少要把信息傳遞給下一代。盡管身負重任,核糖核酸仍然是一個極為緊湊的係統,開放式的人工進化正可以由此展開。
斯克裏普斯研究所座落在加利福尼州聖地亞哥市附近的海邊,是一座雅致時髦的現代化實驗室。在這裏,傑拉爾德·喬伊斯帶著一小群研究生和博士後進行他的進化實驗。在塑料試管的底部有少許液滴,體積還趕不上頂針大小,這就是他的核糖核酸世界。幾十支這樣的試管放在冰桶裏,需要進化的時候,就把它們加熱到身體的溫度。一旦暖和起來後,核糖核酸能在一小時內產生出十億個副本。
“我們所擁有的,”喬伊斯指著一個小試管說,“是一個大型的並行處理器。我之所以選擇生物進化而不是計算機模擬,原因之一就是在地球上,至少在不久的將來,還沒有計算機能為我提供1015個並行的微處理器。”試管底部的液滴在尺寸上與計算機芯片上的智能部分大體相當。喬伊斯進一步闡述道:“實際上,我們的人工係統甚至比自然進化還要好,因為沒有多少自然係統能讓我們在一小時內產生1015個個體。”
自維持的生命係統除了能帶來智能革命外,喬伊斯認為進化還可以在製造化學品和藥品上帶來商業利潤。在他的想象中,分子進化係統能夠每天24小時、一年365天不停運轉。“你給它下達一項任務,並告訴它,在搞清楚如何將分子a變成分子b之前,不要離開工作間。”
喬伊斯一口氣說出了一大串專門從事定向分子進化[16]研究的生物技術公司(吉萊德[17]、ixsys[18]、nexagen[19]、osiris[20]、selectide[21],以及達爾文分子公司)。他的名單中還不包括那些已經頗具規模的生物技術公司,如基因泰克公司[22],該公司不僅從事定向進化技術的前沿研究,也進行合理化藥物設計。達爾文分子公司主要專利的持有人是研究複雜性的科學家斯圖爾特·考夫曼,該公司募集了數百萬美元來利用進化設計藥物。諾貝爾獎得主、生物化學家曼弗雷德·艾根[23]稱,定向進化是“生物技術的未來”。
然而,這是真正的進化嗎?它與那個帶給我們胰島素、眼睫毛和浣熊的進化是一回事麽?沒錯,這就是進化。“我們通常所說的進化是達爾文進化,”喬伊斯告訴我,“不過在另一種進化中,選擇壓力[24]是由我們來決定的,而不是自然,因此我們稱其為定向進化。”
定向進化是另一種監督式學習,另一種遍曆博爾赫斯圖書館的方法,另一種繁育。在定向進化中,選擇是由培育者引導的,而非自然發生的。 15.7 死亡是最好的老師
戴維·艾克利是貝爾通信研究所[25]神經網絡和遺傳算法領域的研究員。我偶然間了解到了艾克利對進化係統一些最獨到的看法。
艾克利是個壯得像頭熊、滿嘴俏皮話的家夥。他和他的同事邁克爾·利特曼[26]製作了一段關於人工生命世界的搞笑視頻,並在1990年第二屆人工生命大會上播放出來,惹得在場的250位嚴肅的科學家們哄堂大笑。他的“造物”實際上就是些代碼片斷,和經典的遺傳算法沒有多大區別,但是,他用滑稽的笑臉來表示這些代碼片段,讓它們四處遊動相互啃咬,或者撞上代表邊界的牆壁。聰明的活下來,愚蠢的則死掉。和其他人一樣,艾克利發現,他的世界能夠進化出對環境異常適應的有機體。成功的個體非常長壽——按其所在世界的時間尺度衡量的話,能活25000“天”。這些家夥把係統給琢磨透了。它們知道如何用最小的努力來獲取自己所需的東西,也知道如何遠離麻煩。具有這種基因的“生物”,不僅個體很長壽,而且由其組成的種群也世代興旺。
在對這些“街霸”的基因進行了一番研究後,艾克利發現它們有些資源尚未充分利用,這使得他覺得自己可以像神一樣有番作為:通過改進它們的染色體,利用上這些資源,使它們更加適應他為它們搭建的環境。於是,他修改了它們進化後的代碼(這個舉動實際上相當於早期的虛擬基因工程),再把它們放回到他的世界。作為個體,它們能力超強,脫穎而出,適應力超過了以往的任何前輩。
然而,艾克利注意到,它們的種群數目總是低於自然進化而來的那些家夥。作為一個群體來說,它們活力不足。盡管從未絕跡,但它們總是瀕臨滅絕。艾克利認為,由於數目太少,這個物種的繁衍不會超過300代。也就是說,盡管手工改進的基因能夠最大限度地適合個體,但從對整個族群有利的角度看,卻不如那些自然成長起來的基因。此時此刻,在這午夜黑客的自釀世界中,一句古老的生態學格言第一次得到了明證:對個體而言最好的,對物種而言卻不一定。
“我們弄不明白從長遠看到底什麽才是最好的,這點讓人很難接受。”艾克利在人工生命會議上的一席話贏得了一片掌聲,“但是我想,嘿,這就是生命!”
貝爾通信研究所之所以允許艾克利從事他的芥子世界的研究,是因為他們認識到進化也是一種計算。貝爾通信研究所曾經而且現在也一直對更好的計算方法很感興趣,尤其是那些基於分布式模型的方法,因為電話網就是一個分布式計算機。如果進化是一種有效的分布式計算,那麽是否還有其他的方法?如果可以的話,我們又能對進化技術做出怎樣的改進或變化呢?借用我們常用的那個圖書館/空間的比喻,艾克利滔滔不絕地說道:“計算的空間龐大得令人難以置信,我們隻不過探索了其中非常微小的一些角落。我現在做的,以及我想進一步做的,是擴展人類認識到的計算的空間。”
在所有可能的計算類型中,艾克利最感興趣的是那些與學習有關的過程。“強學習”是一種學習方式,它需要聰明的老師。老師會告訴學生應該知道些什麽,而學生則分析信息並將其儲存在記憶中。不太聰明的老師則通過不同的方法教學。她對所要教的東西本身也許並不了解,但是,她能告訴學生什麽時候猜出了正確答案——就像代課教師給學生測驗打分一樣。如果學生猜出了部分答案,老師可以給出“接近”或“偏離”的暗示,幫助學生繼續探索。這樣一來,這位不太聰明的老師就可能生成其本身所不具備的知識。艾克利一直在推動對“弱學習”的研究,他認為這是一種讓計算空間最大化的方式:利用最少的輸入信息,獲取最多的輸出信息。“我一直在試圖找出最愚笨、最孤陋寡聞的老師,”艾克利告訴我,“我想我找到了。答案是:死亡。”
死亡是進化中唯一的老師。艾克利的使命就是查明:隻以死亡為老師,能學到什麽?我們還不是很清楚答案,但有些現成的例證:翱翔的雄鷹,鴿子的導航係統,或白蟻的摩天大樓。找到答案需要些時間。進化是聰明的,但同時又是盲目和愚笨的。“我想象不出比自然選擇更笨的學習方法了,”艾克利說道。
在所有可能的計算和學習的空間中,自然選擇占據了一個特殊的位置,它是一個極點,在這個點上,信息傳遞被最小化。它構成了學習和智能的最低基線:基線之下不會有學習產生,基線之上則會產生更加智能、更加複雜的學習。盡管我們仍然不能完全理解自然選擇在共同進化世界中的本質,但它依然是學習的基礎熔點。如果我們能夠給進化一個度量值的話(我們還不能),就可以以此為基準評判其他形式的學習。
自然選擇躲藏在許多表象之下。艾克利是對的;如今計算機科學家們都意識到,計算方式有許多種——其中許多是進化的方式。任何人都知道,進化和學習的方式可能有數百種;不論哪種策略,實際上都是在對圖書館或空間進行搜索。“傳統人工智能研究的閃光思想——也是唯一思想——就是‘搜索’,”艾克利斷言道。實現搜索的方法有很多種,對自然生命中起作用的自然選擇隻是其中的一種。
生物意義上的生命是與特殊的硬件綁定在一起的,這就是以碳為基礎的dna分子。這個特殊的硬件限製了自然選擇所能使用的搜索方法。而有了計算機這個新硬件,特別是並行計算機,許多新的自適應係統得以問世,全新的搜索策略也得以應用。例如,生物dna的染色體無法將自己的代碼向其他生物體的dna分子“廣而告之”,以便它們獲得信息並改變其代碼,而在計算機環境中,你就能做到這一點。
戴維·艾克利和邁克爾·利特曼都是貝爾通信研究所認知科學研究組的成員。他們著手在計算機上構建一個非達爾文的進化係統。他們選擇了一個最合邏輯的方案:拉馬克進化,也即獲得性遺傳[27]。拉馬克學說很有吸引力。直覺上,它遠比達爾文進化更有優勢,因為按道理來說有用的變異能更快地進入基因序列。然而,它的計算量之大很快就讓滿懷憧憬的工程師們明白,構造這樣一個係統是多麽不現實。
如果一名鐵匠需要凸起的肱二頭肌,他的身體該怎樣倒推出基因上所需的變化呢?拉馬克係統的缺陷在於,對於任何一個有利的變化,都需要回溯到胚胎發育期的基因構成。由於生物體的任何變化都可能由多個基因引起,或者是在身體的發展過程中由多個相互作用的指令引起。任何外在形式的內在因果都是一張錯綜複雜的網絡,理清這個網絡所需的追蹤係統其複雜性與這個生物體本身相比也不惶多讓。生物學上的拉馬克進化受困於一條嚴格的數學定律:求多個質數的乘積極其容易,但分解質因素則異常困難。最好的加密算法正是利用了這種不對稱的難度。拉馬克學說之所以沒有在生物界中真正存在過,就在於它需要一種不可能存在的生物解密方案。
不過,計算中並不需要軀體。在計算機進化(如湯姆·雷的電進化機)中,計算機代碼兼任基因和軀體兩個角色。如此一來,從表象中推導出基因的難題就迎刃而解了。(事實上,這種“表裏如一”的約束並非隻限於人工領域,地球上的生命必然已通過了這個階段。也許任何自發組織的活係統都必須從一個“表裏如一”的形式開始,就像自複製的分子那麽簡單。)
在計算機的人工世界裏,拉馬克進化是有效的。艾克利和利特曼在一台擁有16000個處理器的並行計算機上實現了拉馬克係統。每個處理器管理一個由64個個體組成的亞種群,總計大約有100萬個個體。為了模擬出軀體和基因的雙重信息效果,係統為每個個體製作了基因副本,並稱其為“軀體”。每個軀體的代碼都略微有些差別,它們都嚐試解決同一個問題。
貝爾通信研究所的科學家們設置了兩種運行模式。在達爾文模式中,軀體代碼會發生變異。某個幸運的家夥可能會意外地得到較好的結果,於是係統就選擇它進行交配和複製。然而在達爾文進化中,生物交配時必須使用其代碼的原始“基因”副本——即它所繼承的代碼,而非後天獲得的經過改良的軀體代碼。這正是生物的方式。所以,當鐵匠進行交配時,他使用的是他的“先天”代碼,而非“後天”代碼。
相比之下,在拉馬克模式中,當那個改良了軀體代碼的幸運兒被選中進行交配時,它能使用後天獲得的改良代碼,作為其交配的基礎。這就好比鐵匠能將自己粗壯的胳膊傳給後代一樣。
經過對兩個係統的比較,艾克利和利特曼發現,就他們所考量的複雜問題而言,拉馬克係統的解決方案要比達爾文係統強上兩倍。最聰明的拉馬克個體比最聰明的達爾文個體聰明得多。艾克利說,拉馬克進化的特點在於它把種群中的“白癡非常迅速地排擠出去”。艾克利曾經朝一屋子的科學家大喊道:“拉馬克比達爾文強太多了!”
從數學意義上來說,拉馬克進化注入了一點學習的要素。學習被定義為個體在活著時的適應性。在經典的達爾文進化中,個體的學習並不重要。而拉馬克進化則允許個體在世時所獲得的信息(包括如何增強肌肉,或如何解方程)可以與進化這個長期的、愚鈍的學習結合在一起。拉馬克進化能夠產生更聰明的答案,因為它是更聰明的搜索方法。
拉馬克進化的優越性使艾克利大感驚訝,因為他認為大自然已經做得很好了:“從計算機科學的角度看,自然是達爾文主義者而不是拉馬克主義者,這實在是很蠢。可是自然受困於化學物質,而我們沒有。”這使他想到,如果進化的對象不局限於分子的話,也許會有更有效的進化方式和搜索方法。 15.8 螞蟻的算法天賦
意大利米蘭的一組研究員提出了一些新的進化和學習方法。他們的方法填補了艾克利所提到的“所有可能的計算空間”中的一些空白。這些研究員們把自己的搜索方法稱為“蟻群算法”,是因為他們受到了蟻群集體行為的啟迪。
螞蟻把分布式並行係統摸了個門清。螞蟻既代表了社會組織的曆史,也代表了計算機的未來。一個蟻群也許包含百隻萬工蟻和數百隻蟻後,它們能建起一座城市,盡管每個個體隻是模模糊糊地感覺到其他個體的存在。螞蟻能成群結隊地穿過田野找到上佳食物,仿佛它們就是一隻巨大的複眼。它們排成協調的並行行列,穿行在草木之間,並共同使其巢穴保持衡溫,盡管世上從未有任何一隻螞蟻知道如何調節溫度。
一個螞蟻軍團,智愚而不知測量,視短而不及遠望,卻能迅速找到穿越崎嶇地麵的最短路徑。這種計算正是對進化搜索的完美映射:一群無知而短視的個體們在數學意義上崎嶇不平的地形上同時作業,試圖找出一條最優路徑。蟻群就是一個並行處理機。
真正的螞蟻通過名為信息素的化學係統來彼此交流。螞蟻在彼此之間以及自己的環境中散發信息素。這些芳香的氣味隨著時間的推移而消散。它還能通過一連串的螞蟻來接力傳播:它們嗅到某種氣味,複製它並傳給其他螞蟻。信息素可以被看作是在螞蟻係統內部傳播或交流的信息。
米蘭小組(成員為阿爾貝托·克羅尼、馬可·多利古和維多裏奧·馬涅索)按照螞蟻的邏輯構建了方程式。他們的虛擬螞蟻是一大群並行運轉的愚笨處理器。每個虛擬螞蟻有一個微不足道的記憶係統,可以進行本地溝通。如果幹得好的話,所獲得的獎賞也以一種分布式計算的方式與其他同類分享。
意大利人用標準的旅行商問題來測試他們的螞蟻機。這個問題是這樣描述的:你需要拜訪很多城市,但每座城市隻能拜訪一次,那麽哪條路徑最短?為了求解這個問題,蟻群中的每個虛擬螞蟻會動身從一座城市漫遊到另一座城市,並在沿途留下信息素的氣味。路徑越短的話,信息素揮發得越少。而信息素的信號越強,循跡而來的螞蟻就越多。那些較短的路徑由此得到自我強化。運行5000回合之後,螞蟻的群體思維就會進化出一條相當理想的路徑。
米蘭小組還嚐試了各種變化。如果虛擬螞蟻都由一座城市出發或均勻分布在各個城市,會有什麽不同嗎?(分布的效果要好一些。)一個回合中虛擬螞蟻的數量會有影響麽?(越多越好,直到螞蟻與城市的數量比為1:1。)通過改變參數,米蘭小組得到了一係列螞蟻搜索算法。
螞蟻算法是拉馬克搜索的一種形式。當某隻螞蟻偶然發現一條短路徑,這個信息通過信息素的氣味間接地傳播給其他虛擬螞蟻。這樣,單隻螞蟻畢生的學習所得就間接地成為整個蟻群信息遺產的一部分。螞蟻個體把它學習到的知識有效地傳播給自己的群體。與文化教導一樣,傳播也是拉馬克搜索的一部分。艾克利說:“除了交配,信息交換還有許多方式。比如晚間新聞。”
無論是真實的螞蟻,還是虛擬的螞蟻,它們的聰明在於投入“傳播”的信息量非常少,範圍非常小,信號也非常弱。將弱傳播引入進化的提法相當有吸引力。即使地球的生物界中存在拉馬克進化,那它也一定被埋藏得很深。不過,仍然存在充滿了各種稀奇古怪算法的空間,各種拉馬克式的傳播盡可以在那裏找到用武之地。我聽說有的程序員整天在鼓搗“彌母(文化基因)”式的進化算法,即模仿思想流(彌母)從一個大腦進入另一個大腦,試圖捕捉到文化革命的精髓和力量。連接分布式計算機節點的方法有千千萬萬,迄今為止,隻有極少數的方法(如螞蟻算法)被人們考察過。
直到1990年,並行計算機還遭到專家們的嘲笑,認為它尚有很多地方值得商榷,過於專業,屬於狂熱派的玩物。它們結構混亂,難以編程。但狂熱派卻不這麽看。1989年,丹尼·希利斯與一個知名計算機專家公開打賭,預測到1995年,並行機每月處理的數據量將超過串行機。看來他是對的。當串行計算機由於其狹窄的馮·諾依曼通道不堪複雜任務的重負而痛苦呻吟時,專家的看法一夜之間就發生了變化,並迅速席卷了整個計算機產業。彼得·丹寧[28]在《科學》雜誌上撰文(《高度並行的計算》(highly parallelputation),,稱,“解決高級科學問題所需的計算速度,隻能通過高度並行的計算架構來獲得。”斯坦福大學計算機科學係的約翰·柯紮[29]更直截了當,“並行計算機是計算的未來。句號。”
然而,並行計算機還是很難掌控。並行軟件是水平的、並發的、錯綜複雜的因果網絡。你無法從這樣的非線性特性中找出缺陷所在,它們都隱藏了起來。沒有清晰的步驟可循,代碼無從分解,事件此起彼伏。製造並行計算機很容易,但要為其編程卻很難。
並行計算機所麵對的挑戰是所有分布式群係統都會麵對的——包括電話網絡、軍事係統、全球24小時金融網絡,以及龐大的計算機網絡。它們的複雜性考驗著我們掌控它們的能力。“為一個大規模並行機編程的複雜度可能超過了我們的能力,”湯姆·雷對我說,“我認為我們永遠也寫不出能充分利用並行處理能力的軟件。”
並行的愚昧的小東西能夠“寫”出比人類更好的軟件,這讓雷想到了一個能得到我們想要的並行軟件的辦法。“你看,”他說,“生態的相互作用就是並行的最優化技術。多細胞生物本質上就是在宇宙尺度上運行大規模的並行代碼。進化能夠‘想出’我們窮盡一生也無法想清楚的並行編程。如果我們能夠進化軟件,那我們就能大大往前邁進一步。”對於分布式網絡這類事物,雷說:“進化是最自然的編程方式。”
自然的編程方式!這聽起來真讓人有些泄氣。人類就應該隻做自己最擅長的工作:那些小而靈的、快而精的係統。讓(人工注入的)自然進化去做那些雜亂無章的大事吧。 15.9 工程霸權的終結
丹尼·希利斯也得出了相同的結論。他很認真地表示,想讓自己的“連接機”進化出商務軟件。“我們想讓這些係統解決一個我們隻知如何陳述卻不知如何解決的問題。”一個例子就是如何編寫出數百萬行駕駛飛機的程序。希利斯提議建立一個群係統,以進化出“駕駛技巧”更優秀的軟件,係統中有一些微小的寄生蟲程序會試圖墜毀飛機。正如他的實驗所展示的,寄生蟲會促使係統更快地向無差錯和抗幹擾強的導航程序收斂。希利斯說:“我們寧肯花更多時間在編製更好的寄生蟲上,也不願花上無數個小時去做設計代碼和查錯這些事情。”
即使技術人員成功地設計出一款龐大的程序,譬如導航軟件,要想對其進行徹底的測試也是不可能的。但進化出來的東西則不同。“這種軟件的成長環境裏充斥著成千上萬專職的挑刺者,”希利斯說著,又想起了自己的寄生蟲,“凡是在它們手下躲過一劫的,都經受住了嚴酷的考驗。”除了能夠創造我們製造不出來的東西以外,進化還有一點值得誇耀:它能造出來缺陷更少的東西。“我寧願乘坐由進化出來的軟件駕駛的飛機,也不願乘坐由我自己編製的軟件駕駛的飛機,”作為一名非凡的程序員,希利斯如是說道。
長途電話公司的呼叫路由程序總共有200萬行代碼。而這200萬行代碼中的三行錯誤代碼就導致了1990年夏天全國電話係統的連鎖崩潰。現在,200萬行已經不算多了。裝載在海軍海狼潛艇上的作戰計算機包含了360萬行代碼。1993年微軟發布的新操作係統“nt”總共包含400萬行代碼。一億行的程序也離我們不遠了。
當計算機程序膨脹到幾十億行代碼時,僅僅是維護程序、保持正常運行本身就會成為一個主要負擔。有太多的經濟活動和人的生命會依賴於這種數十億行的程序,因此不能讓它們有哪怕片刻的失效。戴維·艾克利認為,可靠性和無故障運行時間將成為軟件最首要的任務。“我敢說,對真正複雜的程序來說,僅僅是為了存活下來就要消耗更多的資源。”目前,一個大型程序中隻有一小部分致力於維護、糾錯和清理工作。“將來,”艾克利預言道,“99%的原始計算機周期都將被用在讓這個怪獸自我監視以維持其正常運轉上。隻有剩餘的1% 將被用於執行用戶任務——電話交換或其他什麽。要知道,這個怪獸隻有活下來,才能完成用戶任務。”
隨著軟件越來越大,生存變得越重要,同時也越來越困難。要想在日複一日的使用中存活下來,就意味著必須能夠適應和進化,而這需要做更多的工作。隻有不斷地分析自己的狀況,修正自己的代碼以適應新的需要,淨化自己,不斷地排除異常情況,並保持適應與進化,程序才能生存下來。計算必須有生命力和活力。艾克利稱之為“軟件生物學”或“活力計算”。程序員即使24小時都開著尋呼機,也不能確保數十億行的代碼能夠不出故障。人工進化也許是唯一能使軟件保持生命力和活力的方法。
人工進化是工程霸權的終結。進化能使我們超越自身的規劃能力;進化能雕琢出我們做不出來的東西;進化能達到更完美的境界;進化能看護我們無法看護的世界。
但是,正如本書標題所點明的,進化的代價就是——失控。湯姆·雷說道:“進化係統的一個問題就是,我們放棄了某些控製。”
丹尼·希利斯所乘航班的駕駛程序是進化出來的,沒有人能弄懂這個軟件。它就像一團千絲萬縷的亂麻,也許真正需要的隻是其中的一小部分,但是它能夠確保無故障地運行。
艾克利的電話係統是由進化出來的軟件管理的,它是“活”的。當它出問題時,沒有人能排除故障,因為程序以一種無法理解的方式埋藏在一個由小機器組成的未知網絡中。不過,當它出問題時,它會自行修複。
沒有人能把握住湯姆·雷的培養液的最終歸宿。它們精於設計各種小技巧,卻沒人告訴它們下一步需要什麽技巧。唯有進化能應付我們所創造的複雜性,但進化卻不受我們的節製。
在施樂公司帕洛阿爾托研究中心,拉爾夫·默克勒[30]正在製造能夠自我複製的極小分子。由於這些分子的尺度為納米級別(比細菌還小),因此這種技術被稱為納米技術。在不久的將來,納米技術的工程技能與生物技術的工程技能將趨於一致:它們都把分子看成是機器。對純粹的生命來說,納米技術可以看作是生物工程;對人工進化來說,納米技術則等同於生物分子。默克勒告訴我:“我可不想讓納米技術進化。我希望把它限製在一定的框架內,並且受到國際公約的製約。對納米技術來說,最危險的事情莫過於交配。是的,我想,應該有個國際公約來限製在納米技術中使用交配。一旦交配,就有了進化;隻要進化,就會有麻煩。”
進化並未完全超脫我們的控製;放棄某些控製隻不過是為了更好地利用它。我們在工程中引以為傲的東西——精密性、可預測性、準確性以及正確性,都將為進化所淡化。
而這些東西必須被淡化,因為真實的世界是一個充滿不測風雲的世界,是一個千變萬幻的世界;生存在這個世界裏,需要一點模糊、鬆弛、更多適應力和更少精確度的態度。生命是無法控製的;活係統是不可預測的;活的造物不是非此即彼的。談起複雜程序時,艾克利表示:“‘正確’是水中月,是小係統的特性。在巨大的變化麵前,‘正確’將被‘生存能力’所取代。”
當電話係統由適應性很強的進化軟件來運行時,是沒有一種所謂的正確方式的。艾克利繼續道:“說一個係統是‘正確的’,聽起來就像是官話、空話。人們評判一個係統,是根據其對意外情況的反應力以及應對措施的創造性。”與其正確,不如靈活,不如耐久;所謂“好死不如賴活”。艾克利說:“小而專且正確的程序就像螞蟻,對身處的世界茫然無知;而反應靈敏的程序往往是失控的龐然大物,僅把1%的精力花在你要解決的問題上。孰優孰劣,不言自喻。”
有一次,在斯圖亞特·考夫曼的課上,一個學生問他:“對於你不想要的東西,你的進化是如何處理的?我知道你能讓一個係統進化出你想要的東西,可是,你又怎麽能肯定它不會製造出你不想要的東西?”問得好,孩子。我們能足夠準確地定義我們想要的東西,從而將它培育出來。然而,我們往往不知道我們不想要什麽。即使知道,這些不受歡迎者的名單也長得不切實際。我們怎樣才能剔除那些不利的副作用呢?
“你做不到的。”考夫曼坦率地回答。
這就是進化的交易。我們舍控製而取力量。對我們這些執著於控製的家夥來說,這無異於魔鬼的交易。
放棄控製吧,我們將人工進化出一個嶄新的世界和夢想不到的富裕。放手吧,它會開花結果的。
我們曾經抵製住過魔鬼的誘惑嗎?
[1] 湯姆·雷(tom ray,全名thomas s.ray):生態學家,編寫出了名為“tierra”(西班牙語“地球”之意)的計算機人工生命模型,引起學術界的轟動。目前他是奧克拉荷馬大學的動物學教授兼任計算機科學副教授。
[2] 艾德華·威爾森(edward osborne wilson,1929.06.10~):美國昆蟲學家和生物學家,尤其以他對生態學、進化論和社會生物學的研究而著名。他的主要研究對象是螞蟻,尤其是螞蟻通過弗洛蒙進行通訊。他於1975年所寫的《社會生物學:新的綜合》(sociobiology:the new synthesis)引起了對社會生物學的爭論。生物多樣性這個詞也是他引入的。威爾森的成就獲得了許多獎勵,其中包括美國國家科學獎章、克拉福特獎和兩次普利策獎。
[3] 遺傳算法(gic algorithms,簡寫為ga):人工智能領域的一個重要算法,最早由約翰·霍蘭德於20世紀70年代提出。
[4] 勞倫斯·福格爾wrence fogel,1928.03.02~2007.02.18):進化計算和人為因素分析的先驅者,進化規劃之父。
[5] 漢斯·布雷默曼(hans bremermann,1926~1996):加州伯克利大學名譽教授,數學生物學先驅。
[6] 電子數值積分計算器(eniac – electronic numerical integrator andputer):1946年2月15日誕生於賓夕法尼亞大學,由美軍在二戰中投資研製。它曾被認為是世界上第一台電子計算機,但最近的一場曠日持久的官司改變了這個曆史,阿塔納索夫-貝瑞計算機(atanasoff-berryputer,簡稱abc)取而代之成為世界上第一台電子計算機。
[7] 離散變量自動電子計算機(edvac – electronic discrete variable automaticputer):是一台早期的電子計算機。它和電子數值積分計算器的建造者均為賓夕法尼亞大學的電氣工程師約翰·莫奇利和普雷斯波·艾克特。馮·諾依曼以技術顧問的身份參與了研製。
[8] 旋風計算機(whirlwind):一款由麻省理工大學研製的早期電子計算機。引入了當時先進的實時處理理念,並最先采用顯示器作為輸出設備,擁有世界首款成熟的操作係統。其設計理念對20世紀60年代的商用計算機產生巨大影響。
[9] 艾倫·紐厄爾(n newall,1927.03.19~1992.07.19):計算機科學和認知心理學領域的科學家,曾任職於蘭德公司以及卡內基-梅隆大學的計算機學院、商學院和心理學係。1975年他和赫伯特·西蒙一起因人工智能方麵的基礎貢獻而被授予圖靈獎。
[10] r.a.費希爾爵士(sr.ronald aylmer fisher,1890.02.17~1962.07.29):英國皇家學會會員、統計學家、生物進化學家與遺傳學家。他是現代統計學與現代進化論的奠基人之一。他被認為是“一位單槍匹馬創立現代統計科學的天才”,“達爾文最偉大的繼承者”。
[11] 《能同時執行任意數量子程序的通用計算機》:a universalputer capable of executing an arbitrary number of sub-programs simultaneously
[12] 史蒂文·列維(steven levy,1951~):美國新聞工作者,寫了不少有關電腦科技、密碼係統、網絡安全和隱私的書。
[13] 熱點(hot spot):基因組上的某些小塊區域。這些區域內發生基因重組的頻率要高於周圍區域上百倍乃至上千倍。熱點的成因目前尚不清楚,但所有熱點的特性都很相似。此外,最近的研究顯示,人類基因組中有超過25000個熱點,這也表明熱點是基因組中普遍存在的現象。
[14] 互補構型plementary shape):指能像手與手套、鑰匙與鎖一樣合在一起的構型。
[15] 核糖核酸(rna):是一種重要的生物大分子,是細胞中遺傳信息的中間載體。對一部分病毒而言,rna是其唯一的遺傳物質。
[16] 定向分子進化(directed molecr evolution):根據所需要的屬性進行分子進化的技術。
[17] 吉萊德(gilead):1987年成立於矽穀的一家高科技生物製藥公司,研發和生產的藥品種類主要包括抗艾滋病毒藥、抗肝炎藥、嚴重心血管疾病和呼吸道疾病用藥。公司2009年的收入超過70億美金,在《商業周刊》評選的2009年50強公司中名列第一。
[18] ixsys:創立於1989年,是第一家從事定向分子進化研究的公司。後更名為“應用分子進化”(applied molecr evolution,簡寫為ame)。現為納斯達克上市公司。
[19] nexagen:位於俄亥俄州的健康保健品公司,主打產品為減肥藥jen fe next。
[20] osiris:納斯達克上市公司,從事幹細胞產品的研發和生產。
[21] selectide:1990年創立於亞利桑那州圖森市,公司後經多次收購與轉手,已名存實亡。
[22] 基因泰克(genentech):美國曆史最悠久的生物技術公司,創辦於1976年。公司在上世紀末和本世紀初曾推出過幾款癌症用藥,風靡市場。瑞士製藥業巨頭羅氏集團目前為該公司的完全擁有者。
湯姆·雷[1]剛把編寫好的小玩意兒放進計算機,它就迅速繁殖起來,直到幾百個副本占滿了可用的存儲空間。雷的小玩意兒勉強算是個試驗性的計算機病毒,因為一旦離開他的計算機便不能再複製,所以它沒什麽危險。他隻是想看看,如果病毒必須在一個有限空間裏互相競爭,會有什麽結果。
雷的世界設計得很巧妙,在病毒老祖宗數以千計的克隆品中,有大約10%在自我複製時發生了微小變異。最初那個家夥是一個“80”——叫這個名字是因為它的編碼長度為80個字節。有些80發生了一點隨機的變異,成了79或81。這些新病毒中的一些變種不久就接管了雷的虛擬世界。它們進而再變異出更多種類。病毒80幾乎被這迅速增長的新“物種”大軍逼到瀕臨滅絕的地步。不過,它挺了過來,在79、51和45這些新麵孔出現並達到數量峰值一段時間以後,80又死灰複燃了。
不過區區幾個小時,湯姆·雷的電進化機已經進化出了“一鍋培養液”,近百種計算機病毒為了在這個與世隔絕的世界中生存而大打出手。在花了幾個月的時間編寫代碼後,雷在他的首次嚐試中就孕育出了人工進化。
當雷還是個說話細聲細氣、靦腆的哈佛本科生時,就曾為著名的蟻人威爾森[2]在哥斯達黎加收集蟻群。威爾森的劍橋實驗室需要活的切葉蟻群,而雷受雇到中美洲茂密的熱帶叢林尋找並捕獲狀態良好的野外蟻群,然後運到哈佛。他發現自己特別擅長做這個工作。他的竅門是以外科醫生般的靈巧對叢林土壤進行挖掘,搬走蟻群的核心部分。需要搬走的是蟻後的完整內室,包括蟻後自己、她的看護蟻以及一個儲存著足夠食物的微型蟻園,以在運輸中確保蟻群們不會忍饑挨餓。年輕的新生蟻群是最理想的了。這種蟻群的核心部分正好可以裝進一個茶杯裏。而另一個技巧就是找出藏在森林植被下的很小的蟻巢。隻需幾年時間,這個巴掌大小的小蟻群就可以填滿一個大房間。
在熱帶雨林采集螞蟻的同時,雷還發現了一種不明種類的蝴蝶,它會尾隨行軍蟻的行軍路線。行軍蟻吞噬其前進道路上所有動物的殘忍習性,會把一群飛蟲趕得慌不擇路。一種鳥逐漸形成了跟隨這個掠食大軍的習慣,愉快地享用那些在空中四散奔逃的蟲兒。而在緊隨行軍蟻大軍的飛鳥身後,蝴蝶又接踵而至。蝴蝶尾隨其後的目的是享用“螞蟻鳥”的糞便“大餐”——那是產卵所急需的氮的來源。螞蟻,“螞蟻鳥”,“螞蟻鳥蝴蝶”,也許還有誰知道什麽玩意兒的東西跟在後麵,組成了一支雜牌軍,像一群串聯好了的吉普賽人一樣,浩浩蕩蕩地橫掃這片叢林。
雷被如此精妙的複雜組合折服了。這簡直就是一個遊牧社會嘛!在無奇不有的天地萬物麵前,大多數企圖了解生態關係的嚐試都顯得那麽可笑。在茫茫宇宙之中,這三個種群(一種螞蟻、三種蝴蝶、十幾種鳥)是如何結成這種奇異的相互依賴關係的呢?為什麽會這樣呢?
雷在讀完博士的時候,覺得生態科學暮氣沉沉停滯不前,因為它不能對上麵這些重要的問題給出一個滿意的答案。生態學缺少好的理論來概括由每一片荒野的觀察數據所積累起來的財富。它受到大量局部知識的困擾:沒有一個總體理論,生態學隻不過是個充斥著迷人童話的圖書館。藤壺群落的生命周期、毛茛田地的季節性形態變化或山貓家族的行為已是眾所周知的了,但是,是什麽原則(如果有的話)主導了這三者的變化呢?生物學需要一門關於複雜性的科學來解答這個關於形態、曆史和發展的難解之謎——這些都是非常有趣的問題,而且都有野外數據的支持。
和許多生物學家一樣,雷也認為生物學的希望在於將其研究重點從生物時間(森林的千年壽命)轉移到進化時間(樹種的百萬年壽命)。進化起碼還有一個理論。然而,對細節的過分執著也往往糾纏著進化研究。“我很沮喪,”雷對我說,“因為我不想研究進化的產品——爬藤啊、螞蟻啊、蝴蝶啊什麽的。我想研究進化本身。”
湯姆·雷夢寐以求的是製造一台電進化機。用一個“盛有”進化的黑匣子,他就能夠闡明生態學的曆史法則——雨林是如何由早期森林傳承而來,生態係統到底是如何從產生了各種物種的同一原初力量中湧現出來的。如果他能研製出一台進化機,他就會有一個試驗台可以用來做真正的生態實驗。他可以選擇一個群落,以不同的組合一遍又一遍地進行試驗,比如說生成沒有水藻的池塘,沒有白蟻的森林,沒有黃鼠的草地,或者為免以偏概全,生成有黃鼠的叢林和有水藻的草地。他可以從製造病毒開始,看看這一切將把他帶向何處。
雷以前觀察鳥類,收集昆蟲,種植花卉——與計算機狂人完全不沾邊兒,而他卻堅信這樣一台機器是能夠造出來的。他記得十年前當他向一位麻省理工學院的計算機高手學習日本圍棋時,那個高手曾運用生物隱喻來解釋遊戲規則。雷陳述道:“他對我說,‘你知道嗎?編寫一個能夠自行複製的計算機程序是可行的。’在那一刻,我所憧憬的正是我現在所做的。我問他該怎麽做,他說,‘噢,小菜一碟,不值一提。’但是我不記得他說了什麽,或者他是否真的懂。當我想起那次談話時,我就把小說扔到一邊,捧起計算機手冊來了。”
雷的電進化機方案是從簡單的複製體開始,給它們一個舒適的棲息地,以及大量能源和有待填補的空間。和這些家夥最接近的實物是自複製的核糖核酸碎片。這個艱巨任務看上去是可行的。他打算調製一份計算機病毒的培養液。
當時正值1989年,新聞雜誌上鋪天蓋地都是計算機病毒比瘟疫還糟、是技術所能到達的邪惡之極的封麵報道。但雷卻從計算機病毒的簡單代碼中窺見了一個新科學的誕生:實驗進化與生態學。
為保護外部世界(和保證自己的計算機不會崩潰),雷用一台虛擬計算機來運行他的實驗。虛擬計算機是一種在真實計算機的潛意識深處模擬特定計算機的智能軟件。通過將那些可自我複製的小家夥們限製在這個影子計算機中,雷把它們與外界隔離,使自己在不危及主機的情況下,能夠對計算機內存這樣的重要功能胡亂折騰。“看了一年計算機手冊之後,我坐下來寫代碼。兩個月後,這小玩意兒跑起來了。在程序運行的頭兩分鍾裏,我就已經獲得了可以進化的生物。”
雷在他稱為“地球”的世界裏種下了他編寫的一個小玩意兒——80字節的程序代碼,並把它放入他的虛擬計算機的內存中。這個小家夥先是找到一塊80字節大小的空白內存空間,然後用一份自己的複製品占據這塊地盤,從而實現了自我複製。不消幾分鍾,內存裏就滿是80的複製品了。
雷增加了兩個重要功能,將這台施樂複印機般的複製機改造成一台進化機:他的程序在複製中偶爾會搞亂幾位代碼,他還賦予這些“生物”中的劊子手以優先權。簡言之,他引入了變異和死亡。
計算機科學家告訴過他,如果隨意改變計算機代碼(他的所有生物實際上都是代碼),改變後的程序可能無法正常運行,甚而使計算機崩潰。他們認為通過向編碼中隨機引入漏洞來獲得可運行的程序的概率太低了,他的方案無異於浪費時間。雷其實也知道,維持計算機運行所需的完美實在是太弱不禁風了——漏洞會殺死進程。不過,由於他的造物程序在他的影子計算機中運行,一旦變異產生一個嚴重“畸形”的東西,他的劊子手程序——他將其命名為“收割機”——就會將它殺死,而他的“地球”的其餘部分則繼續運轉。“地球”實際上是找出不能複製的漏洞程序,將其從虛擬計算機中拖將出去。
然而“收割機”會放過極少數有效變種,也就是說,那些碰巧形成一個真正的替代程序的變種。這些合法的變種能夠複製並產生其他變種。如果你像雷那樣將“地球”運行10億個計算機周期,在這10億次的機會中,將出現數量驚人的隨機產生的東西。為了讓係統更有活力,雷還為造出來的小東西們打上了年齡戳記,這樣一來,老一些的家夥就會死亡。“收割機既殺死最老的家夥,也殺死最搗蛋的家夥。”雷笑著說。
在“地球”的首輪運行中,隨機變異、死亡和自然選擇都起了作用。沒幾分鍾,雷就見證了一個生態係統的誕生——這個係統由那些新的生物組成,它們為搶奪計算機周期而競爭。競爭獎勵個頭小的家夥,因為它們需要的周期更少,而殘酷的達爾文進化論淘汰的則是貪婪的消耗者、體弱多病的物種和老家夥。物種79(比80少一個字節)是幸運的。它的工作卓有成效,很快就超過了80。
雷還發現了非常奇怪的東西——一種隻有45個字節的變種。它的代碼效率極高,數量上也超過了所有其他變種。“這個係統自我優化的速度之快令我震驚,”雷回憶說,“係統中的存活者有著越來越短的基因,我可以用圖把這個速度描繪出來。”
在對45的代碼做進一步考察時,雷驚奇地發現它是一隻寄生蟲。它隻包含了生存所需的代碼。為了繁殖,它“借用”了80的繁殖代碼來複製自己。隻要周圍有足夠的80宿主,45就會興盛起來。但是,如果在有限的範圍內45太多了,就不會有足夠的80提供複製源。隨著80的減少,45也減少了。這對舞伴跳著共同進化的探戈,進進退退,就像北部森林中的狐狸和兔子一樣。
“所有成功的係統都會吸引寄生蟲,這似乎是生命的普遍屬性。”雷提醒我說。在自然界寄生蟲如此常見,以至於宿主很快就共同進化出針對它們的免疫力。寄生蟲隨之進化出騙過那種免疫力的策略。結果宿主再共同進化出抵製它們的防禦能力。實際上這些行動並不是交替出現的,而是兩股持續相互作用的力量。
雷學會了用寄生蟲在“地球”中進行生態實驗。他把79裝到他的“培養液”裏,因為他覺得79可能對寄生蟲45免疫。的確如此。不過隨著79的興旺,第二種能夠捕食它們的寄生蟲進化出來。這一種有51字節長。當雷為它的基因排序時,他發現,45之所以能變成51,正是由一個“基因事件”所引起的:“7個出處已無從考究的指令取代了45中間段某處的一個指令,”把一個喪失能力的寄生蟲變成了強有力的新物種。但這還不算完——一個對51具有免疫力的新物種進化了出來,而這樣的過程還在繼續。
在運行了很長時間的“培養液”中,雷發現了以其他寄生蟲為宿主的超寄生蟲:“超寄生蟲就像是從你家的電線上偷電的鄰居。他們用你的電,你付電費,而你還蒙在鼓裏。”在“地球”裏,像45這樣的有機體發現自己無需“攜帶”大量代碼來複製自己,因為它們周圍有足夠的代碼。雷俏皮地說:“這就像我們利用其他動物的氨基酸一樣(在我們吃它們的時候)。”在進一步檢查中,雷發現超-超寄生蟲興旺起來,寄生升級到了第三重。他發現了“社交騙子”——這種生物利用兩個合作的超寄生蟲的代碼(“合作”的超寄生蟲彼此還相互偷竊!)。社會騙子需要相當發達的生態環境。至於超-超-超寄生蟲,雖然還沒看到,不過也許已經有了。在他的世界裏,這種不勞而獲的遊戲也許永無止境。 15.2 你力所不逮的,進化能行
雷所發現的“生物”是人類程序員無法編寫出來的。
“我從編寫80字節的東西開始,”雷回憶說,“因為那是我能拿出來的最佳設計了。我猜想或許進化能把它降到75字節左右,於是就讓程序運行了一整夜。結果第二天早上就出現了一個新東西——不是寄生蟲,而是某種能完全自我複製的東西——它隻有22字節!令我大惑不解的是,在沒有像寄生蟲那樣盜用別人指令的情況下,一個電腦病毒是怎樣僅通過22個指令就做到自行複製的呢?為了和他人分享這個新發現,我把它的基本算法發到網上。麻省理工學院一位計算機專業的學生看到了我的解釋,但不知怎麽卻沒有得到病毒22的代碼。他試圖手工重新創造它,但是他的最好成績也需要31條指令。當他得知我是在睡覺時得到22條指令的時候,他沮喪極了。”
人類力所不逮的,進化卻能做到。雷在一台顯示器上展示了22在培養液中繁殖倍增的蹤跡,以作為他的陳述的最佳詮釋:“想想看,隨機地改動程序竟然能勝過精雕細琢的手工編程,這聽上去挺荒謬的,可這就是一個活生生的例子。”這位旁觀者突然明了了,這些“沒腦子”的黑客具有的創造力是永無止境的。
因為病毒要消耗計算機周期,所以較小(指令集更短)的病毒就有一定的優勢。雷重寫了“地球”的代碼,使係統根據病毒大小按比例為其分配計算機資源,大病毒得到更多周期。在這種模式下,雷的病毒們所棲息的是一個不偏不倚的世界。正因為這個世界對大小病毒一視同仁,因此長期運行也許會更有意義些。有一次雷將它運行了150億個計算機周期。在大約第110億個周期左右,誕生了一種長度為36字節的病毒,它可是聰明得近乎狡詐了。它計算自己的真實尺寸,然後在“尾部”(我們姑且用這樣的稱謂吧)將長度值向左移了一位,在二進製中,這就相當於翻倍。靠著謊報自己的尺寸,病毒36神不知鬼不覺地竊取了病毒72的資源,這就意味著它得到了兩倍於實際所需的中央處理器時間。這個變種自然橫掃了整個係統。
也許湯姆·雷的電進化機最驚人的事情是它創造了性。沒人告訴它什麽是性,然而它還是發現了它。在一次實驗中,為了看看關閉變異功能會產生什麽結果,雷讓“培養液”在沒有外加錯誤的情況下運行。結果讓他大吃一驚,即便沒有程序變異,進化仍然發生了。
在真實的自然生活中,性是遠比變異更重要的變化來源。性,從概念上講,是遺傳重組——一些來自父親的基因和一些來自母親的基因結合成為後代的全新基因組。在“地球”中,寄生蟲有時會在無性繁殖中“借用”其他病毒的複製功能,而“收割機”有可能在這個過程中碰巧殺死了宿主,宿主原有的空間被新病毒占用。發生這種情況的時候,寄生蟲就會使用新病毒的部分代碼,以及“死去”病毒被打斷了的部分複製功能。由此產生的後代是個未經刻意變異而產生的天然的新組合。(雷還說這種古怪的繁殖“相當於和死人發生性關係!”)在雷的“培養液”裏,這種中斷式交配其實一直都在發生,但隻有當他關閉變異功能時,他才注意到這點。原來,不經意的重組本身就足以推動進化。死亡時生物所棲息的內存空間中就會有足夠的不規則性,而這種複雜性提供了進化所需的多樣性。從某種意義上說,係統進化出了變異。
對科學家而言,雷的人造進化機最令人欣喜之處在於,他的小世界展示的似乎是間斷平衡。在相對較長的時期裏,種群比例保持著一個相對穩定的局麵,隻是偶爾有物種滅絕或新物種誕生。接著,幾乎是一眨眼功夫,這種平衡就立刻被一陣翻江倒海般的新老物種交替給打斷了。對一個較短的時間來說,變化是狂暴而不受約束的。接著事情解決了,靜止和平衡再次成為主宰。化石研究顯示,這種形式在地球上的自然界中占壓倒優勢。靜止是常態;而變化總是突如其來。在進化的其他計算機模型中也能看到同樣的間斷平衡方式,比如克裏斯蒂安·林格倫的囚徒困境式的共同進化世界。如果人為進化反映了生物進化,你肯定想知道,如果雷讓他的世界永遠運行下去,會出現什麽狀況?他的病毒怪物會創造出多細胞嗎?
遺憾的是,雷從來沒有將他的世界以馬拉鬆的方式運行過,去看看幾個月或者幾年之後會發生些什麽。他還在不停地擺弄著他的程序,對其進行改進,以使之能夠收集長期運行所產生的海量數據(每天50兆字節)。他承認:“有時,我們就像一群有一輛車的男孩子。我們總是在車庫裏打開發動機罩,把引擎零件拿出來擺弄,但是我們幾乎從不開車,因為我們太執著於加大馬力了。”
事實上,雷正專注於開發一種新硬件,那應該是一種新技術。雷認為他可以將虛擬計算機和為它編寫的基本語言“燒製”進一塊計算機芯片——一塊進化用的矽片。這個現成的達爾文進化芯片就成了可以插進任何計算機的模塊,它會為你迅速繁殖東西。你可以演化出代碼,或子程序,或許甚至可能是整個軟件程序。“我發現這相當奇怪,”雷吐露道,“作為一個熱帶植物生態學家,我竟然搞起了計算機設計。”
達爾文進化芯片可能帶來的前景是美妙的。設想在你的個人計算機中就有一塊,而在你的計算機中使用的文字處理軟件是微軟的word。由於達爾文進化論常駐操作係統,word會隨著你的工作而進化。它會利用處理器的空閑周期,以緩慢的進化方式自我改善和學習,使自己適應你的工作習慣。隻有那些提高了速度和準確性的改變會保留下來。不過,雷深信應該將雜亂無章的進化與工作分割開。“你應該把進化與終端用戶分開,”他說。他設想在後台離線進行“數字耕牧”,這樣一來,進化中不可或缺的錯誤和失敗就不會為用戶所見;在用戶的使用過程中,進化也處於“休眠”狀態。
進化在市麵上也算不上天方夜譚了。今天你就能買到類似功能的電子表格模塊。它的名字就叫作“進化者”。“進化者”是蘋果電腦上的電子表格模板——非常複雜,密密麻麻有數百個變量和“假設”函數。工程師和數據庫專家們都使用它。
比如說,你有三萬名病人的醫療記錄。你可能很想了解一個典型患者的症狀。數據庫越大,想看到你存在特定位置的數據就越困難。大多數軟件都能計算平均值,但是憑這並不能抽取出一個“典型”患者。你想了解的是,在收集到的幾千種類別的數據中,哪一套量測值對最多數人群來說具有相似的意義。這是一個對海量交互變量進行優化的問題。對任何生物來說,這都是一個再熟悉不過的問題:如何將成千上萬個變量所輸出的結果最大化呢?浣熊必須確保自己的生存,但是有上千種變量(腳的大小,夜視能力,心率,皮膚顏色等)可以隨時間推移而發生變化,且一個參數的改變會引起另一個參數的改變。要想穿過這片包含各種可能結果的廣闊空間,並且還留有些許登頂的希望,唯一的方法就是進化。
“進化者”軟件對最大多數患者的最寬泛的病曆進行優化。它嚐試給出一名典型患者的基本描述,然後檢查有多少患者符合這份描述,再對病曆進行多緯度改進,看看是否有更多患者與之相符,然後修改、選擇、再修改,直至最大數量的患者符合這份描述。這項工作特別適合進化。
計算機科學家把這個過程叫作“爬山法”。進化程序試圖在包含最優解的形式庫中向頂峰攀升。通過持續不斷地向更好的解決方案推進,程序一直向上攀登,直到不能爬得更高。在那一點上,它們就到達了峰頂——一個極大值。然而始終有個問題:這個峰頂是周圍最高的嗎?或者,程序是否被困在一個局部高點,與旁邊高得多的峰頂隻有一條峽穀之隔,卻又無從回退?
找到登上一處高點的路徑並不難。自然界中的進化和計算機中的進化程序所擅長的,是在山巒起伏、一山更比一山高的地形中,爬到全局意義上的至高點——主峰。 15.3 並行實施的盲目行為
從外表看很難判斷約翰·霍蘭德的真實年齡。他曾經擺弄過世界上最早的計算機,現在則任教於密歇根大學。他首次提出了一種數學方法,用以描述進化所具備的優化能力,並且該方法可以輕鬆地在計算機上編程實現。因其數學形式在某種程度上類似於遺傳信息,霍蘭德把它們稱為遺傳算法[3]。
和湯姆·雷不同,霍蘭德從性開始入手。霍蘭德的遺傳算法選取兩組類似於dna的計算機代碼,這兩組代碼在問題求解上都有不錯的效果,然後以交配互換的方式將它們隨機重組,看看新的代碼會不會表現得更好一點。在設計係統時,和雷一樣,霍蘭德必須克服一個懸而未決的問題:對於任何隨機生成的計算機程序來說,往往都談不上什麽好壞,而是根本就不靠譜。從統計學的意義上說,對可用代碼做隨機變異,結局注定是屢戰屢敗。
早在20世紀60年代初理論生物學家就發現,與突變相比,交配所產生的實用個體比例更高,因而以其為基礎的計算機進化也更穩定和有生命力。但是,單靠有性交配,其結果很受局限。20世紀60年代中期,霍蘭德發明了遺傳算法;遺傳算法中起主要作用的是交配,但突變也是幕後策劃者之一。通過將交配與突變結合在一起,係統變得靈活且寬泛。
和其他具有係統觀念的人一樣,霍蘭德認為大自然的工作和計算機的任務是相似的。“生物體是高明的問題解決者,”霍蘭德在他的工作總結中寫道,“它們所展示出來的多才多藝使最好的計算機程序都為之汗顏。”這個論斷尤其令計算機科學家們感到難堪。他們可能經年累月地在某個算法上絞盡腦汁,而生物體卻通過無目標的進化和自然選擇獲得了它們的能力。
霍蘭德寫道,進化的方法“排除了軟件設計中最大的一個障礙:預先規定問題的所有特征”。如果你有許多相互矛盾而又彼此關聯的變量,而目標定義又很寬泛,可能有無數個解,那麽進化正是解決之道。
正如進化需要大量的個體才能發揮效用一樣,遺傳算法也要炮製出數量龐大的代碼群,並且這些代碼們同時進行處理數據和發生變異。遺傳算法實際上是一大群略有差別的策略,試圖在崎嶇的地形上同時攀爬不同的峰頂。由於大量代碼並行作業,因而能同時訪問該地形的多個區域,確保它不會錯過那真正的高峰。
隱含的並行主義是進化過程確保其不單攀上高峰、而且是最高峰的魔力所在。如何找出全局最優值?通過同時考察整個地貌的每一寸土地。如何在複雜係統中對上千個相互衝突的變量做出最佳平衡?通過同時嚐試上千種組合。如何培養出能在惡劣條件下生存的生物體?通過同時投入一千個略有差異的個體。
在霍蘭德的算法中,那些“處在最高處”的代碼們彼此交配。換句話說,“地勢高”的區域,交配率就高。這便將係統的注意力集中到最有前途的區域,同時,對那些沒有希望的地區,係統則剝奪了它們所占用的計算周期。這樣,並行主義既做到了“天網恢恢,疏而不漏”,又減少了尋找頂峰所需要的代碼數量。
並行是繞過隨機變異所固有的愚蠢和盲目的途徑之一。這是生命的極大諷喻:一個接一個地重複盲目行為隻能導致更深層的荒謬,而由一群個體並行執行的盲目行為,在條件適合時,卻能導出所有我們覺得有趣的東西。
約翰·霍蘭德在20世紀60年代研究適應機製時發明了遺傳算法。而直到20世紀80年代末,他的成果都沒有引起任何關注,除了12個異想天開的計算機研究生。其他幾個研究者,如工程師勞倫斯·福格爾[4]和漢斯·布雷默曼[5],在20世紀60年代獨立開展了種群的機械式進化研究;現在密歇根州韋恩州立大學工作的計算機科學家邁克爾·康拉德,在20世紀70年代也從對適應的研究轉向了為種群進化建立計算機模型;他們都受到了同樣的冷落。總之,這項工作在計算機科學領域裏可以說是默默無聞,而生物學界對它更是一無所知。
在霍蘭德關於遺傳算法和進化的書《自然與人工係統中的適應》(adaptation in natural and articial systemss)於1975年問世前,隻有兩三個學生寫過關於遺傳算法的論文。直到1992年再版時,這本書隻賣出2500本。在1972年至1982年間,整個科學界關於遺傳算法的文章不超過二十幾篇,更遑論有什麽對計算機進化頂禮膜拜的追隨者了。
生物學界對此缺乏興趣尚情有可原(但也不是什麽光彩的事情);生物學家認為自然界太複雜,難以用當時的計算機來展現其真實全貌。而計算機科學對此興趣寥寥,就莫名其妙了。我在為本書做調研時經常感到困惑,像計算進化這樣重要的方法為什麽竟無人理睬呢?現在我相信,這種視而不見的根源,在於進化所固有的看上去雜亂無章的並行性,以及它與當時盛行的計算機信條——馮·諾依曼串行程序——在根本上的抵觸。
人類的第一台電子計算機叫作電子數值積分計算器[6],是1945年為解決美軍的彈道計算問題而研發的。電子數值積分計算器是一個由1.8萬支電子管、7萬個電阻和1萬個電容構成的龐然大物。它需要6000個手動開關來設置指令,然後運行程序;各個數值的計算實際上是以並行方式同時進行的。這對編程來說是個負擔。
天才的馮·諾依曼從根本上改變了這種笨拙的編程係統。電子數值積分計算器的接替者——離散變量自動電子計算機[7],是第一台可運行存儲程序的通用計算機。馮·諾依曼24歲那年(1927年)發表了他的第一篇關於數學邏輯係統和博弈論的學術論文,自那時起,他就一直在考慮係統邏輯問題。在與離散變量自動電子計算機小組共事時,為了應付計算機編程在求解多問題時所需的複雜運算,他發明了一種方法來控製這些運算。他建議將問題分成離散的邏輯步驟,類似於長除法的求解步驟,並把求解過程的中間值臨時儲存在計算機中。這樣一來,那些中間值就可以被看成是下一部分問題的輸入值。通過這樣一個共同演化的循環(現在稱為子程序)來進行計算,並將程序邏輯儲存在計算機中以使它能與答案交互,馮·諾依曼能將任何一個問題轉化成人腦所能理解的一係列步驟。他還發明了描述這種分步線路的標記法:即現在大家所熟悉的流程圖。馮·諾依曼的串行計算架構——一次執行一條指令,其普適性令人驚歎,並且非常適合人類編程。1946年馮·諾依曼發表了這個架構的概要,隨後所有的商用計算機都采用了這個架構,無一例外。
1949年,約翰·霍蘭德曾效力於離散變量自動電子計算機的後續項目“旋風計劃”[8]。1950年,他參加了ibm“國防計算機”的邏輯設計團隊,這款機型後來演變成ibm 701機,是世界第一部商用計算機。當時的計算機有房間那麽大,耗電量驚人。到了50年代中期,霍蘭德加入了一個帶有傳奇性的圈子,裏麵都是些思想深邃之人,他們開始討論人工智能的可能性。
當赫伯特·西蒙和艾倫·紐厄爾[9]這樣的學界泰鬥把學習看作高貴和高等的成就時,霍蘭德卻把它看作光鮮外表下的低端適應。霍蘭德認為,如果我們能理解適應性尤其是進化的適應性,就可能理解甚至模仿有意識的學習。盡管其他人有可能意識到進化與學習之間的相似之處,然而在一個快速發展的領域裏,進化並不太為人所關注。
1953年,霍蘭德在密歇根大學數學圖書館漫無目的地瀏覽時,偶然發現了一卷由r.a.費希爾[10]寫於1929年的《自然選擇的遺傳理論》(gical eory of natural selectionn),頓時大受啟發。達爾文引領了從對生物的個體研究到種群研究的轉向,而把種群思維轉變為定量科學的則是費希爾。費希爾以一個隨時間推移而進化的蝴蝶族群為對象,將其看作是一個將差別信息並行傳遍整個族群的整體係統。他提出了控製信息擴散的方程。通過駕馭自然界最強大的力量——進化,以及人類最強有力的工具——數學,費希爾單槍匹馬開創了一個人類知識的新世界。“我第一次意識到能對進化進行有意義的數學運算。”霍蘭德回憶起那次奇妙邂逅時說。“那個想法對我非常有吸引力。”霍蘭德如此醉心於將進化作為一種數學來處理,以至於(在複印機還沒有問世的當時)拚命想搞到絕版的全文。他懇求圖書館把書賣給他,但沒有成功。霍蘭德吸取了費希爾的見解,又將其升華為自己的構想:一群協處理器,在計算機內存的原野上,如蝴蝶一般翩翩起舞。
霍蘭德認為,人工學習其本質上是適應性的一個特例。他相當確定能在計算機上實現適應性。在領悟了費希爾關於進化是一種概率的洞見後,霍蘭德著手嚐試把進化編為代碼輸入機器。
在嚐試之初,他麵臨著一個兩難處境:進化是並行的處理器,而所有可用的電子計算機卻都是馮·諾依曼式的串行處理器。
在把計算機變為進化平台的迫切願望下,霍蘭德做了唯一合理的決定:設計一台大規模並行計算機來運行他的實驗。在並行運算中,許多指令同時得到執行,而不是一次隻執行一個指令。1959年,他提交了一篇論文,其內容正如其標題所概括,介紹了“能同時執行任意數量子程序的通用計算機”[11],這個機巧裝置後來被稱為“霍蘭德機”。而等了差不多30年,一台這樣的計算機才終於問世。
在此期間,霍蘭德和其他計算進化論者不得不依賴串行計算機來培育進化。他們使出渾身解數在快速串行處理器上編程模擬一個緩慢的並行過程。模擬工作卓有成效,足以揭示出真正並行過程的威力。 15.4 計算中的軍備競賽
直到20世紀80年代中期,丹尼·希利斯才開始建造第一台大規模並行運算計算機。其實早在幾年前,希利斯就已是一個計算機科學專業的神童了。他的那些惡作劇和黑客事跡即使在麻省理工這個號稱黑客鼻祖的學校中也頗具傳奇性。希利斯以其慣有的清楚明了向作家史蒂文·列維[12]總結了馮·諾依曼計算機的瓶頸所在:“你為計算機輸入的知識越多,它運行得越慢。而對人來說,你給他的知識越多,他的頭腦越敏捷。所以說我們處在一種悖論之中,你越想讓計算機聰明,它就變得越愚笨。”
希利斯真正想做的是生物學家,而他理解複雜程序的特長卻將他吸引到麻省理工學院的人工智能實驗室。在那裏,他最終決定嚐試設計一台“會成為我的驕傲”的思考型計算機。他把設計一個無法無天、三頭六臂的計算機怪獸的開創性想法歸功於約翰·霍蘭德的啟發。最終希利斯領導的小組發明了第一台並行處理計算機——“連接機”。1988年,每台“連接機”可賣得一百萬美元高價,賺得盆滿缽滿。有了機器,希利斯就開始認真地從事計算機生物學研究了。
“我們知道,隻有兩種方法能製造出結構極其複雜的東西,”希利斯說,“一個是依靠工程學,另一個是通過進化。而在兩者中,進化能夠製造出更加複雜的東西。”如果靠設計不能製造出令我們驕傲的計算機,那我們就不得不依靠進化。
希利斯的第一台大規模並行“連接機”能使64000個處理器同時運行。他迫不及待地要啟動進化,於是給計算機注入了64000個非常簡單的程序。和霍蘭德的遺傳算法或雷的“地球”一樣,每一個個體都是可以發生變異的一串符號。不過,在希利斯的“連接機”中,每個程序都有專門的處理器來對其進行處理。因此,種群能極其迅速地做出反應,而其數量之多,是串行計算機根本不可能做到的。
在他的培養液裏,最初的“小家夥”都是些隨機的指令序列,但是經過幾萬代進化,它們就變成能將一長串數字進行排序的程序(排序體)。大多數較大型的軟件都會包含這樣的排序例程。多年來,在計算機科學領域有無數的人力花費在設計最有效的排序算法上。希利斯讓數千個排序體在計算機中增殖,隨機變異,偶爾進行有性基因互換。然後,正如通常的進化策略一樣,他的係統會測試這些程序,終止那些效率低下的,隻有最短的(最好的)排序體才有複製的機會。經過上萬代的循環後,他的係統培育出一種程序,它幾乎和由人類程序員編製的最佳排序程序一樣短。
接著,希利斯重新開始試驗,不過這次有一個很重要的不同:允許在對進化的排序體進行測試時,測試程序(測試體)本身也可以發生變異。用來測試的字符串可以變得更複雜,以抵製那些簡單的排序體。排序體必須瞄準一個移動的目標,而測試體則需要躲避一支會轉向的利箭。事實上,希利斯將測試用的數字列表從一個僵化被動的環境轉變成了一個積極主動的有機體。就像狐狸和野兔、黑脈金斑蝶和馬利筋一樣,排序體和測試體也構成了經典的共同進化關係。
希利斯骨子裏還是個生物學家,他把不斷變異的測試體看成是一個試圖幹擾排序程序的寄生生物,把他的世界看成是一場軍備競賽——寄生蟲進攻,宿主防衛,寄生蟲反攻,宿主防守反擊,如此循環。傳統觀念認為,這種膠著的軍備競賽是在愚蠢地浪費時間,或難逃陷入泥潭的厄運。然而希利斯發現,寄生蟲的引入並沒有妨礙排序體的發展,恰恰相反,它加快了進化的速率。寄生蟲式的軍備競賽也許很醜陋,但它們大大加快了進化的速度。
和湯姆·雷一樣,丹尼·希利斯也發現進化能超越通常的人類能力。在“連接機”中發展起來的寄生蟲,刺激了排序體去設計更有效的解決辦法。在共同進化了1萬個周期之後,希利斯的小怪物們進化出一種計算機科學家們前所未見的排序體。最具諷刺性的是,它剛好比人類設計的最短算法少一步。看似愚鈍的進化設計出了一個獨具匠心又非常有效的軟件程序。
“連接機”中的單個處理器很愚蠢,智力跟一隻螞蟻差不多。不管花上多少年時間,單個處理器都無法獨自想出任何問題的獨創性解決辦法。即使把64000個處理器串到一起也好不了多少。
而當64000個又蠢又笨的螞蟻大腦形成相互聯結的龐大網絡時,它們就構成了一個進化的種群,看起來就像大腦裏的一大堆神經元。那些使人類精疲力盡的難題,卻往往在這裏得到絕妙的解法。這種“海量連接中湧現出秩序”的人工智能方法便被冠以“連接主義”的名號。
早期認為進化與學習緊密相關的直覺又被連接主義重新喚醒了。探索人工學習的連接主義者通過將愚鈍的神經元聯結成巨大的網絡而大展拳腳。他們研發了一種基於聯結的並行處理方法——在虛擬或硬件實現的並行計算機上運行——與遺傳算法相似,它能同時進行大量的運算,不過它的評估機製更加精密(更聰明)。這些大大“開竅”了的網絡被稱為神經網絡。迄今為止,神經網絡在產生“智能”方麵所取得的成就還很有限,盡管它們的模式識別能力非常有用。
然而,一切事物均來自低等連接這一理念著實令人驚詫。網絡內部究竟發生了什麽神奇變化,竟使它具有了近乎神的力量,從相互連接的愚鈍節點中孕育出組織,或是從相互連接的愚笨處理器中繁育出程序?當你把所有的一切聯結到一起時,發生了什麽點石成金的變化呢?在上一分鍾,你有的還隻是由簡單個體組成的烏合之眾;在下一分鍾,聯結之後,你卻獲得了湧現出來的、有用的秩序。
曾有那麽一瞬間,連接主義者猜想:也許創造理智與意識所需要的一切,不過就是一個夠大的互相連接的神經元網絡,理性智能可以在其中完成自我組裝。甫一嚐試,他們的這個夢就破滅了。
但是人工進化者們仍然在追尋著連接主義的夢想。隻是,和著進化的緩慢節奏,他們會更有耐心。而這緩慢的、非常緩慢的進化節奏著實令我不安。我這樣向湯姆·雷表達我的憂慮:“現成的進化芯片和並行進化處理機讓我有些焦慮,因為進化需要的時間多得令人難以置信。這個時間從何而來?看看大自然的運行速度,想一下,在我們談話期間,有多少微小分子被吸附到一起。大自然的並行速度之快、規模之廣之大令人難以置信,而我們卻打算嚐試超越它。在我看來,根本就沒有足夠的時間能做成這件事。”
雷回答道:“哦,我也有同樣的焦慮。但另一方麵,讓我驚訝的是,在我的係統裏即使僅靠一個虛擬處理器,進化也能進行得如此之快。再者,時間是相對的。進化的時間尺度是由進化中一代的時間跨度來決定的。對人類來說,一代是30年,但對我的小東西們來說,一代就是幾分之一秒。而且,當我扮演上帝時,我能加快整體的突變率。我不敢肯定,但是也許我可以在計算機上得到更多的進化。”
在計算機上進行進化還有其他的原因。比如,雷能記錄每個“小東西”的基因組序列,保存完整的人口統計和種群譜係。它生成大量數據,而在現實世界中根本無法收集這些數據。盡管隨著人造世界複雜性的激增,提取信息的複雜性和成本也會激增,但做起來仍可能比無法掌控的有機世界更容易些。正如雷告訴我的那樣,“即使我的世界變得像真實世界一樣複雜,但我是上帝,我無所不知。我能獲取任何我感興趣的信息而不打擾它,也不用走來走去踩壞植物。這是一個根本的不同。” 15.5 駕馭野性的進化
回到18世紀,本傑明·富蘭克林很難讓朋友們相信,他實驗室裏產生的微弱電流與荒野中發生的雷電本質上是一回事。部分原因是由於他的人造電火花與撕裂天空的巨型閃電相比根本不在一個級別上,但更主要的原因是,那些旁觀者們認為,福蘭克林所聲稱的再現自然有違常理。
今天,湯姆·雷也難以讓他的同事們信服,他在實驗室裏人工合成的進化與塑造自然界動植物的進化本質上是相同的。他的世界裏幾個小時的進化與蠻荒大自然中數十億年的進化在時間尺度上的差別也隻是部分原因;最主要的是,懷疑者們也認為,雷所聲稱的再現一個難以明了的自然過程是有違常理的。
在富蘭克林之後200年,人工生成的可駕馭和可度量的閃電通過電線被導入建築物和工具,成為社會尤其是數字社會中最重要的組織力量。再200年後,可駕馭和可度量的人工適應也將被導入各種機械設備,成為我們社會的主要組織力量。
還沒有一個計算機科學家可以合成出符合預期的、無比強大的、能帶來翻天覆地變化的人工智能。也沒有一個生物化學家能夠創造出人工生命。然而,雷和一些人已經捕捉到了進化的一角,並按照他們各自的需求來再現進化。許多技術人員相信,星星之火必將燎原,我們所夢寐以求的人工生命和人工智能都將由此而來。與其製造,不如培育。
我們已經運用工程技術造出了盡可能複雜的機器。如今,我們所麵對的項目——數千萬行代碼的軟件程序,覆蓋全球的通訊係統,必須適應迅速變化的全球購買習慣並在幾天內更新設備的工廠,價廉物美的機器人——其複雜度隻有進化才能搞定。
由於進化是緩慢的、無形的和冗長的,因而在這個快節奏的、咄咄逼人的人造機器世界裏,進化恍若一個難以察覺的幽靈。但我更願意相信,進化是一種能被容易地轉化為計算機代碼的自然而然的技術。正是進化與計算機之間的這種超級兼容性,將推動人工進化進入我們的數字生活。 15.6 進化聰明分子的愚鈍科學家
不過,人工進化不僅限於矽片。隻要是工程方法一籌莫展的地方,都可以導入進化。生物工程這種尖端領域已經采用了合成進化技術。
這是一個來自真實世界的問題。你需要一種藥物來抗擊剛剛分離出機理的疾病。把這個疾病機理看作是一把鎖。你所需要的是一把正確的鑰匙——一種藥,來打開這把鎖。
有機分子的構成非常複雜。它們由數千個原子組成,其排列方式多達數十億種。僅僅知道一種蛋白質的化學成分對我們了解其結構沒有太大幫助。長長的氨基酸鏈層層疊疊繞成一團,而熱點[13]——蛋白質的活躍部分——恰好處於外側麵的合適位置上。這種折疊蛋白質的方式就好比將一條一英裏長、上麵用藍色標記了6個點的繩子繞成一團,使6個藍色的點都落在不同的外側麵上。纏繞的方式不計其數,但是符合要求的卻沒有幾個。你甚至無從知道一種方式是否接近答案——除非你已經快完成了它。變化是如此之多,縱使窮盡地老天荒也無法一一試遍。
製藥商們通常有兩種手段來對付這種複雜性。過去,藥劑師靠的是碰運氣。他們試遍所有從自然中發現的化學物質,看看哪一個可以解開這把給定的鎖。一般都會有一兩種天然化合物能夠部分地發揮效用——這也算是獲得了鑰匙的一部分。今天,在工程學時代,生物化學家們試圖破譯基因代碼和蛋白質折疊之間的路徑,看是否能通過工程方法設計出構建分子所需的步驟。盡管有些許成功的例子,但蛋白質折疊和基因路徑仍然因過於複雜而難以控製。因而,這種被稱為“合理化藥物設計”的邏輯方法,實際上已經撞上了工程方法所能處理的複雜性的極限。
自20世紀80年代末起,世界各地的生物工程實驗室都開始致力於完善另一種我們用來創造複雜體的工具——進化。
簡單地說,進化係統產生出數十億隨機分子,並用來試著開鎖。在這數十億個平凡的候選者中,也許隻有一個分子的一部分與這把鎖的6個點之一相合。這把“親和”鑰匙便被保留下來,其餘的則被無情地淘汰。接著,由幸存下來的“親和”鑰匙又繁育出數十億個新變種,同時與鎖相合的那個點保持不變(稱為綁定),再被用來試那把鎖。也許此時又能發現一把可以匹配兩個點的“親和”鑰匙。這把鑰匙就作為幸存者保留下來,其餘的則死去。幸存者繁育出數十億個變種,最般配的後代將存活下去。這種淘汰-變異-綁定的過程重複幾代後,這個分子繁育程序就會找到一種藥——或許是救命藥,與鎖的所有點都相契合。
幾乎任何一種分子都能被進化。譬如說,生物技術人員能進化出一種改進版的胰島素。他們將胰島素注入兔子體內,兔子的免疫係統會對這種“毒素”產生抗體(抗體是毒素的互補構型[14])。接下來,將這種抗體提取出來,注入進化係統。在進化係統中,抗體就好比是測試用的鎖。經過幾代進化之後,生物技術人員可以得到抗體的互補構型,實際上也就是胰島素的替代版。這種替代版極具價值。天然藥物的替代品具備諸多優勢:它們可能更小;更容易注入身體;副作用更小;更容易製造;或靶向更精準。
生物進化者們還可以進化出一種對抗肝炎病毒的抗體,然後再進化出一種與抗體相配的仿肝炎病毒。被選中的病毒並非完美的變種,而是缺失了一些可引發致命症狀的活性點。這種有缺陷、無能力的替代品就是所謂的疫苗。因而,疫苗也可以通過非工程的方法進化出來。
所有藥物製造的常規邏輯在進化方法麵前都不再適用。進化出來的分子與合理化設計出來的藥物在效果上並無二致。唯一不同的是,我們對其功效的原理和方式一無所知。我們隻知道它通過了所有的測試。這些發明出來的藥物已經超出了我們的理解力,它們是“非理性設計”的產物。
藥物進化允許研究人員不明就裏,而進化本身卻慢慢聰明起來。印地安那州立大學的進化生物化學家安德魯·埃林頓(andrew ellington)告訴《科學》雜誌,在進化係統中“要讓分子告訴你有關它的事情,因為它比你更了解它自己。”
繁育藥物可以使醫學受益。但藥物與軟件不同。我們也許可以繁育軟件,然後將係統交到它的手裏,任由其自行繁育,走向無人知曉的境界。但我們能否讓分子也走上這條不知通往何處的進化之路呢?
答案是肯定的,但這也會是一項艱巨的任務。湯姆·雷的電進化機偏重於處理可遺傳的信息,卻忽略了機體;而分子進化則偏重於機體,卻忽略了可遺傳的信息。單純的信息本身很難消除,而沒有死亡就沒有進化。肌肉和血液之所以對進化非常有幫助,正是因為機體提供了一個讓信息死去的便捷方式。任何能將可遺傳信息與可消亡機體合二為一的係統都具備了進化係統的要素。
聖地亞哥的生物化學家傑拉爾德·喬伊斯研究的是早期生命化學。他提出了一種簡單的方法,能夠將信息和機體這對進化的雙重本質融入到一個強健的人工進化係統中:他在一個試管裏再現了可能是地球生命的早期階段——“核糖核酸[15]世界”。
核糖核酸是非常精密的分子係統。它並不是最早的生命係統,但地球生命發展到某個階段幾乎必然成為核糖核酸生命。喬伊斯說:“生物學中的一切跡象都表明,39億年前的地球是由核糖核酸來唱主角。”
核糖核酸有一個獨一無二的優勢,是我們所知的任何其他係統都不具有的。它能同時兼任機體和信息兩個角色——既是表現形式,又是內在成因;既充當信使,又是信息。一個核糖核酸分子既要擔當起與世界互動的職責,又要完成延續世界的重任,至少要把信息傳遞給下一代。盡管身負重任,核糖核酸仍然是一個極為緊湊的係統,開放式的人工進化正可以由此展開。
斯克裏普斯研究所座落在加利福尼州聖地亞哥市附近的海邊,是一座雅致時髦的現代化實驗室。在這裏,傑拉爾德·喬伊斯帶著一小群研究生和博士後進行他的進化實驗。在塑料試管的底部有少許液滴,體積還趕不上頂針大小,這就是他的核糖核酸世界。幾十支這樣的試管放在冰桶裏,需要進化的時候,就把它們加熱到身體的溫度。一旦暖和起來後,核糖核酸能在一小時內產生出十億個副本。
“我們所擁有的,”喬伊斯指著一個小試管說,“是一個大型的並行處理器。我之所以選擇生物進化而不是計算機模擬,原因之一就是在地球上,至少在不久的將來,還沒有計算機能為我提供1015個並行的微處理器。”試管底部的液滴在尺寸上與計算機芯片上的智能部分大體相當。喬伊斯進一步闡述道:“實際上,我們的人工係統甚至比自然進化還要好,因為沒有多少自然係統能讓我們在一小時內產生1015個個體。”
自維持的生命係統除了能帶來智能革命外,喬伊斯認為進化還可以在製造化學品和藥品上帶來商業利潤。在他的想象中,分子進化係統能夠每天24小時、一年365天不停運轉。“你給它下達一項任務,並告訴它,在搞清楚如何將分子a變成分子b之前,不要離開工作間。”
喬伊斯一口氣說出了一大串專門從事定向分子進化[16]研究的生物技術公司(吉萊德[17]、ixsys[18]、nexagen[19]、osiris[20]、selectide[21],以及達爾文分子公司)。他的名單中還不包括那些已經頗具規模的生物技術公司,如基因泰克公司[22],該公司不僅從事定向進化技術的前沿研究,也進行合理化藥物設計。達爾文分子公司主要專利的持有人是研究複雜性的科學家斯圖爾特·考夫曼,該公司募集了數百萬美元來利用進化設計藥物。諾貝爾獎得主、生物化學家曼弗雷德·艾根[23]稱,定向進化是“生物技術的未來”。
然而,這是真正的進化嗎?它與那個帶給我們胰島素、眼睫毛和浣熊的進化是一回事麽?沒錯,這就是進化。“我們通常所說的進化是達爾文進化,”喬伊斯告訴我,“不過在另一種進化中,選擇壓力[24]是由我們來決定的,而不是自然,因此我們稱其為定向進化。”
定向進化是另一種監督式學習,另一種遍曆博爾赫斯圖書館的方法,另一種繁育。在定向進化中,選擇是由培育者引導的,而非自然發生的。 15.7 死亡是最好的老師
戴維·艾克利是貝爾通信研究所[25]神經網絡和遺傳算法領域的研究員。我偶然間了解到了艾克利對進化係統一些最獨到的看法。
艾克利是個壯得像頭熊、滿嘴俏皮話的家夥。他和他的同事邁克爾·利特曼[26]製作了一段關於人工生命世界的搞笑視頻,並在1990年第二屆人工生命大會上播放出來,惹得在場的250位嚴肅的科學家們哄堂大笑。他的“造物”實際上就是些代碼片斷,和經典的遺傳算法沒有多大區別,但是,他用滑稽的笑臉來表示這些代碼片段,讓它們四處遊動相互啃咬,或者撞上代表邊界的牆壁。聰明的活下來,愚蠢的則死掉。和其他人一樣,艾克利發現,他的世界能夠進化出對環境異常適應的有機體。成功的個體非常長壽——按其所在世界的時間尺度衡量的話,能活25000“天”。這些家夥把係統給琢磨透了。它們知道如何用最小的努力來獲取自己所需的東西,也知道如何遠離麻煩。具有這種基因的“生物”,不僅個體很長壽,而且由其組成的種群也世代興旺。
在對這些“街霸”的基因進行了一番研究後,艾克利發現它們有些資源尚未充分利用,這使得他覺得自己可以像神一樣有番作為:通過改進它們的染色體,利用上這些資源,使它們更加適應他為它們搭建的環境。於是,他修改了它們進化後的代碼(這個舉動實際上相當於早期的虛擬基因工程),再把它們放回到他的世界。作為個體,它們能力超強,脫穎而出,適應力超過了以往的任何前輩。
然而,艾克利注意到,它們的種群數目總是低於自然進化而來的那些家夥。作為一個群體來說,它們活力不足。盡管從未絕跡,但它們總是瀕臨滅絕。艾克利認為,由於數目太少,這個物種的繁衍不會超過300代。也就是說,盡管手工改進的基因能夠最大限度地適合個體,但從對整個族群有利的角度看,卻不如那些自然成長起來的基因。此時此刻,在這午夜黑客的自釀世界中,一句古老的生態學格言第一次得到了明證:對個體而言最好的,對物種而言卻不一定。
“我們弄不明白從長遠看到底什麽才是最好的,這點讓人很難接受。”艾克利在人工生命會議上的一席話贏得了一片掌聲,“但是我想,嘿,這就是生命!”
貝爾通信研究所之所以允許艾克利從事他的芥子世界的研究,是因為他們認識到進化也是一種計算。貝爾通信研究所曾經而且現在也一直對更好的計算方法很感興趣,尤其是那些基於分布式模型的方法,因為電話網就是一個分布式計算機。如果進化是一種有效的分布式計算,那麽是否還有其他的方法?如果可以的話,我們又能對進化技術做出怎樣的改進或變化呢?借用我們常用的那個圖書館/空間的比喻,艾克利滔滔不絕地說道:“計算的空間龐大得令人難以置信,我們隻不過探索了其中非常微小的一些角落。我現在做的,以及我想進一步做的,是擴展人類認識到的計算的空間。”
在所有可能的計算類型中,艾克利最感興趣的是那些與學習有關的過程。“強學習”是一種學習方式,它需要聰明的老師。老師會告訴學生應該知道些什麽,而學生則分析信息並將其儲存在記憶中。不太聰明的老師則通過不同的方法教學。她對所要教的東西本身也許並不了解,但是,她能告訴學生什麽時候猜出了正確答案——就像代課教師給學生測驗打分一樣。如果學生猜出了部分答案,老師可以給出“接近”或“偏離”的暗示,幫助學生繼續探索。這樣一來,這位不太聰明的老師就可能生成其本身所不具備的知識。艾克利一直在推動對“弱學習”的研究,他認為這是一種讓計算空間最大化的方式:利用最少的輸入信息,獲取最多的輸出信息。“我一直在試圖找出最愚笨、最孤陋寡聞的老師,”艾克利告訴我,“我想我找到了。答案是:死亡。”
死亡是進化中唯一的老師。艾克利的使命就是查明:隻以死亡為老師,能學到什麽?我們還不是很清楚答案,但有些現成的例證:翱翔的雄鷹,鴿子的導航係統,或白蟻的摩天大樓。找到答案需要些時間。進化是聰明的,但同時又是盲目和愚笨的。“我想象不出比自然選擇更笨的學習方法了,”艾克利說道。
在所有可能的計算和學習的空間中,自然選擇占據了一個特殊的位置,它是一個極點,在這個點上,信息傳遞被最小化。它構成了學習和智能的最低基線:基線之下不會有學習產生,基線之上則會產生更加智能、更加複雜的學習。盡管我們仍然不能完全理解自然選擇在共同進化世界中的本質,但它依然是學習的基礎熔點。如果我們能夠給進化一個度量值的話(我們還不能),就可以以此為基準評判其他形式的學習。
自然選擇躲藏在許多表象之下。艾克利是對的;如今計算機科學家們都意識到,計算方式有許多種——其中許多是進化的方式。任何人都知道,進化和學習的方式可能有數百種;不論哪種策略,實際上都是在對圖書館或空間進行搜索。“傳統人工智能研究的閃光思想——也是唯一思想——就是‘搜索’,”艾克利斷言道。實現搜索的方法有很多種,對自然生命中起作用的自然選擇隻是其中的一種。
生物意義上的生命是與特殊的硬件綁定在一起的,這就是以碳為基礎的dna分子。這個特殊的硬件限製了自然選擇所能使用的搜索方法。而有了計算機這個新硬件,特別是並行計算機,許多新的自適應係統得以問世,全新的搜索策略也得以應用。例如,生物dna的染色體無法將自己的代碼向其他生物體的dna分子“廣而告之”,以便它們獲得信息並改變其代碼,而在計算機環境中,你就能做到這一點。
戴維·艾克利和邁克爾·利特曼都是貝爾通信研究所認知科學研究組的成員。他們著手在計算機上構建一個非達爾文的進化係統。他們選擇了一個最合邏輯的方案:拉馬克進化,也即獲得性遺傳[27]。拉馬克學說很有吸引力。直覺上,它遠比達爾文進化更有優勢,因為按道理來說有用的變異能更快地進入基因序列。然而,它的計算量之大很快就讓滿懷憧憬的工程師們明白,構造這樣一個係統是多麽不現實。
如果一名鐵匠需要凸起的肱二頭肌,他的身體該怎樣倒推出基因上所需的變化呢?拉馬克係統的缺陷在於,對於任何一個有利的變化,都需要回溯到胚胎發育期的基因構成。由於生物體的任何變化都可能由多個基因引起,或者是在身體的發展過程中由多個相互作用的指令引起。任何外在形式的內在因果都是一張錯綜複雜的網絡,理清這個網絡所需的追蹤係統其複雜性與這個生物體本身相比也不惶多讓。生物學上的拉馬克進化受困於一條嚴格的數學定律:求多個質數的乘積極其容易,但分解質因素則異常困難。最好的加密算法正是利用了這種不對稱的難度。拉馬克學說之所以沒有在生物界中真正存在過,就在於它需要一種不可能存在的生物解密方案。
不過,計算中並不需要軀體。在計算機進化(如湯姆·雷的電進化機)中,計算機代碼兼任基因和軀體兩個角色。如此一來,從表象中推導出基因的難題就迎刃而解了。(事實上,這種“表裏如一”的約束並非隻限於人工領域,地球上的生命必然已通過了這個階段。也許任何自發組織的活係統都必須從一個“表裏如一”的形式開始,就像自複製的分子那麽簡單。)
在計算機的人工世界裏,拉馬克進化是有效的。艾克利和利特曼在一台擁有16000個處理器的並行計算機上實現了拉馬克係統。每個處理器管理一個由64個個體組成的亞種群,總計大約有100萬個個體。為了模擬出軀體和基因的雙重信息效果,係統為每個個體製作了基因副本,並稱其為“軀體”。每個軀體的代碼都略微有些差別,它們都嚐試解決同一個問題。
貝爾通信研究所的科學家們設置了兩種運行模式。在達爾文模式中,軀體代碼會發生變異。某個幸運的家夥可能會意外地得到較好的結果,於是係統就選擇它進行交配和複製。然而在達爾文進化中,生物交配時必須使用其代碼的原始“基因”副本——即它所繼承的代碼,而非後天獲得的經過改良的軀體代碼。這正是生物的方式。所以,當鐵匠進行交配時,他使用的是他的“先天”代碼,而非“後天”代碼。
相比之下,在拉馬克模式中,當那個改良了軀體代碼的幸運兒被選中進行交配時,它能使用後天獲得的改良代碼,作為其交配的基礎。這就好比鐵匠能將自己粗壯的胳膊傳給後代一樣。
經過對兩個係統的比較,艾克利和利特曼發現,就他們所考量的複雜問題而言,拉馬克係統的解決方案要比達爾文係統強上兩倍。最聰明的拉馬克個體比最聰明的達爾文個體聰明得多。艾克利說,拉馬克進化的特點在於它把種群中的“白癡非常迅速地排擠出去”。艾克利曾經朝一屋子的科學家大喊道:“拉馬克比達爾文強太多了!”
從數學意義上來說,拉馬克進化注入了一點學習的要素。學習被定義為個體在活著時的適應性。在經典的達爾文進化中,個體的學習並不重要。而拉馬克進化則允許個體在世時所獲得的信息(包括如何增強肌肉,或如何解方程)可以與進化這個長期的、愚鈍的學習結合在一起。拉馬克進化能夠產生更聰明的答案,因為它是更聰明的搜索方法。
拉馬克進化的優越性使艾克利大感驚訝,因為他認為大自然已經做得很好了:“從計算機科學的角度看,自然是達爾文主義者而不是拉馬克主義者,這實在是很蠢。可是自然受困於化學物質,而我們沒有。”這使他想到,如果進化的對象不局限於分子的話,也許會有更有效的進化方式和搜索方法。 15.8 螞蟻的算法天賦
意大利米蘭的一組研究員提出了一些新的進化和學習方法。他們的方法填補了艾克利所提到的“所有可能的計算空間”中的一些空白。這些研究員們把自己的搜索方法稱為“蟻群算法”,是因為他們受到了蟻群集體行為的啟迪。
螞蟻把分布式並行係統摸了個門清。螞蟻既代表了社會組織的曆史,也代表了計算機的未來。一個蟻群也許包含百隻萬工蟻和數百隻蟻後,它們能建起一座城市,盡管每個個體隻是模模糊糊地感覺到其他個體的存在。螞蟻能成群結隊地穿過田野找到上佳食物,仿佛它們就是一隻巨大的複眼。它們排成協調的並行行列,穿行在草木之間,並共同使其巢穴保持衡溫,盡管世上從未有任何一隻螞蟻知道如何調節溫度。
一個螞蟻軍團,智愚而不知測量,視短而不及遠望,卻能迅速找到穿越崎嶇地麵的最短路徑。這種計算正是對進化搜索的完美映射:一群無知而短視的個體們在數學意義上崎嶇不平的地形上同時作業,試圖找出一條最優路徑。蟻群就是一個並行處理機。
真正的螞蟻通過名為信息素的化學係統來彼此交流。螞蟻在彼此之間以及自己的環境中散發信息素。這些芳香的氣味隨著時間的推移而消散。它還能通過一連串的螞蟻來接力傳播:它們嗅到某種氣味,複製它並傳給其他螞蟻。信息素可以被看作是在螞蟻係統內部傳播或交流的信息。
米蘭小組(成員為阿爾貝托·克羅尼、馬可·多利古和維多裏奧·馬涅索)按照螞蟻的邏輯構建了方程式。他們的虛擬螞蟻是一大群並行運轉的愚笨處理器。每個虛擬螞蟻有一個微不足道的記憶係統,可以進行本地溝通。如果幹得好的話,所獲得的獎賞也以一種分布式計算的方式與其他同類分享。
意大利人用標準的旅行商問題來測試他們的螞蟻機。這個問題是這樣描述的:你需要拜訪很多城市,但每座城市隻能拜訪一次,那麽哪條路徑最短?為了求解這個問題,蟻群中的每個虛擬螞蟻會動身從一座城市漫遊到另一座城市,並在沿途留下信息素的氣味。路徑越短的話,信息素揮發得越少。而信息素的信號越強,循跡而來的螞蟻就越多。那些較短的路徑由此得到自我強化。運行5000回合之後,螞蟻的群體思維就會進化出一條相當理想的路徑。
米蘭小組還嚐試了各種變化。如果虛擬螞蟻都由一座城市出發或均勻分布在各個城市,會有什麽不同嗎?(分布的效果要好一些。)一個回合中虛擬螞蟻的數量會有影響麽?(越多越好,直到螞蟻與城市的數量比為1:1。)通過改變參數,米蘭小組得到了一係列螞蟻搜索算法。
螞蟻算法是拉馬克搜索的一種形式。當某隻螞蟻偶然發現一條短路徑,這個信息通過信息素的氣味間接地傳播給其他虛擬螞蟻。這樣,單隻螞蟻畢生的學習所得就間接地成為整個蟻群信息遺產的一部分。螞蟻個體把它學習到的知識有效地傳播給自己的群體。與文化教導一樣,傳播也是拉馬克搜索的一部分。艾克利說:“除了交配,信息交換還有許多方式。比如晚間新聞。”
無論是真實的螞蟻,還是虛擬的螞蟻,它們的聰明在於投入“傳播”的信息量非常少,範圍非常小,信號也非常弱。將弱傳播引入進化的提法相當有吸引力。即使地球的生物界中存在拉馬克進化,那它也一定被埋藏得很深。不過,仍然存在充滿了各種稀奇古怪算法的空間,各種拉馬克式的傳播盡可以在那裏找到用武之地。我聽說有的程序員整天在鼓搗“彌母(文化基因)”式的進化算法,即模仿思想流(彌母)從一個大腦進入另一個大腦,試圖捕捉到文化革命的精髓和力量。連接分布式計算機節點的方法有千千萬萬,迄今為止,隻有極少數的方法(如螞蟻算法)被人們考察過。
直到1990年,並行計算機還遭到專家們的嘲笑,認為它尚有很多地方值得商榷,過於專業,屬於狂熱派的玩物。它們結構混亂,難以編程。但狂熱派卻不這麽看。1989年,丹尼·希利斯與一個知名計算機專家公開打賭,預測到1995年,並行機每月處理的數據量將超過串行機。看來他是對的。當串行計算機由於其狹窄的馮·諾依曼通道不堪複雜任務的重負而痛苦呻吟時,專家的看法一夜之間就發生了變化,並迅速席卷了整個計算機產業。彼得·丹寧[28]在《科學》雜誌上撰文(《高度並行的計算》(highly parallelputation),,稱,“解決高級科學問題所需的計算速度,隻能通過高度並行的計算架構來獲得。”斯坦福大學計算機科學係的約翰·柯紮[29]更直截了當,“並行計算機是計算的未來。句號。”
然而,並行計算機還是很難掌控。並行軟件是水平的、並發的、錯綜複雜的因果網絡。你無法從這樣的非線性特性中找出缺陷所在,它們都隱藏了起來。沒有清晰的步驟可循,代碼無從分解,事件此起彼伏。製造並行計算機很容易,但要為其編程卻很難。
並行計算機所麵對的挑戰是所有分布式群係統都會麵對的——包括電話網絡、軍事係統、全球24小時金融網絡,以及龐大的計算機網絡。它們的複雜性考驗著我們掌控它們的能力。“為一個大規模並行機編程的複雜度可能超過了我們的能力,”湯姆·雷對我說,“我認為我們永遠也寫不出能充分利用並行處理能力的軟件。”
並行的愚昧的小東西能夠“寫”出比人類更好的軟件,這讓雷想到了一個能得到我們想要的並行軟件的辦法。“你看,”他說,“生態的相互作用就是並行的最優化技術。多細胞生物本質上就是在宇宙尺度上運行大規模的並行代碼。進化能夠‘想出’我們窮盡一生也無法想清楚的並行編程。如果我們能夠進化軟件,那我們就能大大往前邁進一步。”對於分布式網絡這類事物,雷說:“進化是最自然的編程方式。”
自然的編程方式!這聽起來真讓人有些泄氣。人類就應該隻做自己最擅長的工作:那些小而靈的、快而精的係統。讓(人工注入的)自然進化去做那些雜亂無章的大事吧。 15.9 工程霸權的終結
丹尼·希利斯也得出了相同的結論。他很認真地表示,想讓自己的“連接機”進化出商務軟件。“我們想讓這些係統解決一個我們隻知如何陳述卻不知如何解決的問題。”一個例子就是如何編寫出數百萬行駕駛飛機的程序。希利斯提議建立一個群係統,以進化出“駕駛技巧”更優秀的軟件,係統中有一些微小的寄生蟲程序會試圖墜毀飛機。正如他的實驗所展示的,寄生蟲會促使係統更快地向無差錯和抗幹擾強的導航程序收斂。希利斯說:“我們寧肯花更多時間在編製更好的寄生蟲上,也不願花上無數個小時去做設計代碼和查錯這些事情。”
即使技術人員成功地設計出一款龐大的程序,譬如導航軟件,要想對其進行徹底的測試也是不可能的。但進化出來的東西則不同。“這種軟件的成長環境裏充斥著成千上萬專職的挑刺者,”希利斯說著,又想起了自己的寄生蟲,“凡是在它們手下躲過一劫的,都經受住了嚴酷的考驗。”除了能夠創造我們製造不出來的東西以外,進化還有一點值得誇耀:它能造出來缺陷更少的東西。“我寧願乘坐由進化出來的軟件駕駛的飛機,也不願乘坐由我自己編製的軟件駕駛的飛機,”作為一名非凡的程序員,希利斯如是說道。
長途電話公司的呼叫路由程序總共有200萬行代碼。而這200萬行代碼中的三行錯誤代碼就導致了1990年夏天全國電話係統的連鎖崩潰。現在,200萬行已經不算多了。裝載在海軍海狼潛艇上的作戰計算機包含了360萬行代碼。1993年微軟發布的新操作係統“nt”總共包含400萬行代碼。一億行的程序也離我們不遠了。
當計算機程序膨脹到幾十億行代碼時,僅僅是維護程序、保持正常運行本身就會成為一個主要負擔。有太多的經濟活動和人的生命會依賴於這種數十億行的程序,因此不能讓它們有哪怕片刻的失效。戴維·艾克利認為,可靠性和無故障運行時間將成為軟件最首要的任務。“我敢說,對真正複雜的程序來說,僅僅是為了存活下來就要消耗更多的資源。”目前,一個大型程序中隻有一小部分致力於維護、糾錯和清理工作。“將來,”艾克利預言道,“99%的原始計算機周期都將被用在讓這個怪獸自我監視以維持其正常運轉上。隻有剩餘的1% 將被用於執行用戶任務——電話交換或其他什麽。要知道,這個怪獸隻有活下來,才能完成用戶任務。”
隨著軟件越來越大,生存變得越重要,同時也越來越困難。要想在日複一日的使用中存活下來,就意味著必須能夠適應和進化,而這需要做更多的工作。隻有不斷地分析自己的狀況,修正自己的代碼以適應新的需要,淨化自己,不斷地排除異常情況,並保持適應與進化,程序才能生存下來。計算必須有生命力和活力。艾克利稱之為“軟件生物學”或“活力計算”。程序員即使24小時都開著尋呼機,也不能確保數十億行的代碼能夠不出故障。人工進化也許是唯一能使軟件保持生命力和活力的方法。
人工進化是工程霸權的終結。進化能使我們超越自身的規劃能力;進化能雕琢出我們做不出來的東西;進化能達到更完美的境界;進化能看護我們無法看護的世界。
但是,正如本書標題所點明的,進化的代價就是——失控。湯姆·雷說道:“進化係統的一個問題就是,我們放棄了某些控製。”
丹尼·希利斯所乘航班的駕駛程序是進化出來的,沒有人能弄懂這個軟件。它就像一團千絲萬縷的亂麻,也許真正需要的隻是其中的一小部分,但是它能夠確保無故障地運行。
艾克利的電話係統是由進化出來的軟件管理的,它是“活”的。當它出問題時,沒有人能排除故障,因為程序以一種無法理解的方式埋藏在一個由小機器組成的未知網絡中。不過,當它出問題時,它會自行修複。
沒有人能把握住湯姆·雷的培養液的最終歸宿。它們精於設計各種小技巧,卻沒人告訴它們下一步需要什麽技巧。唯有進化能應付我們所創造的複雜性,但進化卻不受我們的節製。
在施樂公司帕洛阿爾托研究中心,拉爾夫·默克勒[30]正在製造能夠自我複製的極小分子。由於這些分子的尺度為納米級別(比細菌還小),因此這種技術被稱為納米技術。在不久的將來,納米技術的工程技能與生物技術的工程技能將趨於一致:它們都把分子看成是機器。對純粹的生命來說,納米技術可以看作是生物工程;對人工進化來說,納米技術則等同於生物分子。默克勒告訴我:“我可不想讓納米技術進化。我希望把它限製在一定的框架內,並且受到國際公約的製約。對納米技術來說,最危險的事情莫過於交配。是的,我想,應該有個國際公約來限製在納米技術中使用交配。一旦交配,就有了進化;隻要進化,就會有麻煩。”
進化並未完全超脫我們的控製;放棄某些控製隻不過是為了更好地利用它。我們在工程中引以為傲的東西——精密性、可預測性、準確性以及正確性,都將為進化所淡化。
而這些東西必須被淡化,因為真實的世界是一個充滿不測風雲的世界,是一個千變萬幻的世界;生存在這個世界裏,需要一點模糊、鬆弛、更多適應力和更少精確度的態度。生命是無法控製的;活係統是不可預測的;活的造物不是非此即彼的。談起複雜程序時,艾克利表示:“‘正確’是水中月,是小係統的特性。在巨大的變化麵前,‘正確’將被‘生存能力’所取代。”
當電話係統由適應性很強的進化軟件來運行時,是沒有一種所謂的正確方式的。艾克利繼續道:“說一個係統是‘正確的’,聽起來就像是官話、空話。人們評判一個係統,是根據其對意外情況的反應力以及應對措施的創造性。”與其正確,不如靈活,不如耐久;所謂“好死不如賴活”。艾克利說:“小而專且正確的程序就像螞蟻,對身處的世界茫然無知;而反應靈敏的程序往往是失控的龐然大物,僅把1%的精力花在你要解決的問題上。孰優孰劣,不言自喻。”
有一次,在斯圖亞特·考夫曼的課上,一個學生問他:“對於你不想要的東西,你的進化是如何處理的?我知道你能讓一個係統進化出你想要的東西,可是,你又怎麽能肯定它不會製造出你不想要的東西?”問得好,孩子。我們能足夠準確地定義我們想要的東西,從而將它培育出來。然而,我們往往不知道我們不想要什麽。即使知道,這些不受歡迎者的名單也長得不切實際。我們怎樣才能剔除那些不利的副作用呢?
“你做不到的。”考夫曼坦率地回答。
這就是進化的交易。我們舍控製而取力量。對我們這些執著於控製的家夥來說,這無異於魔鬼的交易。
放棄控製吧,我們將人工進化出一個嶄新的世界和夢想不到的富裕。放手吧,它會開花結果的。
我們曾經抵製住過魔鬼的誘惑嗎?
[1] 湯姆·雷(tom ray,全名thomas s.ray):生態學家,編寫出了名為“tierra”(西班牙語“地球”之意)的計算機人工生命模型,引起學術界的轟動。目前他是奧克拉荷馬大學的動物學教授兼任計算機科學副教授。
[2] 艾德華·威爾森(edward osborne wilson,1929.06.10~):美國昆蟲學家和生物學家,尤其以他對生態學、進化論和社會生物學的研究而著名。他的主要研究對象是螞蟻,尤其是螞蟻通過弗洛蒙進行通訊。他於1975年所寫的《社會生物學:新的綜合》(sociobiology:the new synthesis)引起了對社會生物學的爭論。生物多樣性這個詞也是他引入的。威爾森的成就獲得了許多獎勵,其中包括美國國家科學獎章、克拉福特獎和兩次普利策獎。
[3] 遺傳算法(gic algorithms,簡寫為ga):人工智能領域的一個重要算法,最早由約翰·霍蘭德於20世紀70年代提出。
[4] 勞倫斯·福格爾wrence fogel,1928.03.02~2007.02.18):進化計算和人為因素分析的先驅者,進化規劃之父。
[5] 漢斯·布雷默曼(hans bremermann,1926~1996):加州伯克利大學名譽教授,數學生物學先驅。
[6] 電子數值積分計算器(eniac – electronic numerical integrator andputer):1946年2月15日誕生於賓夕法尼亞大學,由美軍在二戰中投資研製。它曾被認為是世界上第一台電子計算機,但最近的一場曠日持久的官司改變了這個曆史,阿塔納索夫-貝瑞計算機(atanasoff-berryputer,簡稱abc)取而代之成為世界上第一台電子計算機。
[7] 離散變量自動電子計算機(edvac – electronic discrete variable automaticputer):是一台早期的電子計算機。它和電子數值積分計算器的建造者均為賓夕法尼亞大學的電氣工程師約翰·莫奇利和普雷斯波·艾克特。馮·諾依曼以技術顧問的身份參與了研製。
[8] 旋風計算機(whirlwind):一款由麻省理工大學研製的早期電子計算機。引入了當時先進的實時處理理念,並最先采用顯示器作為輸出設備,擁有世界首款成熟的操作係統。其設計理念對20世紀60年代的商用計算機產生巨大影響。
[9] 艾倫·紐厄爾(n newall,1927.03.19~1992.07.19):計算機科學和認知心理學領域的科學家,曾任職於蘭德公司以及卡內基-梅隆大學的計算機學院、商學院和心理學係。1975年他和赫伯特·西蒙一起因人工智能方麵的基礎貢獻而被授予圖靈獎。
[10] r.a.費希爾爵士(sr.ronald aylmer fisher,1890.02.17~1962.07.29):英國皇家學會會員、統計學家、生物進化學家與遺傳學家。他是現代統計學與現代進化論的奠基人之一。他被認為是“一位單槍匹馬創立現代統計科學的天才”,“達爾文最偉大的繼承者”。
[11] 《能同時執行任意數量子程序的通用計算機》:a universalputer capable of executing an arbitrary number of sub-programs simultaneously
[12] 史蒂文·列維(steven levy,1951~):美國新聞工作者,寫了不少有關電腦科技、密碼係統、網絡安全和隱私的書。
[13] 熱點(hot spot):基因組上的某些小塊區域。這些區域內發生基因重組的頻率要高於周圍區域上百倍乃至上千倍。熱點的成因目前尚不清楚,但所有熱點的特性都很相似。此外,最近的研究顯示,人類基因組中有超過25000個熱點,這也表明熱點是基因組中普遍存在的現象。
[14] 互補構型plementary shape):指能像手與手套、鑰匙與鎖一樣合在一起的構型。
[15] 核糖核酸(rna):是一種重要的生物大分子,是細胞中遺傳信息的中間載體。對一部分病毒而言,rna是其唯一的遺傳物質。
[16] 定向分子進化(directed molecr evolution):根據所需要的屬性進行分子進化的技術。
[17] 吉萊德(gilead):1987年成立於矽穀的一家高科技生物製藥公司,研發和生產的藥品種類主要包括抗艾滋病毒藥、抗肝炎藥、嚴重心血管疾病和呼吸道疾病用藥。公司2009年的收入超過70億美金,在《商業周刊》評選的2009年50強公司中名列第一。
[18] ixsys:創立於1989年,是第一家從事定向分子進化研究的公司。後更名為“應用分子進化”(applied molecr evolution,簡寫為ame)。現為納斯達克上市公司。
[19] nexagen:位於俄亥俄州的健康保健品公司,主打產品為減肥藥jen fe next。
[20] osiris:納斯達克上市公司,從事幹細胞產品的研發和生產。
[21] selectide:1990年創立於亞利桑那州圖森市,公司後經多次收購與轉手,已名存實亡。
[22] 基因泰克(genentech):美國曆史最悠久的生物技術公司,創辦於1976年。公司在上世紀末和本世紀初曾推出過幾款癌症用藥,風靡市場。瑞士製藥業巨頭羅氏集團目前為該公司的完全擁有者。