會程式設計的 AI + 會修 Bug 的 AI,等於什麼 ?

伯小樂發表於2017-02-24

關於人工智慧未來的暢想,除了家庭服務機器人,快遞無人機,醫用機器人等等,Lucas Carlson 認為人工智慧在另外一個領域的可能帶來的變革,卻沒有引起公眾的足夠注意——這就是:讓計算機自己程式設計

2016年11月末,Lucas Carlson 撰文:

目前,機器學習方面的專家傾向於把研究聚焦於具體領域內高度裁剪的 AI 應用——比如:面部識別、自動駕駛汽車、語音識別,甚至是網際網路搜尋結果等方面。但是,這些技術同樣可以應用到讓計算機理解其自身的程式碼架構上——當然這裡是指脫離人類的幫助、解釋和干涉的情況下進行的理解——其實這種對程式碼的“理解”和讓計算機理解自然語言,或是識別影象並沒有本質的區別。

如果程式碼能夠自我分析——做到比人類更快地修正錯誤並不斷優化——那麼技術革新將會發生得越來越快。其帶來的可能性幾乎是無窮無盡的:醫學上的進步,更智慧的機器人,更“智慧“的手機等等。

…… 而 AI 將會改變這種局面。

Lucas 的全文,請參見《讓程式碼寫程式碼,自主程式設計的 AI 離我們還有多遠?》。

2017年2月23日 NewScientist 報導,微軟和劍橋大學的研究員近日釋出了一篇論文,文中闡述了其科研成果 DeepCoder:一個會程式設計的機器學習系統。

會程式設計的 AI + 會修 Bug 的 AI,等於什麼 ?

論文:https://openreview.net/pdf?id=ByldLrqlx

微軟和劍橋大學研究人員聯合建立的機器學習系統 DeepCoder 學會了如何自己寫程式碼。它能讓人們在沒有掌握必要程式設計知識的情況下,更輕鬆的構建出簡單的應用程式。

未來,非程式設計師可以通過簡單的描述出一個程式的想法,然後讓機器學習系統將其構建出來。DeepCoder  使用了被稱為「程式合成」(Inductive Program Synthesis)的技術,將來自現有軟體的一行行原始碼拼接在一起。

給定每一個程式碼片段的輸入和輸出列表,DeepCoder 學會要實現預期結果需要使用到哪部分程式碼。它的一大優勢是速度,能在幾分之一秒內建立出一個可工作的程式。在瞭解了哪一部分原始碼能工作,哪一部分不能之後,DeepCoder 能改進每一次建立的新程式。

目前DeepCoder只能生成五行左右程式碼的程式。但如果採用了適當的程式語言,幾行程式碼也能抵上一段複雜的程式碼了。

沒有參與 DeepCoder 的麻省理工學院 Armando Solar-Lezama 認為,這類技術在自動化方面有很大潛能,將極大減少在開發程式碼方面的精力消耗。但想一下子生成一大段程式碼,有點不現實。不過一大段程式碼,是可以有很多的小段程式碼組合而成。

Solar-Lezama 同時認為,DeepCoder 並不會讓程式設計師失業下崗。因為「程式合成」是把程式設計階段枯燥部分自動化了,程式設計師能把更多精力放在更為複雜的任務上。

除了自動程式設計的,還有自動修 Bug 的程式

2015 年 6 月下旬,麻省理工學院的研究人員展示了一個新系統,可以通過從其他更加安全的應用中自動匯入相關功能,藉以修復原來軟體中的危險漏洞。

這個引人注目的系統叫做 CodePhage ,它借用其他程式時並不需要訪問借主應用的原始碼。相反,該系統分析這個應用的執行情況,並標記出其安全檢查類別的特性。因此,即使所編寫的語言與被修復應用的語言不同,該系統仍然可以從中匯出檢查功能用來修復應用。

CodePhage 將程式碼匯入易受攻擊的程式後,還會進行進一步分析以確保漏洞被修復。

MIT 電腦科學與人工智慧研究室(CSAIL)的研究員,CodePhage 的研發領導人員 Stelios Sidiroglou-Douskos 表示:

“我們在開源庫裡有大量程式碼可用,數百萬計專案,而且很多專案都有類似的實現了。這些專案總有一些可以與別的許多專案共享功能的子模組,即便那不一定是該程式的核心功能。”

有了 CodePhage,“你將逐漸建立一個集其他應用最優秀部分於一身的混合系統。”

會程式設計的 AI ,加上會修 Bug 的 AI,等於什麼 ?

大家一起來暢想一下,歡迎在評論中留言。

參考:

Solidot、伯樂線上、MIT News、VentureBeat、NewScientist

相關文章