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