標簽:聯想,AI,
最近有很多關于代碼在經過訓練的神經網絡的幫助下自己編寫代碼的話題,但是除了一些有限的用例之外,它變為現實仍需要相當長的一段時間——至少對于普通的開發工作來說是這樣的。
盡管自動代碼生成并不是一個新概念,但由于在神經網絡框架中具有更好的功能和易用性,它已獲得了全新的關注。但就像在其他領域,人工智能被吹捧為“短期實現自動化的救星”一樣,這樣大肆宣揚其實并不合適,將科技廣泛應用到現實具有很高的復雜性,至少現在還不行。
就在過去一段時間里,谷歌、微軟、聯想和IBM都曾推出了一種新的方法來提高開發人員的生產力,并通過深度學習框架來充實自己——至少在某種程度上是這樣。新聞標題一般是,代碼是自己編寫自己,程序員將不再成為必要。然而在現實中,除了開發人員的生產力角度之外,所有這些自動生成代碼的應用都提到了:用例仍然是有限的。
微軟研究公司最近發布了DeepCoder,這是一種神經網絡,它通過輸入和輸出大量的源代碼來預測一個程序的屬性。由于各種編程競爭問題,需要更快的代碼生成和更高級別的難度。IBM研究院的另一項研究,掃描了數以千計的同行評審的代碼、框架和庫細節,以幫助開發人員引導神經網絡模型生成。
對于DeepCoder來說,要在一段時間內生成大量的代碼是很困難的,而且對于IBM的研究工作來說,由于數據輸入(分散在文件中,數據碎片等),也有一些限制。谷歌的AutoML只適用于定義的框架,因為標準化是實現任何東西的關鍵,特別是自定義的神經網絡。
盡管IBM研究院的人工智能工程總監Rania Khalaf表示,通過代碼庫、在體系結構方面收集足夠多的神經網絡來構建自己的模型是可能的,但它遠不止于此。這是因為至少在IBM的工作中,沒有標準的框架或庫,開發人員社區在足夠的質量上使用自動代碼生成能力。
Khalaf說,我們可能更接近于讓人工智能通過像GitHub這樣的代碼庫進行掃描,并從中獲得一些有意義的東西,但是“close”是相對的。“大家可能會認為這很容易實現,但從開發人員和數據科學家的角度來看,要實現完全自動化,必須有一個重要的‘人工介入’因素。”甚至可以在不同的平臺、編程模型和庫中進行廣泛的泛化,這遠比IBM研究院強調的深度學習論文的努力要困難得多。
來自IBM研究院的DLPaper2Code的研究人員Senthil Mani指出,深度學習方法之間的互操作性是最大的問題之一。他的團隊正在研究一種“語法”來解決這個問題——一種可能與平臺無關的抽象表示。他補充說:“如果某一個標準能夠在社區中得到采納,就有可能自動生成更多的代碼。”
“更進一步的目標,是使深度學習面向更大的開發者群體,實現深度學習的‘民主化’。開發人員多數在Java等語言方面很擅長,現在必須投入到人工智能應用程序的開發中,且在獲取這些庫和框架方面仍存在很大的技術差距。我們已經開始構建一個工具,人們可以借此設計一個基于一些網絡、層和超參數組合的深度學習模型。實現和編碼模式將不同于配置,但最終目標是只需一個想法,開發人員就可以通過‘拖放’層來完成構建模型。”
除了標準化,Mani說,他們在自動代碼生成方面取得進展的另一個領域是預測神經網絡的層次,這將會增加整體的生產力,但仍然依賴于上面描述的“人工介入”方面。
不過,Mani也同意,我們離自動化程序員的未來還有很長一段路要走。“我們現在看到的更多的是縮短開發人員的時間和精力,以引導他們創建模型。”即使是這個問題本身也很難解決——我們只觸及了表面。
|