211service.com
Et nytt nevralt nettverk kan hjelpe datamaskiner med å kode seg selv
Ms Tech
Dataprogrammering har aldri vært lett. De første koderne skrev ut programmer for hånd, og scrawlet symboler på millimeterpapir før de konverterte dem til store bunker med hullkort som kunne behandles av datamaskinen. Ett merke malplassert og det hele må kanskje gjøres om.
I dag bruker kodere en rekke kraftige verktøy som automatiserer mye av jobben, fra å fange opp feil mens du skriver til å teste koden før den distribueres. Men på andre måter har lite endret seg. En dum feil kan fortsatt krasje et helt stykke programvare. Og etter hvert som systemene blir mer og mer komplekse, blir det vanskeligere og vanskeligere å spore opp disse feilene. Det kan noen ganger ta team med programmerere dager å fikse en enkelt feil, sier Justin Gottschlich, direktør for forskningsgruppen for maskinprogrammering hos Intel.
Det er derfor noen mennesker mener at vi bare bør få maskiner til å programmere seg selv. Automatisert kodegenerering har vært et hett forskningstema i en årrekke. Microsoft bygger grunnleggende kodegenerering inn i sine mye brukte programvareutviklingsverktøy, Facebook har laget et system kalt Lukt som autofullfører små programmer, og DeepMind har utviklet et nevralt nettverk som kan komme opp med mer effektive versjoner av enkle algoritmer enn de som er utviklet av mennesker. Selv OpenAIs GPT-3 språkmodell kan lage enkle kodebiter , for eksempel nettsideoppsett, fra forespørsler på naturlig språk.
Gottschlich og hans kolleger kaller dette maskinprogrammering . I samarbeid med et team fra Intel, MIT og Georgia Institute of Technology i Atlanta, har han utviklet et system kalt Maskinavledet kodelikhet , eller MISIM, som kan trekke ut betydningen av et stykke kode – hva koden forteller datamaskinen å gjøre – på omtrent samme måte som NLP-systemer (natural-language processing) kan lese et avsnitt skrevet på engelsk.
MISIM kan da foreslå andre måter koden kan skrives på, og tilby rettelser og måter å gjøre den raskere eller mer effektiv. Verktøyets evne til å forstå hva et program prøver å gjøre, lar det identifisere andre programmer som gjør lignende ting. I teorien kan denne tilnærmingen brukes av maskiner som skrev sin egen programvare, og trekker på et lappeteppe av eksisterende programmer med minimal menneskelig tilsyn eller input.
MISIM fungerer ved å sammenligne kodebiter med millioner av andre programmer den allerede har sett, hentet fra et stort antall online repositories. Først oversetter den koden til en form som fanger opp hva den gjør, men ignorerer hvordan den er skrevet, fordi to programmer skrevet på veldig forskjellige måter noen ganger gjør det samme. MISIM bruker deretter et nevralt nettverk for å finne annen kode som har en lignende betydning. I en forhåndstrykk , Gottschlich og hans kolleger rapporterer at MISIM er 40 ganger mer nøyaktig enn tidligere systemer som prøver å gjøre dette, inkludert Aroma.
MISIM er et spennende skritt fremover, sier Veselin Raychev, CTO i det sveitsisk-baserte selskapet DeepCode, hvis feilfangende verktøy – blant de mest avanserte på markedet – bruker nevrale nettverk som er trent på millioner av programmer for å foreslå forbedringer for kodere mens de skriver .
Men maskinlæring er fortsatt ikke bra til å forutsi om noe er en feil eller ikke, sier Raychev. Det er fordi det er vanskelig å lære et nevralt nettverk hva som er eller ikke er en feil med mindre det har blitt merket som sådan av et menneske.
Det er mye interessant forskning som gjøres med dype nevrale nettverk og feilretting, sier han, men praktisk talt er de ikke der ennå, med en veldig stor margin. Vanligvis produserer AI-feilfangende verktøy mange falske positiver, sier han.
MISIM kommer rundt dette ved å bruke maskinlæring for å oppdage likheter mellom programmer i stedet for å identifisere feil direkte. Ved å sammenligne et nytt program med en eksisterende programvare som er kjent for å være korrekt, kan det varsle koderen om viktige forskjeller som kan være feil.
Intel planlegger å bruke verktøyet som et kodeanbefalingssystem for utviklere internt, og foreslår alternative måter å skrive kode på som er raskere eller mer effektive. Men fordi MISIM ikke er knyttet til syntaksen til et spesifikt program, er det mye mer det potensielt kan gjøre. For eksempel kan det brukes til å oversette kode skrevet på et gammelt språk som COBOL til et mer moderne språk som Python. Dette er viktig fordi mange institusjoner, inkludert amerikanske myndigheter , fortsatt stole på programvare skrevet på språk som få kodere vet hvordan de skal vedlikeholde eller oppdatere.
Til syvende og sist tror Gottschlich at denne ideen kan brukes på naturlig språk. Kombinert med NLP kan evnen til å jobbe med betydningen av kode atskilt fra dens tekstlige representasjon en dag la folk skrive programvare ganske enkelt ved å beskrive hva de vil gjøre med ord, sier han.
Å bygge små apper for telefonen din, eller slike ting som vil hjelpe hverdagen din – jeg tror de ikke er så langt unna, sier Gottschlich. Jeg vil gjerne se 8 milliarder mennesker lage programvare på den måten som er mest naturlig for dem.