7月29日,英特爾官網消息,英特爾和麻省理工學院(MIT)、喬治亞理工學院(Georgia Tech)共同推出了一種新的機器編程(MP)系統——機器推斷代碼相似性系統(MISIM)。
通過識別相似代碼段,分析代碼目的、作用的相似性,MISIM 可以完成一些編程任務,提供編程方法建議或選項,即用 AI 代替程序員做部分工作,如自動化錯誤檢測等。
“英特爾機器編程的最終目的是使軟件創建民主化”, 英特爾首席科學家兼機器編程研究總監/創始人 Justin Gottschlich 説。英特爾目前計劃在內部使用 MISIM,以協助開發人員完成調試等日常工作。
IT 領域中,AI 的許多應用場景都是機器編程。最近引起熱議的 人類算力天花板?1750 億參數的 AI 模型 GPT-3 引爆硅谷 ,也是可以直接寫代碼。
如有人用 GPT-3 將日常語言轉換成 Python 代碼來創建資產負債表;還有開發者調用 GPT-3 API 做了一個網頁 App 快速生成器,在輸入框裏用自然語言進行描述,它就可以快速輸出相應的用户界面,比如輸入“生成一個像西瓜一樣的按鈕”:
也有人早就開源了同樣是機器編程的 AI 項目。如2018年,使用 keras 深度學習框架的項目 Sketchcode 開源,Sketchcode 可以直接將手繪的手稿圖生成 HTML 代碼。
AI 在 IT領域的應用還有 AI 自動測試,無碼/低代碼探討等話題,本篇先從 MISIM 説起,看看機器編碼的一些項目。
MISIM:AI 評估代碼圍繞 MISIM 的技術論文已經公開。該論文首先闡述了機器編程和代碼相似系統的關係:機器編程領域涉及軟件開發的自動化,近年來出現許多 MP 系統,部分原因是機器學習、形式方法、數據可用性和計算效率的進步。
而在 MP 系統中,一大挑戰就是精確構建代碼相似性系統。代碼相似性系統往往包含許多複雜的組件,其中即使是最基本的組件的選擇,如代碼的結構表示都仍不明確。代碼相似性的研究還處在早期階段,但相關探索已越來越多,MISIM 也是其中之一。
MISIM 中的組件可以單獨或一起使用,核心部件有兩個。
一是一種新的上下文感知語義結構 CASS,用來從代碼語法中提升語義意義。目的是捕捉輸入代碼的語義的顯著特性。CASS 的上下文感知功能,可以用來捕獲描述代碼的上下文信息,例如,“這段代碼是函數調用”、“這段是操作”等等。
其二,MISIM 提供了一種基於神經的學習代碼相似性評分算法,可以用各種具有學習參數的神經網絡體系結構來實現。該算法分兩個階段,第一階段涉及一個神經網絡模型,可將一個特徵化的 CASS 映射到一個實值代碼向量。第二個階段使用相似性度量在一對代碼向量之間生成相似性評分。
針對該系統的性能,其研究團隊篩選出三個代碼相似性系統做比較:code2vec、神經代碼理解 NCC、代碼推薦系統 Aroma。比較實驗使用 POJ-104 數據集,由學生編寫的 C/C++程序組成。
評估的精度指標是 R(MAP@R)、平均精度(AP)和精度-Recall-Gain 曲線(AUPRG)下的面積(Aup@R),它們衡量模型在給定查詢的數據庫中檢索類似(或相關)項的準確性。最終的實驗結果表明,MISIM 比其他三個最先進的代碼相似系統的性能高出40.6倍。
不過,論文還提到了可以預見的負面影響:
一級負面影響,給定的研究想法可以直接用於傷害性行為,如 DeepFake、DeepNude 等等。
二級負面影響,指研究想法可能會使它的使用方式產生直接的負面或積極影響,例如將面部識別用於壓迫少數羣體、產生惡意假新聞等等。
三級負面影響,研究思想被用來構建第二個應用程序,並根據新程序的使用產生的負面影響。
- 如果代碼使用相似性工具發展足夠成熟,可以自動生成正確的可編譯代碼,那麼它可能被用來自動將代碼從一種語言替換為另一種語言,或者用快速代碼替代慢代碼。
- 惡意使用者可以利用代碼相似性工具爬取網絡,在網絡上竊取代碼,並從可用代碼中,找到常見的模式和安全缺陷,然後找到大規模黑客攻擊的方法。從同一代碼生成器生成的代碼可能更容易受到此類攻擊。
- 如果系統允許基於代碼相似性的自動代碼修補/修復,而不進行適當的測試,那麼如果被黑客攻擊,它可能會產生安全缺陷。
- 如果程序員習慣從編程工具獲得幫助,可能會降低程序員的學習能力,除非該工具提供可解釋性,解釋性將需要了解工具正在學習的代碼相似性,並教育程序員。
“總之,代碼相似性是一個抽象的概念,很可能有許多積極的應用。為了減輕負面影響,我們需要確保制定適當的政策和安全措施,防止負面使用。特別是,這種安全系統可能需要人工介入,以便被用來提高程序員的能力和生產力。”論文最後指出。
機器編程被各大科技公司看做是“解放程序員”的一種方式。
“MP 將使每個人都能以最適合自己的方式表達意圖,無論是代碼,自然語言還是其他方式,來創建軟件。” Justin Gottschlich 給 MISIM 提出的這個目標,實際上也是許多 AI 項目在 IT 領域的共同目標。
被 MISIM 拿來作比較的機器學習代碼推薦系統 Aroma,是 Facebook 2019年推出的一個項目,可以自動完成小程序,幫助程序員找到可以“參考使用”的代碼等等。
如安卓程序員想要了解如何解碼手機中的 bitmap,可以使用代碼直接搜索:
Bitmap bitmap = BitmapFactory.decodeStream(input);
Aroma 會給出一些代碼推薦:
final BitmapFactory.Options options = new BitmapFactory.Options();options.inSampleSize = 2;// ...Bitmap bmp = BitmapFactory.decodeStream(is, null, options);
前不久 DeepMind 也發佈了 AI 算法開發框架——Acme,提供比人類設計更有效的簡單算法版本。Acme 是一個分佈式強化學習框架,通過促使 AI 驅動的智能體在不同規模的環境中運行。該框架可以簡化、強化學習算法開發進程。
此外微軟也正在其軟件開發工具中,加入基本的代碼生成功能。OpenAI 的 GPT-3 語言模型也已經被多位開發者調用,從自然語言中生成簡單代碼段。
這些機器編程項目或是功能,什麼時候能發揮出多大的作用,目前似乎還沒有一個準確的答案。除了 GPT-3 剛上線就直接開放給開發者調用,像 MISIM 還主要是在英特爾內部使用。不過 GPT-3 偏向強調是一個可以更廣泛使用的 AI 模型,可以處理所有的語言任務,還能寫詩。MISIM 則是專注於代碼任務的一個系統。
更多關於一些開源的 MP 工具,請點擊文末“瞭解更多”