sponsored links

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

編輯:LRS

【新智元導讀】程式設計師的死對頭就是各種bug!最近微軟在NeurIPS 2021上帶來了一個好訊息,研究人員設計了一個類似GAN的網路,透過選擇器和檢測器來互相寫和改bug,而且還不需要標註資料!

常言道,「一杯茶,一包煙,一個bug改一天」。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

寫程式碼是軟體工程師們每天的工作,但當你辛辛苦苦寫了一大堆程式碼,卻發現無法執行的時候,內心一定是崩潰的。

找bug不僅費時費力,最關鍵的是還經常找不著,並且有時候改了一個bug又會引入更多bug,子子孫孫無窮盡也。

簡直就是找bug找到吐血。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

隨著AI技術的發展,各大公司開發的程式碼助手如GitHub Copilot等也能幫你少寫一些有bug的程式碼。

但這還遠遠不夠!

深度學習要是能幫我把程式碼裡的bug也給修了,我上班只負責摸魚,豈不是美滋滋!

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

微軟在NeurIPS 2021上還真發了一篇這樣的論文,其中提出了一個新的深度學習模型BugLab,並透過自監督的學習方法,可以在不借助任何標註資料的情況下檢測和修復程式碼中的bug,堪稱程式設計師的救世主!

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

https://arxiv.org/pdf/2105.12787.pdf

修bug難在哪?

所謂的bug,就是程式碼的實際執行和自己的預期不符。

該執行的沒執行,該輸出a,結果卻輸出個b,這種程式碼故意找茬的行為都屬於bug。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

所以想要找到並修復程式碼中的bug,不僅需要對程式碼的結構進行推理,還需要理解軟體開發者在程式碼註釋、變數名稱等方面留下的模糊的自然語言提示。

例如一段程式的意圖是,如果名字的長度超過了22個字元,那就只擷取前22個。但原始程式碼中錯誤地把大於號寫成了小於號,導致條件判斷錯誤,程式執行結果和預期不符。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

這種小錯誤在寫程式碼的過程也是太常見了,稍不注意就會把條件弄反。

還有一種bug就是使用了錯誤的變數,例如下面的例子裡面write和read弄錯了,就會導致條件判斷失敗,這種bug的修復只有在理解了變數名的意義後才能修復,傳統的修復手段對此是無能為力。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

這種錯誤看起來很簡單,但往往盯著看程式碼的時候卻很難發現,屬於一改改一天的那種。

並且每個程式設計師有自己的程式設計風格,比如不同的命名、縮排、判斷以及重構的方式,想讓程式碼來給自己找bug,一個字,難!

對於微軟來說,好在有GitHub程式碼庫可以用來訓練模型。但問題來了,GitHub上帶bug的程式碼有那麼多嗎?有bug誰還commit啊?就算能找到程式碼,也沒人來標註資料啊!

微軟提出的BugLab使用了兩個相互競爭的模型,透過玩躲貓貓(hide and seek)遊戲來學習,主要的靈感來源就是生成對抗網路(GAN)。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

由於有大量的程式碼實際上都是沒有bug的,所以需要設計一個bug selector來決定是否修改正確的程式碼來引入一個bug,以及以何種方式引入bug(例如把減號改為加號等)。當選擇器確定了bug的類別後,就透過編輯原始碼的方式引入bug。

另一個用來對抗的是bug detector,用來判斷一段程式碼是否存在bug,如果存在的話,它需要定位並修復這個bug。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

選擇器和檢測器都能夠在沒有標記資料的情況下共同訓練,也就是說整個訓練過程都是以自監督的方式進行,併成功在數百萬個程式碼片段上訓練。

selector負責寫bug,並把它藏(hide)起來,而detector負責找bug,並修復,整個過程就像躲貓貓一樣。

隨著訓練的進行,selector寫bug越來越熟練,而detector也能夠應對更復雜的bug。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

整個過程與GAN的訓練大體相似,但目的卻大不相同。GAN的目的是獲得一個更好的生成器來修改圖片,但BugLab的目的是找到一個更好的檢測器(GAN中的判別器)。

並且整個訓練也可以看作是一個teacher-student模型,選擇器教會檢測器如何定位並修復bug。

為開源社群修bug!

雖然從理論上來說,使用這種hide and seek的方式可以訓練更復雜的selector來生成更多樣的bug,從而detector的修bug能力也會更強。

但以目前的AI發展水平來說,還無法教會selector寫更難的bug。

所以研究人員表示,我們需要集中精力關注那些更經常犯的錯誤,包括不正確的比較符,或者不正確的布林運算子,錯誤的變數名引用等等其他一些簡單的bug。並且為了簡單起見,實驗中只針對python程式碼進行研究訓練。

雖然這些解釋聽起來都像是藉口。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

為了衡量模型的效能,研究人員從Python包索引中手動註釋了一個小型bug資料集,和其他替代方案(例如隨機插入bug的selector)相比,使用hide and seek方法訓練的模型效能最多可以提高30%

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

