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