走向可以像人類一樣推理代碼的深度學(xué)習(xí)模型
無論公司從事何種業(yè)務(wù),軟件都扮演著越來越重要的角色,從管理庫存到與客戶互動(dòng)。因此,對軟件開發(fā)人員的需求比以往任何時(shí)候都大,這推動(dòng)了將一些占用他們時(shí)間的更簡單任務(wù)自動(dòng)化的趨勢。
Eclipse 和 Visual Studio 等生產(chǎn)力工具會(huì)建議代碼片段,開發(fā)人員可以在編寫時(shí)輕松放入他們的工作中。這些自動(dòng)化功能由復(fù)雜的語言模型提供支持,這些語言模型在吸收了數(shù)千個(gè)示例后學(xué)會(huì)了讀寫計(jì)算機(jī)代碼。但是,與在沒有明確指令的情況下在大數(shù)據(jù)集上訓(xùn)練的其他深度學(xué)習(xí)模型一樣,專為代碼處理而設(shè)計(jì)的語言模型也存在內(nèi)置漏洞。
由 MIT 和 IBM 研究人員構(gòu)建的框架發(fā)現(xiàn)并修復(fù)了自動(dòng)編程工具中的弱點(diǎn),這些弱點(diǎn)使它們?nèi)菀资艿焦?。一種工具(如圖)隨著程序員編寫和建議代碼而閱讀。在這里,它從 Python 的 NumPy 庫中的數(shù)千個(gè)選項(xiàng)中挑選最適合手頭任務(wù)的函數(shù)。圖片來源:麻省理工學(xué)院的 Shashank Srikant
“除非你真的很小心,否則黑客可以巧妙地操縱這些模型的輸入,讓它們預(yù)測任何事情,”麻省理工學(xué)院電氣工程和計(jì)算機(jī)科學(xué)系的研究生Shashank Srikant說 。“我們正在努力研究并防止這種情況發(fā)生。”
在一篇新論文中,Srikant 和 MIT-IBM Watson AI Lab推出了一種自動(dòng)方法,用于查找代碼處理模型中的弱點(diǎn)并重新訓(xùn)練它們以提高抵御攻擊的能力。這是 MIT 研究員Una-May O'Reilly 和 IBM 附屬研究員 Sijia Liu共同努力的一部分, 旨在利用 AI 使自動(dòng)化編程工具更智能、更安全。該團(tuán)隊(duì)將在國際學(xué)習(xí)代表會(huì)議上展示其結(jié)果。
一臺能夠自我編程的機(jī)器曾經(jīng)看起來像科幻小說。但是,計(jì)算能力的指數(shù)級增長、自然語言處理的進(jìn)步以及互聯(lián)網(wǎng)上的大量免費(fèi)代碼使得軟件設(shè)計(jì)的至少某些方面的自動(dòng)化成為可能。
在 GitHub 和其他程序共享網(wǎng)站上接受過訓(xùn)練,代碼處理模型學(xué)習(xí)生成程序,就像其他語言模型學(xué)習(xí)編寫新聞故事或詩歌一樣。這使他們能夠充當(dāng)智能助手,預(yù)測軟件開發(fā)人員接下來會(huì)做什么,并提供幫助。他們可能會(huì)建議適合手頭任務(wù)的程序,或者生成程序摘要來記錄軟件的工作方式。還可以訓(xùn)練代碼處理模型來查找和修復(fù)錯(cuò)誤。但是,盡管它們具有提高生產(chǎn)力和改進(jìn)軟件質(zhì)量的潛力,但它們帶來了研究人員剛剛開始發(fā)現(xiàn)的安全風(fēng)險(xiǎn)。
Srikant 和他的同事發(fā)現(xiàn),代碼處理模型可以通過簡單地重命名變量、插入虛假的打印語句或?qū)⑵渌揎棽僮饕肽P驮噲D處理的程序來欺騙。 這些經(jīng)過巧妙修改的程序正常運(yùn)行,但會(huì)欺騙模型錯(cuò)誤地處理它們,從而做出錯(cuò)誤的決定。
這些錯(cuò)誤會(huì)對所有類型的代碼處理模型產(chǎn)生嚴(yán)重的后果。惡意軟件檢測模型可能會(huì)被欺騙,將惡意程序誤認(rèn)為良性程序。代碼完成模型可能會(huì)被欺騙提供錯(cuò)誤或惡意的建議。在這兩種情況下,病毒都可能被毫無戒心的程序員偷偷溜走。一個(gè)類似的問題困擾著計(jì)算機(jī)視覺模型:正如麻省理工學(xué)院的其他研究表明的那樣,編輯輸入圖像中的幾個(gè)關(guān)鍵像素,模型可能會(huì)將豬混淆為飛機(jī),將烏龜混淆 為步槍。
就像最好的語言模型一樣,代碼處理模型有一個(gè)關(guān)鍵缺陷:它們是單詞和短語之間統(tǒng)計(jì)關(guān)系的專家,但只能模糊地掌握它們的真正含義。例如,OpenAI 的 GPT-3 語言模型可以寫出從雄辯到荒謬的散文,但只有人類讀者才能分辨出其中的區(qū)別。
代碼處理模型也不例外。“如果他們真的在學(xué)習(xí)程序的內(nèi)在屬性,那么應(yīng)該很難欺騙他們,”Srikant 說。“但他們不是。他們目前相對容易被欺騙。”
在論文中,研究人員提出了一個(gè)框架,用于自動(dòng)更改程序以暴露處理它們的模型中的弱點(diǎn)。它解決了一個(gè)兩部分的優(yōu)化問題;算法識別程序中添加或替換文本會(huì)導(dǎo)致模型出現(xiàn)最大錯(cuò)誤的站點(diǎn)。它還確定了哪些類型的編輯構(gòu)成了最大的威脅。
研究人員說,該框架揭示的是某些模型是多么脆弱。當(dāng)對程序進(jìn)行一次編輯時(shí),他們的文本摘要模型失敗了三分之一;他們報(bào)告說,在進(jìn)行了五次編輯時(shí),有一半以上的時(shí)間都失敗了。另一方面,他們表明該模型能夠從錯(cuò)誤中學(xué)習(xí), 并在此過程中潛在地獲得對編程的更深入理解。
該研究的共同資深作者劉說:“我們用于攻擊模型并針對這些特定漏洞對其進(jìn)行重新訓(xùn)練的框架,可能有助于代碼處理模型更好地掌握程序的意圖。” “這是一個(gè)有待探索的令人興奮的方向。”
在后臺,一個(gè)更大的問題仍然存在:這些黑盒深度學(xué)習(xí)模型到底在學(xué)習(xí)什么?“他們是否像人類一樣推理代碼,如果不是,我們?nèi)绾沃谱魉鼈?” 奧萊利說。“這是我們面臨的巨大挑戰(zhàn)。”
標(biāo)簽: