1. 尋找正確答案
1.1. 卡爾·西姆斯
1.1.1. 電腦圖形藝術家和研究者
1.1.2. 演示過數位前進演化之創造性和新穎性的先驅
1.1.3. 1994年
1.1.3.1. 創造一批能遊泳、走路、跳躍,甚至互相競爭的虛擬動物震驚了整個科學界
1.1.3.2. 它們的人工大腦卻是個極其復雜的網路,資訊經由傳感器的輸入,經過大量的數學函式計算和操作,才能產生那些看起來很聰明的動作和表現
1.1.4. 這些動物並不是西姆斯直接編程產生的
1.1.4.1. 他並沒有設計這些動物
1.1.4.2. 他並沒有生成它們的身體,也沒有建立它們的大腦
1.1.4.3. 西姆斯的虛擬動物是前進演化而來的
1.1.5. 如果一個控制系統某一天真的產生了「智慧」行為,這個系統可能已經復雜混亂到我們無法理解的地步
1.2. 藝術家威廉·萊瑟姆和史帝芬·托德
1.2.1. 「變異者」程式
1.2.2. 萊瑟姆和托德的藝術作品都是電腦裏前進演化出來的
1.2.3. 就像給動物配種一樣,選擇他們認為優秀的作品來配種
1.2.4. 從一片隨機混沌中慢慢地湧現出不可思議的樣式、盤旋卷曲的形狀和超凡脫俗的圖案
1.3. 智力其實就是改進的能力
1.3.1. 我們在學習一樣東西時會不斷練習,直到掌握到一定程度才停下來
1.3.2. 只要有更強大、更便宜、更受歡迎、更高效的解決方案,我們就會想辦法尋找它
2. 人工生命的前進演化
2.1. 西姆斯使用了一種遺傳演算法來推動虛擬動物的前進演化
2.2. 他的品控標準(或稱「適應函式」)就是動物能夠遊、走或跳得多遠(越遠越好)
2.2.1. 烏龜狀動物的身體可能只是五個簡單的方塊,但它的大腦如果打印出來,打印紙的長度延伸出去能覆蓋會議大會堂的很大一部份
2.3. 前進演化計算的實踐者創造出了一個虛擬世界,讓電腦自己繁衍出越來越好的答案,直到找到最佳答案
2.3.1. 遺傳演算法就是這樣一種方法
2.3.2. 它的工作機制是先創造出一批可能都沒什麽用的答案作為初始群體,按適應度(也就是把問題解決得多好)給這些答案排序,然後讓最適應的答案產生後代
2.3.3. 只要讓遺傳演算法執行足夠多代,剩下的答案就已經前進演化成高度適應的群體,能很好地解決它們所面對的問題
3. 由自然界啟迪的最佳化方法
3.1. 遺傳演算法及其近親(前進演化策略和前進演化編程)可以追溯到電腦科學的最早期
3.1.1. 使用遺傳演算法讓程式碼自己前進演化(也就是自動偵錯我們所寫的程式碼),讓電腦實作自我編程
3.1.2. 遺傳演算法等技術將使人工智慧實作自我修改,直到它們變得比我們更聰明
3.2. 蟻群最佳化和人工免疫系統是在20世紀90年代才出現的
3.2.1. 蟻群最佳化方法能給配送人員找出最佳路線,就像螞蟻能找到食物和巢穴之間的最短路徑一樣
3.2.2. 人工免疫系統模仿我們自己身體裏的免疫系統,能檢測到電腦病毒,甚至能控制機器人
3.3. 粒子群最佳化方法能讓虛擬粒子像尋覓鮮花的蜜蜂一樣四處飛舞,以發現最佳解決方案
3.4. 越來越多的自然過程可以啟發最佳化方法
3.4.1. 中心重力最佳化、智慧水滴演算法和河流形成動力學等方法
3.4.2. 基於大型哺乳動物的行為習慣
3.4.2.1. 動物遷移最佳化
3.4.3. 基於昆蟲,甚至植物和水果的習性
3.4.4. 基於鳥類和魚類的各種演算法
4. 基於搜尋的演算法
4.1. 人工智慧和搜尋一直是攜手並進的
4.1.1. 基於搜尋的演算法是人工智慧的一個獨特分支
4.1.2. 搜尋是電腦科學家喜歡玩的一種燒腦把戲
4.2. 大多數受自然界啟發的最佳化演算法都是平行搜尋方法,從一群分散在解空間各處的初始答案開始,各自同時往周邊地帶探索,尋找最好的答案
4.2.1. 最佳化演算法動輒要搜尋數百維空間,而且答案的品質往往難以確定,或者會隨時間改變,又或者可能會有多個好答案
4.2.2. 演算法甚至可以搜尋空間的維度本身,增加或刪除參數
4.2.2.1. 如果在四十維空間(由四十個參數值定義)裏找不到答案,那麽也許能在五十維空間裏找到
4.3. 搜尋是最近大獲成功的強化學習等技術的組成部份
4.3.1. 透過搜尋獲取解決方案是極其困難的任務
4.3.2. 在每個階段,通常的結果都是電腦被卡住,找不到一個好答案
4.3.3. 搜尋的空間太大,無法在合理的時間內搜尋到答案
4.3.4. 空間太復雜,無法有效導航
4.3.5. 空間本身的性質太容易改變
4.3.6. 測試每個潛在答案是否能解決問題所需的時間,限制了系統可以考慮的答案的數量
4.3.7. 答案越復雜,測試它所需的時間也就越長
4.3.8. 計算力的提升永遠是杯水車薪,而且這種情況可能還會持續幾十年,甚至幾百年
4.3.9. 計算能力也不能幫助我們理解如何找出正確答案
4.3.10. 搜尋只能幫助電腦找到問題的答案
4.3.10.1. 它總是需要我們的幫助來發揮它應有的作用
4.4. 自然前進演化是如何在一個似乎永無止境的可能性空間中搜尋,並找到活生生的答案的
5. 前進演化中的機器人
5.1. 機器人大腦的構件可能是模擬神經元、有限狀態機、規則集合,或數學方程式,搜尋則是黏合劑,把這些構件以正確方式組合起來,並連線到傳感器和效應器,從而讓機器人能執行真正的任務
5.2. 達裏奧·弗洛瑞亞諾
5.2.1. 他讓模擬神經元配置自己前進演化,來為機器人自動制造大腦
5.2.2. 並不滿足於讓大腦前進演化,他還想知道這種大腦是如何運作的
5.2.3. 探索了許許多多種前進演化出來的機器人大腦
5.2.4. 建造了由有機生物體啟發的機器人軀體
5.2.4.1. 一些會走路的機器人
5.2.4.2. 一些像跳蚤一樣蹦蹦跳跳的機器人
5.2.5. 兩家無人機公司——senseFly和Flyability
5.2.6. 數位世界的演化論有著一個美妙之處:人類設計師的角色可以被降低到最低限度
5.3. 霍德·利普森和喬丹·波拉克
5.3.1. 復制了卡爾·西姆斯的想法,在虛擬世界中前進演化出可以移動的奇特虛擬生物
5.3.2. 使用3D印表機,將虛擬變成現實
5.4. 虛擬世界和我們自己的世界之間的「現實差距」
5.4.1. 在虛擬世界中可能正常工作的大腦和身體,不知何故在混亂、不可預測的現實世界中總是沒法正常運轉
6. 自我設計的電腦
6.1. 阿德萊恩·湯普森
6.1.1. 在1996年
6.1.1.1. 將前進演化計算與一種名為現場可編程門陣列(FPGA)的特殊芯片聯系起來
6.1.1.2. 這些芯片最初設計的套用,是電腦網路和電信骨幹網等需要快速推出新電路的場景
6.1.1.3. 與其設計一套電路並在昂貴的芯片制造廠裏生產出來,你不如隨時向FPGA發送特定訊號來重新配置這個電路,它的內部元件會如你所願地連線在一起,並存放在一個永久的記憶體中
6.1.2. 面對同一個問題時,前進演化電路所使用的矽片面積要比出自人類設計師之手的電路少得多
6.2. 讓電腦大腦本身的電路進行前進演化
6.2.1. 在FPGA中演化和測試了許多代的真實電路後,前進演化計算找出了有效的電路
6.2.2. 創造了古怪得有時幾乎無法解釋的電路
6.2.3. 這些電路比預期的要小,而且它們使用電子元件的方式也很反常
6.2.4. 芯片上顯然不屬於電路的部份仍然會以某種方式影響輸出,讓輸出更接近理想值
6.2.4.1. 前進演化利用了底層矽片的物理特性,這是人類設計師想都想不到的招數
6.2.4.2. 設計甚至利用了環境,因為稍微改變一下溫度,芯片就不那麽好用了
6.2.5. 把這個電路設計部署到另一個看起來一樣的FPGA上面,它就不再靈光了
6.2.6. 在更大的溫度範圍和多個FPGA上嘗試前進演化,就會得到更可靠的解決方案
6.3. 前進演化只會設計出必要的東西,一點也不浪費
6.4. 許多困擾人類直覺的問題,可以用電腦演化論找到嶄新的解決方案
6.4.1. 朱利安·米勒(2019)
6.5. 讓電腦來負責前進演化電路並不容易,但多年的進展已經催生了新的技術,即將改變我們創造人工智慧的方式
6.5.1. 研究人員仍然在可前進演化的硬體領域繼續開拓