作者:佩德羅.多明戈斯(Pedro Domingos)
達爾文在《物種起源》一書中,開宗明義就是探討這個議題,希望能做為一個踏腳石,以探究更加困難的物競天擇概念。現今我們視為理所當然的所有居家栽培的植物和動物,都是選擇與交配的結果,一代又一代,以至於能夠成為最符合我們期望目標的生物,例如:擁有最大玉米芯的玉米、最甜的水果樹、羊毛最茂密的羊隻、最強壯的馬匹等。
遺傳演算法就是運用相同的原理,它們是繁殖程式,雖不是活生生的生物,如果要產生下一代,往往只需要幾秒鐘的電腦時間就可以了,而不需要花費一個生物體孕育週期的漫長等待。
到底遺傳演化是如何做到這一點呢?說不定連達爾文都不知道,這就是遺傳演算法中特別發揮作用的地方。但對於霍蘭德而言,遺傳演算法的真正威力在於一個更複雜的課題:性配對。
我們把「性議題」層層剝離到只剩下它的基本性質(請不要咯咯地傻笑),有性繁殖包括從父親與母親的染色體之間,進行遺傳資訊的交換,這個過程被稱為染色體的交叉互換(crossing over)。因而產生了兩個新的染色體,其中一個染色體包含了母親的染色體,但只包含到交配點(crossover point)的位置,在此之後是連接父親後段的染色體,而另一個新的染色體則剛好相反:
遺傳演算法的運作原理正是模仿這個過程。在每一代中,演算法會將最適合的個體進行交配,從每一對親代產生兩個子代,並在一個隨機點上,交叉互換親代的位元字符串。在運用點突變以產生新的字符串後,遺傳演算法會在它的虛擬世界中產生這些新的世代。
每一個新世代會取回一個適應度分數,而且這個過程會持續重複進行。就好比物競天擇,每一個新世代都會比前一個世代更為適合,最後當新世代達成所需的適應度,或是時間耗盡時,這個遺傳過程便會終止。
舉例來說,假設我們想要採用遺傳演算法發展用於過濾垃圾郵件的規則。系統有一萬個不同的字詞出現在訓練資料中,每個過濾規則可以由兩萬個位元組成的字符串來表達,也就是每個字詞是由兩個位元來表示。
例如:一開始檢測含有「免費」這個詞的電子郵件,如果有「免費」這個字詞也的確是垃圾郵件,那第一個位元就設定為 1;但如果這封郵件不是垃圾郵件,則第一個位元就會記錄為0,第二個位元則剛好相反,針對沒有包含「免費」這個字詞的電子郵件,如果發現的確是垃圾郵件,那第二個位元就會設定為 1,如果它們不是,則第二個位元就會設定為0。
所以說,如果這兩個位元都是 1,那麼電子郵件就會持續進行第二規則比對,也就是不管它們是否含有「免費」一詞,如此一來,第二規則就會繼續在不管有沒有「免費」字詞的條件下,有效地持續進行比對。
在真實世界中,一個高度適合的個體可以做到最好的情況,就是轉嫁一半的基因給許多孩子,其中每一位孩子因為會從它的另一位親代繼承另一半基因,或許可能變得不太適合了。或許永生可以避免這種倒退的現象,而且幸運的話,可以讓遺傳演算法更快達到理想中的適應度,但這是不可能的。
就好比人類歷史上,如果允許後代人來衡量最適合的人類存活,那每一個後代子孫可能都像成吉思汗這樣的英雄人物,但真實世界還活著的 200 位男人中,頂多只有 1 位是他的後裔。也許遺傳演化並不是那麼的糟糕,然而現實生活中,永生絕對是被「禁止」的。
達爾文感嘆自己缺乏數學能力,但如果他是活在一個世紀之後,相信他很可能會有高超的程式設計能力。
事實上,要透過一組方程式來體現物競天擇原理是非常困難的,如果將其表達成為一種演算法則是另一回事,這些揭示許多更棘手的問題。為什麼物種突然出現在化石紀錄中?在哪裡有證據表明,他們是從早期的物種逐漸演化而來?
在 1972 年,尼爾斯.艾崔奇(Niles Eldredge)和史蒂芬.傑.古爾德(Stephen Jay Gould)提出,演化是由一系列的「間斷平衡」所組成的,是長時間的停滯與短暫的快速變化之間的交替過程,就像寒武紀生命大爆發時期一樣。
這種說法引發了一場激烈的爭論,部分理論批評者將它取了一個「跳躍式的演化」綽號,而艾崔奇與古爾德則反駁那些漸進理論是「匍匐前進的演化」。
不過基於遺傳演算法的經驗,支持了跳躍式演化的說法。如果你運行了十萬個世代的遺傳演算法,並每隔一千個世代就觀察一次這個族群,你會發現,適應度與時間的關係圖可能會像一個不均勻的樓梯形狀。隨著時間的變遷,適應度會突然的改善,其後往往又會經歷一段更長無太大變化的時期。
這也不難看出為什麼。一旦演算法達到一個適應度的局部最大值,也就是在適應度關係圖上的一個高峰,它將會在那裡逗留很長一段時間,直到一個幸運的突變,或是交叉互換降臨在一個個體上,才會將適應度從斜坡推升至更高的巔峰,此時個體就會大量繁殖,並隨著每一世代的死亡與再生,適應度會逐漸爬上斜坡。如果當前適應度的高峰越高,那麼在發生突然改善之前,會有一段越長的無變化時期。
當然自然的演化比這個更為複雜。
舉例來說,環境可能會改變,無論是在身體上,還是因為其他生物體本身已經演化,而且一個正處於適應度高峰的生物體,可能會突然發現自己本身的壓力,於是產生再次的演化。這些雖然有幫助,而目前的遺傳演算法也並非故事的結局。
本文摘自三采文化之《大演算:機器學習的終極演算法將如何改變我們的未來,創造新紀元的文明?》 揭開大數據、人工智慧、機器學習的祕密, 打造人類文明史上最強大的科技 ——終極演算法! 有一個終極演算法, 可以解開宇宙所有的祕密, 現在大家都在競爭, 誰能最先解開它!