並且實驗表明大約26%的bug都可以被發現並自動修復。在檢測器發現的bug中,有19個在現實生活中的開源GitHub程式碼中都屬於是未知的bug。

滅霸來了!微軟釋出BugLab:無需標註,GAN掉bug

但模型也會對正確的程式碼報告存在bug,所以這個模型在離實際部署上線還有一段距離。

如果更深入地研究selector和detector模型的話,就會引出那個老生常談的問題:深度學習模型到底有沒有,又怎麼樣去「理解」一段程式碼的作用?

過去的研究表明,將程式碼表示為一個token序列就能夠產生次優的(suboptimal)效果。

但如果想要利用程式碼中的結構,例如語法、資料、控制流等等,就需要將程式碼中的語法節點、表示式、識別符號、符號等等都表示為一個圖上的節點,並用邊來表示節點間的關係。

有了圖以後就可以使用神經網路來訓練detector和selector了。研究人員使用圖神經網路(GNN)和relational transformer都進行了實驗,結果發現GNN總體上優於relational transformer。

如何讓AI幫助人類來寫程式碼和改bug一直都是人工智慧研究中的一項基礎任務,任務過程中AI模型需要理解人類對程式程式碼、變數名稱和註釋提供的上下文線索來理解程式碼的意圖。

雖然BugLab離真正解放程式設計師改bug還很遙遠,但距離我們消滅bug總算又向前走了一步!

參考資料:

https://www.microsoft.com/en-us/research/blog/finding-and-fixing-bugs-with-deep-learning/

分類: 娛樂
時間: 2021-12-22

相關文章

《啟航:當風起時》毛曉慧行走的種草機,港風穿搭YYDS

《啟航:當風起時》毛曉慧行走的種草機,港風穿搭YYDS
不知道大家有沒有看最近騰訊影片正在熱播的<啟航:當風起時>,我一口氣追到了12集根本停不下來,一邊為蕭闖裴慶華的事業緊張,一邊為蕭闖謝航的神仙愛情流淚,一邊又被毛曉慧在劇中的神仙穿搭種草, ...

5部“毀經典”的劇集,陳妍希形象直接崩塌,張一山演技顛覆認知

5部“毀經典”的劇集,陳妍希形象直接崩塌,張一山演技顛覆認知
在今年新版的<天龍八部>播出之後: 直接成為了歷屆翻拍作品當中評價最低的一部劇集了: 其中的各種魔改可謂是重新整理了觀眾們的三觀. 而"翻拍劇"一直走在路上,從來沒有停 ...

正在熱播的四部劇,一部比一部“豪橫”,你正在追哪一部呢

正在熱播的四部劇,一部比一部“豪橫”,你正在追哪一部呢
雖然暑假早已落幕,但奔湧出的各類題材劇之間的較量依舊火力十足,完全不亞於暑假檔的追劇熱潮.那麼接下來我們一起來看看正在熱播的這四部劇,你正在追哪一部呢? 1.<雙探> <雙探> ...

一部接一部撲了!是誰給《新神鵰俠侶》勇氣?是《天龍八部》

一部接一部撲了!是誰給《新神鵰俠侶》勇氣?是《天龍八部》
金庸小說應該是很多人童年中的熱門讀物,那時候總會幻想著自己是鋤強扶弱的大俠.不僅是小說受歡迎,拍出來的電視亦是非常受歡迎的. 雖說這些小說的電視劇已經有很多個版本了,但還是樂此不疲地翻拍,不就是看中了 ...

近期口碑最佳的五部劇,《一生一世》無緣前三,你在追哪一部?

近期口碑最佳的五部劇,《一生一世》無緣前三,你在追哪一部?
第五部<一生一世> 看完周生如故家國天下,再來看一生一世周生小宅,整劇還是充滿著愛國情懷的.整部劇的起源就是周生辰這個人物想要為發揚傳統文化而回來繼承家族產業,還是一部正能量的劇.任嘉倫演 ...

《啟航:當風起時》:熱血青年在時代的浪潮中拼搏闖蕩
兩個網際網路創業青年的事業發展軌跡呈現在熒屏之上,一段年輕人在時代浪潮下不斷追夢.拼搏闖蕩的故事徐徐展開--由劉暢.馬一鳴執導,吳磊.侯明昊.毛曉慧等聯袂主演的青春勵志年代劇<啟航:當風起時&g ...

矯揉造作就別演軍旅劇了,這8位女星告訴你,什麼叫颯爽軍人氣質

矯揉造作就別演軍旅劇了,這8位女星告訴你,什麼叫颯爽軍人氣質
很長一段時間我們一些神劇將軍人形象娛樂化,男愛豆染著披肩黃髮演軍人,女流量踩著高跟鞋,化著大濃妝演女兵,甚至上了戰場開槍前還要塗一塗口紅. 演技也很浮誇,各種嬌滴滴.矯揉造作,讓觀眾愕然. 熒幕上的女 ...

對越自衛反擊戰中,有哪幾位首長兒子在戰場上壯烈犧牲?

