論文提出AI Programmer:使用遺傳演算法自動創造軟體程序
選自arXiv
機器之心編譯
參與:李亞州、李澤南
人工智慧究竟會在未來代替哪些人類的工作?程序員似乎在這個問題中永遠排在最後一位。不過,這樣的看法似乎並非準確。最近,來自 Bloomberg 和英特爾實驗室的研究人員提出了一種基於遺傳演算法的人工智慧程序 AI Programmer,它可以在普通計算機的硬體基礎之上為指定任務生成程序。
從計算機被發明以來,正確、高效地開發軟體程序一直是個根本性挑戰。為了幫助解決該問題,軟體開發領域已經作出了無數的突破。一些突破包括在靜態、動態、漸進式系統中的安全、靈活的進步;使用自動化存儲管理和垃圾收集系統作出的簡化、安全、穩健的進步;在通用與特定領域語言的普通和特定發展;當然還包括以各種方式協助程序員的眾多工具。
目前,在硬體創新領域中,新發展也在以類似的頻率在發生,例如越來越多的通用性能多核 CPU,帶有高級的硬體擴展,或者是低能耗 SoC 邊緣計算設備、接近先前超級計算機性能的高性能嵌入式協處理器;寬泛數據並行的 GPU;適合神經網路和計算機視覺的 ASIC,等等。
在硬體進展持續擴展計算的深度與廣度的同時,副作用就是把軟體開發與人類寫代碼的效率之間的緊張關係變得越來越複雜、惡劣。
在這篇論文中,作者們探索了一種取代傳統人類軟體開發的方式,也就是使用遺傳演算法自動創造軟體程序,只需要少量的人類指導。
據論文介紹,該研究的技術貢獻在於:
1. 史無前例的提出了軟體生成框架 AI Programmer,使用遺傳演算法結合全新簡化編程語言構建程序。
2. 給出多種批評觀測系統,包括一個嵌入式注釋器和模擬器解決方案,保證機器學習生成的軟體的安全與優化。
3. 在硬體上完整生成了多個軟體程序,給出了經驗式結果證明 AI Programmer 的功效與效率。
圖 1:AI Programmer 的軟體架構
AI Programmer 由 C# .NET. 上的模塊化框架組成。它包括用於運行遺傳演算法的引擎,用於基因組圖的編碼器和解碼器,用於模擬程序執行的沙箱解釋器,以及將代碼轉換為二進位可執行文件的編譯器。雖然 AI Progammer 使用 C#,但它的應用範圍不僅限於 C#。AI Programmer 的軟體框架是可以擴展的,開發者們可以在此基礎上構建適合自己的工具,通過指導系統的遺傳演算法,不斷改進自己的軟體程序。
表 2:AI Programmer 的結果
論文:AI Programmer: Autonomously Creating Software Programs Using Genetic Algorithms
鏈接:https://arxiv.org/abs/1709.05703
摘要:在此論文中,我們史無前例的提出了一種名為 AI Programmer 的機器學習系統,只需少量的人類指導就能生成完整軟體程序。AI Programmer 的核心是使用遺傳演算法,加上極其約束的編程語言最小化其機器學習搜索空間。AI Programmer 的部分創新性來自於其獨特的系統設計,包括一個嵌入式、手動注釋器來提高效率與安全;還有它對遺傳演算法的增強,包括遺傳指令隨機捆綁和程序特定語言基因構建和消除技術。我們給出了 AI Programmer 系統設計的詳細測試,系統運行原理的詳細示例,以及只使用主流 CPU 證明軟體生成能力和性能的試驗數據。


※詳解珠算:清華大學開源的貝葉斯深度學習庫(論文公布)
※Waymo與英特爾聯手研發無人駕駛晶元,欲實現全場景 L5 自動駕駛
※周志華:關於人工智慧的探討
※深度學習目標檢測模型全面綜述:Faster R-CNN、R-FCN和SSD
※治療癌症的Waston步履艱難,IBM 能否依靠人工智慧成功轉型?
TAG:機器之心 |