大膽想象一下,如果計算機可以自行編寫程序,這會為人類帶來什么樣的變化?
與其辛苦研究計算機解決問題的方法論,敲出精準的代碼,不如告訴計算機你想要什么,讓它自己運行算法去解決你的需求。
聽起來是不是很優秀呢?
“進化計算”正是研究這一大膽想法的學科。
我們可以把“進化計算”看做是一類人工智能和機器學習的分支。最早提出于20世紀50年代,進化計算旨在讓計算機自行解決問題,而不需要人類編寫一步步復雜的編程代碼。理論上來說,這可能會讓原本需要編寫幾周的代碼在幾分鐘之內就可以實現。
這種理念可以讓計算機去完成人類很難理解或者難以實現的復雜問題。計算機學家已經將進化計算應用到了一些實際問題上,包括為蝦飼料配置最佳組合、最佳資產組合、通信技術、游戲行業和自動包裝等。
那些研究進化計算的科學家們在這60多年時間里提出了大量建議。然而,進化計算的理論并沒有在研究領域之外被廣泛應用。
所以,為什么進化計算一直進展緩慢?
進化計算的原理
進化計算沿用了查爾斯.達爾文的自然選擇學說,就是我們通常所知的“適者生存”。也就是說,一個物種里最弱小的(或者不太容易生存的)相繼死亡而強壯的會生存。經過許多代以后,這樣的物種會進化得越來越適應周圍環境。
進化計算中,計算機為每個問題創造了大量的潛在答案。由于這些方案通常都是隨機產生的,所以計算機剛開始肯定也不能我們關心的問題。但是,有些方案要比其他的更好。計算機可以從中排除最差的答案,找到最優解并發掘更多潛在答案。不同的答案會被融合在一起(這通常被叫做“交叉”),從而獲得一個可以不斷被測試和實驗的新一代答案。
就像自然選擇學說一樣,另一個關于進化計算的重要元素是突變。所以,每過一段時間,被測試的答案就會產生一個既小而隨機的變化。這就意味著,新的潛在方法會被創造,而僅僅使用交叉法是不能實現的。
理想情況下,由交叉和變異組合成的潛在新方案,會比他們的“父母”更好。但“進化”也不是每次都發生的,只有更多迭代產生,更好的解答才能浮現。對于進化學習來說,擁有數以萬計的迭代是有跡可循的,就像自然選擇需要數以萬年去選擇一個物種生存一樣。
基因編程樹
進化計算中最有名的莫過于基因編程。在基因編程中,一個計算機程序會讓另一個程序經過演變來處理特定的問題。用戶提供了一些衡量程序優劣的度量,然后演化過程接管,一切順利的話,就會返回一個解決問題的程序。
遺傳算子
盡管在科研界,基因編程研究已經取得了巨大進展,但是進化計算依舊很被難投入到商用中。這究竟是為什么呢?
為什么進化計算一直沒被投入商用?
不同于其他很多技術,進化計算還未真正被商業領域接受。3D打印是在20世紀80年代發明的,經過很長一段時間的發展,現在已被用于工業制造。同樣,增強現實、虛擬現實和人工智能也從研究領域中涌現出來,成為大型科技公司的主要產品。
阻礙進化計算商用的一個關鍵問題是,研究人員未能把重點放在商業領域感興趣的問題上。
舉個例子。計算機科學家已經深入研究了如何利用進化計算來為車輛制定路線。但是,研究者們通常只是研究問題的一些簡單方面,而非是問題本質。很多汽車路徑優化,用的是兩點之間直線最短的原理。
在現實世界中,車輛行駛的路線很少遵循直線,而且必須考慮單向系統、故障、法律問題(比如司機必須休息多久)、時間限制以及其他很多問題。這種復雜性正是進化計算能夠提供幫助的地方。
如果我們能夠充分定義問題在現實世界中發生的情況,那么進化算法應該能夠處理其復雜性。
另一個問題是,進化計算的結果有的時候很難解釋。舉例來說,盡管基因編程系統可能會創造一個完美的答案,但是這個答案是如何實現的,可能對于一個程序員來說是一個秘密,因為系統產生的代碼可能十分復雜,并且難以理解。
進化計算系統的實現和支持也很復雜,這可能會讓一些商業組織望而卻步。如果有一個易于使用的框架來隱藏大部分潛在的復雜性,這將會有所幫助。盡管這些框架存在于科學界,但它們不容易被商業部門使用,更不用說家庭用戶了。
IBM著名的軟件工程師弗雷迪克.布魯克斯曾經這樣說道:你是不能通過增加人力來處理規模不斷擴大的軟件開發項目的。
如果有朝一日進化計算能夠被投入商用,這對軟件開發商來說將會是一個巨大的幫助。
-
云計算
+關注
關注
39文章
7735瀏覽量
137203 -
編程
+關注
關注
88文章
3592瀏覽量
93596 -
自動化系統
+關注
關注
3文章
254瀏覽量
29636
原文標題:號稱能自動編程60年,“進化計算”究竟進化到哪一步了?
文章出處:【微信號:BigDataDigest,微信公眾號:大數據文摘】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論