Microsoft-forskere: Vi har trent opp AI til å finne programvarefeil ved å bruke gjemsel

0
173

Liam TungSkrevet av Liam Tung, bidragsyter Liam Tung Liam Tung Bidragsyter

Liam Tung er en australsk forretningsteknologijournalist som bor noen for mange svenske mil nord for Stockholm for hans smak. Han tok en bachelorgrad i økonomi og kunst (kulturstudier) ved Sydneys Macquarie University, men hacket seg (uten norrønt eller ondsinnet kode for den saks skyld) seg inn i en karriere som enterprise tech-, sikkerhets- og telekommunikasjonsjournalist hos ZDNet Australia.

Full bio 10. desember 2021 | Emne: Enterprise Software

Microsoft-forskere har jobbet med en dyp læringsmodell som ble opplært til å finne programvarefeil uten noen virkelige feil å lære av.

Mens det er dusinvis av verktøy tilgjengelig for statisk analyse av kode på forskjellige språk for å finne sikkerhetsfeil, har forskere utforsket teknikker som bruker maskinlæring for å forbedre muligheten til både å oppdage feil og fikse dem. Det er fordi å finne og fikse feil i kode kan være vanskelig og kostbart, selv når du bruker AI for å finne dem.

Forskere Microsoft Research Cambridge, Storbritannia har detaljert arbeidet sitt med BugLab, en Python-implementering av “en tilnærming for selvovervåket læring av feildeteksjon og reparasjon”. Det er “selvovervåket” ved at de to modellene bak BugLab ble trent uten merket data.

Denne ambisjonen om ikke-trening ble drevet av mangelen på kommenterte feil i den virkelige verden å trene dyplæringsmodeller for å finne feil på. Selv om det er store mengder kildekode tilgjengelig for slik opplæring, er den stort sett ikke kommentert.

BugLab har som mål å finne vanskelige å oppdage feil kontra kritiske feil som allerede kan finnes gjennom tradisjonelle programanalyser. Tilnærmingen deres lover å unngå den kostbare prosessen med å manuelt kode en modell for å finne disse feilene.

Gruppen hevder å ha funnet 19 tidligere ukjente feil i åpen kildekode Python-pakker fra PyPI som beskrevet i papiret, Self-Supervised Bug Detection and Repair, presentert på Neural Information Processing Systems (NeurIPS) 2021-konferansen denne uken.

“BugLab kan læres å oppdage og fikse feil, uten å bruke merket data, gjennom et “gjem-og-søk”-spill,” forklarer Miltos Allamanis, en hovedforsker ved Microsoft Research og Marc Brockschmidt, en seniorrektor forskningssjef i Microsoft. Begge er forfattere av avisen.

Utover å resonnere over strukturen til et stykke kode, mener de at feil kan bli funnet “ved å forstå tvetydige naturlige språkhint som programvareutviklere legger igjen i kodekommentarer, variabelnavn og mer.”

Tilnærmingen deres i BugLab, som bruker to konkurrerende modeller, bygger på eksisterende selvovervåket læringsinnsats i feltet som bruker dyp læring, datasyn og naturlig språkbehandling (NLP). Det ligner også på eller er “inspirert av” GAN-er eller generative motstridende nettverk – de nevrale nettverkene som noen ganger brukes til å lage dype forfalskninger.

“I vårt tilfelle tar vi sikte på å trene en feildeteksjonsmodell uten å bruke treningsdata fra virkelige feil,” bemerker de i avisen.

BugLabs to modeller inkluderer feilvelger og feildetektor: “Gitt en eksisterende kode, antatt å være korrekt, bestemmer en feilvelgermodell om den skal introdusere en feil, hvor den skal introduseres, og dens eksakte form (f.eks. erstatte en spesifikk ” +” med en “-“). Gitt velgervalget, blir koden redigert for å introdusere feilen. Deretter prøver en annen modell, feildetektoren, å finne ut om en feil ble introdusert i koden, og i så fall finne den , og fiks det.”

Modellene deres er ikke et GAN fordi BugLabs “feilvelger genererer ikke en ny kodebit fra bunnen av, men omskriver i stedet en eksisterende kodebit (antatt å være riktig).”

Fra forskernes testdatasett av 2374 virkelige Python-pakkefeil, viste de at 26 % av feilene kan bli funnet og fikset automatisk.

Teknikken deres flagget imidlertid også for mange falske positive, eller feil som egentlig ikke var feil. For eksempel, mens den oppdaget noen kjente feil, var bare 19 av de 1000 rapporterte advarslene fra BugHub faktisk virkelige feil.

Å trene et nevralt nettverk uten å bruke ekte feiltreningsdata høres ut som en tøff nøtt å knekke. For eksempel var noen feil åpenbart ikke en feil, men ble merket som sådan av de nevrale modellene.

“Noen rapporterte problemer var så komplekse at det tok oss (de menneskelige forfatterne) et par minutter å tenke på å konkludere med at en advarsel er falsk,” bemerker de i avisen.

“Samtidig er det noen advarsler som “åpenbart” er feil for oss, men årsakene til at nevrale modellene øker dem er uklare.”

Når det gjelder de 19 nulldagene feil de fant, rapporterte de 11 av dem på GitHub, hvorav 6 er slått sammen og 5 venter på godkjenning. Noen av de 19 var for små til å gidde å rapportere.

Cloud | Big Data Analytics | Innovasjon | Teknikk og arbeid | Samarbeid | Utvikler