對越自衛反擊戰中,有哪幾位首長兒子在戰場上壯烈犧牲?
常言道:"虎父無犬子",英雄的後輩,也大都是英雄.他們在父輩們耳濡目染的薰陶之下,養成了堅韌不拔的品格,也將保家衛國的一腔孤勇,鐫刻在了基因之中. 最為人所熟知的"父一輩 ...

身家2600億,泥瓦匠出身的他如何將一家小廠做成世界500強?

身家2600億,泥瓦匠出身的他如何將一家小廠做成世界500強?
陳建華 文|風馬牛 (微信公眾號:馮侖風馬牛) 在< 2021 胡潤全球富豪榜>上,有一對民營企業家夫婦十分亮眼,那就是恆力集團創始人陳建華.範紅衛夫婦,他們以 2600 億元財富位列中國 ...

得物App“先鑑別,後發貨”,讓品質網購激發消費新潛力

得物App“先鑑別,後發貨”,讓品質網購激發消費新潛力
以得物App為代表的新電商正成為新一代年輕人線上購物的首選,帶動這種網購新趨勢的正是年輕人對"高品質"的需求. 2015年,得物誕生於上海,幫助年輕人瞭解.獲取.交流讓他們有幸福感 ...

上海姑娘嫁給“糧草官”,結婚7年後,丈夫坦白:毛主席是我堂兄

上海姑娘嫁給“糧草官”,結婚7年後,丈夫坦白:毛主席是我堂兄
1989年3月7日下午,在山西省太原市的一家部隊醫院裡,一位名叫王勳的80歲老人在生命的最後時刻,留戀地打量著身旁的一切. "老徐,你過來." 他輕聲細語地招呼妻子坐到自己身邊,十 ...

文物鑑定界的七大丑聞

文物鑑定界的七大丑聞
為民藏吶喊!民間收藏終將發揚光大. 文物鑑定的基本要求,應用辯證唯物主義的觀點和方法,對文物的真實性.科學性作出正確判斷.說白了就是眼力至上,不被外界所幹擾,考驗的不僅是一個人的能力,還有人品道德的因 ...

狗界智商前8名,你能猜對幾個?可能你家也在養

狗界智商前8名,你能猜對幾個?可能你家也在養
地球上只要是開智了的動物都會有自己的"智商",而加拿大一位心理研究學者就透過狗狗的 反應能力.學習能力.服從性等幾個方面開始對不同品種的狗狗進行智商排名.那你知道智商前8名的狗狗都 ...

安徽省六安市地名中“六”讀音考辨

安徽省六安市地名中“六”讀音考辨
安徽省六安市地名中"六"的讀音是一個聚訟紛紜的話題.從字.詞典中"六"的讀音.古地名"六"及其古音.民眾語言習慣及語言態度來看,六安中的&q ...

四色問題(一個虛構的故事)
1. 立秋過後,我常夢見他,夢裡他穿著純白T恤,一副喪家狗的模樣,手上沾著血.他望著她,她像夏花一樣怒放.我不知道她看到新聞時的表情是像突然散落一地的海棠?還是像被風吹落的葉子.踩在腳下清脆的一聲嘆息 ...

研發更多更好的藥物(大健康觀察)

研發更多更好的藥物(大健康觀察)
來源:海外網 圖為工作中的柳紅.受訪者供圖 "新藥研究週期長.投入大.失敗率高,卻是一份值得你傾注畢生的工作."前不久,剛剛榮獲了上海市"最美科技工作者"稱號的 ...

22日中央媒體涉皖重點報道
1.人民日報:第3版整版綜合報道<豐收的田野是最美的畫卷(中國農民豐收節特別報道)--寫在第四個中國農民豐收節即將到來之際(本報記者高雲才.鬱靜嫻.王浩)>(廬江縣).第4版綜合報道< ...

中國建築又一項世界之最!新雪國金頂酒店建有638米高穿山電梯

中國建築又一項世界之最!新雪國金頂酒店建有638米高穿山電梯
新雪國金頂酒店由香港構詩建築.同圓設計集團.北京元道聯袂打造.作為新雪國度假區的頂級度假酒店,將是未來世界最高穿山電梯的終點,同時也是800m落差高階雪道的起點. 1.速度&激情 新雪國金頂酒 ...

中科院付巧妹團隊登Science特刊,從古DNA中一窺人類演化

中科院付巧妹團隊登Science特刊,從古DNA中一窺人類演化
來源:Science 編輯:好睏 [新智元導讀]人類基因組草圖發表20週年之際,Science發表紀念特刊.其中,來自中科院古脊椎所的團隊系統地梳理了過去十餘年來古人類基因組研究的進展. 1990年, ...

廣西學生軍:戰火中的青春之歌
"我們是廣西青年學生軍,我們是鐵打的一群,在偉大的時代裡擔負起偉大的使命--" 這首慷慨激昂的歌曲誕生於1937年,一群意氣風發的青年辭別親人,高唱著這首歌義無反顧地奔赴抗日戰場. ...