Naujas neuroninis tinklas galėtų padėti kompiuteriams koduoti save

AI rašo kompiuterio kodą

Ponia Tech





Kompiuterių programavimas niekada nebuvo lengvas. Pirmieji programuotojai programas rašė rankomis, nubraižydami simbolius ant milimetrinio popieriaus, prieš paversdami juos dideliais perfokortelių šūsniais, kuriuos galėtų apdoroti kompiuteris. Viena žyma ne vietoje ir gali tekti viską perdaryti.

Šiais laikais programuotojai naudoja daugybę galingų įrankių, kurie automatizuoja didžiąją darbo dalį – nuo ​​klaidų fiksavimo įvedant tekstą iki kodo testavimo prieš jį įdiegiant. Tačiau kitais atžvilgiais mažai kas pasikeitė. Viena kvaila klaida vis tiek gali sugadinti visą programinės įrangos dalį. Sistemoms vis sudėtingėjant, šių klaidų sekimas darosi vis sunkesnis. Kartais programuotojų komandoms gali prireikti dienų, kad ištaisytų vieną klaidą, sako Justinas Gottschlichas, „Intel“ mašinų programavimo tyrimų grupės direktorius.

Štai kodėl kai kurie žmonės mano, kad turėtume tiesiog priversti mašinas užprogramuoti save. Automatizuotas kodų generavimas jau keletą metų buvo karšta tyrimų tema. „Microsoft“ kuria pagrindinio kodo generavimą į savo plačiai naudojamus programinės įrangos kūrimo įrankius, „Facebook“ sukūrė sistemą, vadinamą Kvapas kuris automatiškai užbaigia mažas programas, o „DeepMind“ sukūrė neuroninį tinklą, kuris gali sugalvoti efektyvesnės versijos paprastų algoritmų nei tie, kuriuos sukūrė žmonės. Netgi OpenAI GPT-3 kalbos modelis gali išmeskite paprastas kodo dalis , pvz., tinklalapių maketus, iš raginimų natūralia kalba.



Gottschlichas ir jo kolegos tai vadina mašinų programavimas . Dirbdamas su komanda iš Intel, MIT ir Džordžijos technologijos instituto Atlantoje, jis sukūrė sistemą, vadinamą Mašinos numanomas kodo panašumas , arba MISIM, kuri gali išgauti kodo dalies reikšmę – tai, ką kodas liepia kompiuteriui – panašiai kaip natūralios kalbos apdorojimo (NLP) sistemos gali perskaityti pastraipą, parašytą anglų kalba.

Tada MISIM gali pasiūlyti kitus kodo rašymo būdus, siūlydama pataisymus ir būdus, kaip padaryti jį greitesnį ar efektyvesnį. Įrankio gebėjimas suprasti, ką programa bando daryti, leidžia nustatyti kitas programas, kurios atlieka panašius veiksmus. Teoriškai šį metodą galėtų naudoti mašinos, kurios kūrė savo programinę įrangą, remdamosi jau egzistuojančių programų kratiniu ir minimalia žmogaus priežiūra ar įvestimi.

MISIM veikia lygindama kodo fragmentus su milijonais kitų jau matytų programų, paimtų iš daugybės internetinių saugyklų. Pirmiausia jis paverčia kodą į formą, kuri užfiksuoja tai, ką jis daro, bet nepaiso, kaip jis parašytas, nes dvi labai skirtingais būdais parašytos programos kartais atlieka tą patį. Tada MISIM naudoja neuroninį tinklą, kad surastų kitą kodą, turintį panašią reikšmę. A išankstinis spausdinimas Gottschlichas ir jo kolegos praneša, kad MISIM yra 40 kartų tikslesnis už ankstesnes sistemas, kurios bando tai padaryti, įskaitant „Aroma“.



MISIM yra jaudinantis žingsnis į priekį, sako Veselinas Rayčevas, Šveicarijoje įsikūrusios bendrovės „DeepCode“ techninis direktorius, kurios klaidų gaudymo įrankiai – vieni pažangiausių rinkoje – naudoja neuroninius tinklus, apmokytus pagal milijonus programų, kad pasiūlytų tobulinti programuotojus jiems rašant. .

Tačiau mašininis mokymasis vis dar nėra puikus nuspėti, ar kažkas yra klaida, sako Raychevas. Taip yra todėl, kad sunku išmokyti neuroninį tinklą, kas yra klaida ar ne, nebent žmogus ją taip pažymėjo.

Jis sako, kad atliekama daug įdomių tyrimų, susijusių su giliais neuroniniais tinklais ir klaidų taisymu, tačiau praktiškai jų dar nėra, labai daug. Paprastai dirbtinio intelekto klaidų gaudymo įrankiai sukuria daug klaidingų teigiamų rezultatų, sako jis.



MISIM tai apeina naudodama mašininį mokymąsi, kad nustatytų programų panašumus, o ne tiesiogiai nustatytų klaidas. Palyginus naują programą su esama programine įranga, kuri žinoma kaip teisinga, ji gali įspėti programuotoją apie svarbius skirtumus, kurie gali būti klaidų.

„Intel“ planuoja naudoti įrankį kaip kodo rekomendacijų sistemą kūrėjams, siūlydama alternatyvius greitesnius ar efektyvesnius kodo rašymo būdus. Tačiau kadangi MISIM nėra susieta su konkrečios programos sintaksė, ji gali padaryti daug daugiau. Pavyzdžiui, jis gali būti naudojamas sena kalba, pvz., COBOL, parašytui kodui išversti į modernesnę kalbą, pvz., Python. Tai svarbu, nes daugelis institucijų, įskaitant JAV vyriausybė , vis dar pasikliauja programine įranga, parašyta kalbomis, kurias tik nedaugelis programuotojų moka prižiūrėti ar atnaujinti.

Galiausiai Gottschlichas mano, kad ši idėja gali būti pritaikyta natūraliai kalbai. Kartu su NLP, galimybė dirbti su kodo reikšme atskirai nuo jo tekstinio vaizdavimo vieną dieną galėtų leisti žmonėms rašyti programinę įrangą tiesiog žodžiais apibūdindami, ką jie nori padaryti, sako jis.



Kurkite mažas programėles savo telefonui ar panašius dalykus, kurie padės jūsų kasdieniame gyvenime – manau, kad tai nėra per toli, sako Gottschlich. Norėčiau, kad 8 milijardai žmonių kurtų programinę įrangą tokiu būdu, kuris jiems yra natūraliausias.

paslėpti