AI koji uspješno popravlja kodove programa
- Objavljeno u Novosti
Računalni zanstvenici MIT-a već se duže vrijeme bave razvojem AI-a koji otkriva bugove u softverskim kodovima, a sada tvrde da su kreirali najbolji do sada, koji se temelji na sustavu strojnog učenja, te je u stanju pretraživati baze open-source softvera i baze popravaka kodova, kako bi razumio njihova svojstva, te prema tome otkrivao greške u kodu bilo kojeg drugog softvera i popravljao ih
Profesor Martin Rinard, čija grupa je razvila novi sustav kaže da su dosadašnji sustavi mogli popraviti jedan do dva buga u softveru, dok njihov može popraviti između 15 i 18, ovisno o tome radi li se o prvom rješenju koje pronađe, ili mu se zada duže i detaljnije pretraživanje.
"Ono što je najintrigantnije kod ovog istraživanja je što smo otkrili da doista postoje univerzalna svojstva točnog koda koja možete naučiti iz jednog seta aplikacija i primijeniti ih na druge", navodi Rinard. "Ako možete prepoznati točan kod, to može imati velike implikacije na softverski inženjering. Ovo je samo prva aplikacija od onoga za što vjerujemo da će postati potpuno nova izvrsna tehnika".
Glavni aspekt dizajna Rinardovog tima u ovom sustavu strojnog učenja je u skupu značajki koje će sustav analizirati. Znanstvenici su se koncentrirali na vrijednosti pohranjene u memoriji, bilo na varijable koje se mogu modificirati tijekom izvršavanja programa, ili konstante koje ne mogu. Identificirali su 30 osnovnih značajki datih vrijednosti koje mogu biti dio operacija poput zbrajanja i množenja, ili usporedbi poput "veće od jednakog tome", koje mogu biti lokalne, odnosno mogu se pojaviti u samo jednom "single" bloku koda ili globalno, što znači dostupnost kodu kao cjelini, a mogu biti i varijable koje reprezentiraju konačni rezultat kalkulacija i slično.
Rinard i njegov kolega Long napisali su računalni program koji evaluira sve moguće relacije između tih značajki na uzastopnim linijama koda. U njihovom setu svojstava nalazi se više od 3.500 takvih povezanosti, a algoritam za strojno učenje potom pokušava ustanoviti koja kombinacija značajki može najkonzistentnije predvidjeti uspješnost zakrpi.
Znanstvenici su sustav koji nazivaju Prophet (prorok) testirali na 69 programskih grešaka koje su se pojavile u 8 popularnih open-source programa.
Nakon što su sustavu omogućili 12 sati potrage, uspio je popraviti 19 grešaka, što znači da ih je ostalo još 50, ali već i taj rezultat puno obećava i pokazuje im da se nalaze na dobrom putu. U svojem daljem radu znanstvenici planiraju unaprijediti sustav strojnog učenja da bude u stanju pronalaziti i popravljati znatno kompleksnije greške.
Također navode da je revolucionaran aspekt Propheta u tome što koristi uspješne zakrpe za učenje novih, te vjeruju kako bi mogao znatno unaprijediti mnoge programerske zadaće.
Izvor: MIT