點(diǎn)擊上方↑↑↑“OpenCV學(xué)堂”關(guān)注我
來源:公眾號(hào) 新智元 授權(quán)
【導(dǎo)讀】深度學(xué)習(xí)的轉(zhuǎn)折點(diǎn)往往都發(fā)生在不經(jīng)意間。IBM的Project CodeNet發(fā)布五個(gè)多月仍未引起過多關(guān)注,但它可能是助力AI編程的最有用的數(shù)據(jù)集,但它的風(fēng)頭似乎都被Copilot搶走了,至今未見過多宣傳,淪為小眾數(shù)據(jù)集。
如今寫代碼已經(jīng)成為各行各業(yè)的必備技能,學(xué)會(huì)寫代碼可以讓計(jì)算機(jī)代替我們做一些重復(fù)的工作,極大提升工作效率。但一個(gè)真正能幫你寫代碼的AI程序離我們還有多遠(yuǎn)?5月5日,IBM向極少數(shù)媒體和學(xué)術(shù)界發(fā)布了Project CodeNet,在當(dāng)時(shí)并未引起過多關(guān)注。CodeNet完美繼承了ImageNet的思想。ImageNet是一個(gè)大規(guī)模的圖像及其描述數(shù)據(jù)集,為CV 的模型發(fā)展和標(biāo)準(zhǔn)化提供了巨大的幫助,也是深度學(xué)習(xí)計(jì)算機(jī)視覺進(jìn)步的核心, 并且圖像可免費(fèi)用于非商業(yè)用途。 CodeNet的目標(biāo)是為人工智能寫代碼提供一個(gè)標(biāo)準(zhǔn)的數(shù)據(jù)庫,它包含超過1400 萬個(gè)代碼樣本,涵蓋50種編程語言,能夠解決4000個(gè)編碼問題。該數(shù)據(jù)集還包含許多附加數(shù)據(jù),例如軟件運(yùn)行所需的內(nèi)存量和運(yùn)行代碼的日志輸出。IBM表示,Project CodeNet是同類中最大、最具差異的數(shù)據(jù)集,它解決了當(dāng)今編碼中的三個(gè)主要用例:代碼搜索(自動(dòng)將一種代碼翻譯成另一種代碼,包括像COBOL這樣的遺留語言);代碼相似性(識(shí)別不同代碼之間的重疊和相似性);還有代碼約束(根據(jù)開發(fā)人員的特定需求和參數(shù)定制約束)。然而有安全研究人員認(rèn)為CodeNet和類似項(xiàng)目最重要的影響不是優(yōu)化代碼,而是增加了自然語言編碼(Natural Language Coding, NLC)的可能性。近年來,OpenAI和Google等公司一直在快速改進(jìn)自然語言處理(NLP)技術(shù)。這些是機(jī)器學(xué)習(xí)驅(qū)動(dòng)的程序,旨在更好地理解和模仿自然人類語言并在不同語言之間進(jìn)行翻譯。訓(xùn)練機(jī)器學(xué)習(xí)系統(tǒng)需要訪問包含以所需人類語言編寫的文本的大型數(shù)據(jù)集。但寫代碼是一項(xiàng)很難學(xué)習(xí)的技能,更不用說掌握了,經(jīng)驗(yàn)豐富的編碼員應(yīng)該精通多種編程語言。相比之下,NLC利用NLP技術(shù)和諸如CodeNet之類的龐大數(shù)據(jù)庫,能夠利用英語來進(jìn)行編程,最終使用任何其他自然語言都可以進(jìn)行編碼。它可以使諸如設(shè)計(jì)網(wǎng)站之類的任務(wù)變得簡單,只需輸入一句話,然后就會(huì)出現(xiàn)一個(gè)符合要求的網(wǎng)站,這要求生成的代碼都是可以運(yùn)行的。例如“制作帶有飛機(jī)圖像的紅色背景,中間是公司的logo,下方有一個(gè)與我聯(lián)系的按鈕。“很明顯,如此科幻的想法除了IBM以外還有很多人在做。GPT-3是OpenAI的一個(gè)NLP模型,在多項(xiàng)文本生成任務(wù)都遙遙領(lǐng)先,目前也已經(jīng)被用于生成代碼,輸入就是預(yù)期的網(wǎng)站或者應(yīng)用程序的自然語言描述,輸出可運(yùn)行的代碼。但是,在IBM的消息發(fā)布后不久,微軟宣布已獲得GPT-3的獨(dú)家授權(quán)。除了GPT-3外,微軟還于2018年收購了互聯(lián)網(wǎng)上最大的開源代碼集合網(wǎng)站 GitHub。并且還開發(fā)了一個(gè)人工智能代碼助手GitHub Copilot,可以在VS code等IDE輔助開發(fā),能夠簡化開發(fā)過程,但它是付費(fèi)的。雖然Copilot離NLC的目標(biāo)還有很大距離,但它已經(jīng)是向前邁了一大步了。不過后續(xù)的測試來看,Copilot除了抄襲開源代碼和注釋外,并不能創(chuàng)造代碼,還會(huì)把其他用戶的漏洞代碼擴(kuò)散開。Copilot是朝著NLC邁出的一大步,但它還遠(yuǎn)遠(yuǎn)沒有實(shí)現(xiàn)AI寫代碼的功能。雖然NLC還沒有完全可行,但目前的研究方向正在迅速走向一個(gè)不需要長時(shí)間訓(xùn)練也能編程的未來,并且影響是巨大的。首先,更多的研究和開發(fā)人員會(huì)產(chǎn)生更多的成果。有人認(rèn)為潛在創(chuàng)新者的數(shù)量越多,創(chuàng)新率越高。如果每個(gè)人都能寫代碼,那編程帶來的創(chuàng)新潛力就會(huì)更大。此外,計(jì)算物理學(xué)和統(tǒng)計(jì)社會(huì)學(xué)等學(xué)科越來越依賴于定制的計(jì)算機(jī)程序來處理數(shù)據(jù),簡化編寫這類程序所需的技能要求,將提高計(jì)算機(jī)科學(xué)以外專業(yè)領(lǐng)域的研究人員部署新方法、做出新發(fā)現(xiàn)的能力。然而,NLC所需的人工智能的開發(fā)和部署資源相當(dāng)昂貴,小公司根本無法支撐這種應(yīng)用的開發(fā)和運(yùn)行,所以最終很可能被微軟、谷歌或IBM等主流巨頭公司壟斷。該服務(wù)可以收費(fèi)提供,或者像大多數(shù)社交媒體服務(wù)一樣免費(fèi)提供。并且我們有理由相信,由于機(jī)器學(xué)習(xí)需要大數(shù)據(jù)的支持,這些技術(shù)將由平臺(tái)公司主導(dǎo)。從理論上講,像Copilot這樣的程序在引入新數(shù)據(jù)時(shí)會(huì)變得更好,也就是說使用的用戶越多,效果越好,這種特性也使得新的競爭對(duì)手更難入場,即使他們有更強(qiáng)大或更良心的產(chǎn)品。除非有強(qiáng)力的反壟斷措施,否則大型資本主義企業(yè)集團(tuán)似乎將成為下一次編碼革命的把關(guān)人。
參考資料:
https://thenextweb.com/news/programming-natural-language-syndication
