Et nyt neuralt netværk kan hjælpe computere med at kode sig selv

AI skriver computerkode

Ms Tech





Computerprogrammering har aldrig været let. De første kodere skrev programmer ud i hånden, scrawlede symboler på millimeterpapir, før de konverterede dem til store stakke af hulkort, som kunne behandles af computeren. Et mærke malplaceret og det hele skal måske laves om.

I dag bruger kodere en række kraftfulde værktøjer, der automatiserer meget af jobbet, fra at fange fejl, mens du skriver, til at teste koden, før den implementeres. Men på andre måder har lidt ændret sig. En tåbelig fejl kan stadig nedbryde et helt stykke software. Og efterhånden som systemerne bliver mere og mere komplekse, bliver det sværere og sværere at spore disse fejl. Det kan nogle gange tage hold af kodere dage at rette en enkelt fejl, siger Justin Gottschlich, direktør for maskinprogrammeringsforskningsgruppen hos Intel.

Derfor mener nogle mennesker, at vi bare skal få maskiner til at programmere sig selv. Automatiseret kodegenerering har været et varmt forskningsemne i en årrække. Microsoft bygger grundlæggende kodegenerering ind i sine meget brugte softwareudviklingsværktøjer, Facebook har lavet et system kaldet Lugt der autofuldfører små programmer, og DeepMind har udviklet et neuralt netværk, der kan finde på mere effektive versioner af simple algoritmer end dem, der er udtænkt af mennesker. Selv OpenAIs GPT-3 sprogmodel kan lave simple stykker kode , såsom websidelayout, fra prompter på naturligt sprog.



Det kalder Gottschlich og hans kolleger maskinprogrammering . I samarbejde med et team fra Intel, MIT og Georgia Institute of Technology i Atlanta har han udviklet et system kaldet Maskinudledt kodelighed , eller MISIM, der kan udtrække betydningen af ​​et stykke kode - hvad koden fortæller computeren at gøre - på nogenlunde samme måde som NLP-systemer (natural-language processing) kan læse et afsnit skrevet på engelsk.

MISIM kan derefter foreslå andre måder, hvorpå koden kan skrives, og tilbyde rettelser og måder at gøre den hurtigere eller mere effektiv. Værktøjets evne til at forstå, hvad et program forsøger at gøre, lader det identificere andre programmer, der gør lignende ting. I teorien kunne denne tilgang bruges af maskiner, der skrev deres egen software, der trækker på et kludetæppe af allerede eksisterende programmer med minimalt menneskeligt tilsyn eller input.

MISIM fungerer ved at sammenligne kodestykker med millioner af andre programmer, det allerede har set, taget fra et stort antal online-depoter. Først oversætter den koden til en form, der fanger, hvad den gør, men ignorerer, hvordan den er skrevet, fordi to programmer skrevet på meget forskellige måder nogle gange gør det samme. MISIM bruger derefter et neuralt netværk til at finde anden kode, der har en lignende betydning. I en fortryk , Gottschlich og hans kolleger rapporterer, at MISIM er 40 gange mere nøjagtig end tidligere systemer, der forsøger at gøre dette, inklusive Aroma.



MISIM er et spændende skridt fremad, siger Veselin Raychev, CTO hos det schweizisk-baserede firma DeepCode, hvis fejlfangende værktøjer – blandt de mest avancerede på markedet – bruger neurale netværk trænet i millioner af programmer til at foreslå forbedringer til kodere, mens de skriver. .

Men maskinlæring er stadig ikke god til at forudsige, om noget er en fejl eller ej, siger Raychev. Det er fordi det er svært at lære et neuralt netværk, hvad der er eller ikke er en fejl, medmindre det er blevet mærket som sådan af et menneske.

Der bliver lavet en masse interessant forskning med dybe neurale netværk og fejlretning, siger han, men praktisk talt er de der ikke endnu, med en meget stor margin. Typisk producerer AI-fejlfangende værktøjer masser af falske positiver, siger han.



MISIM kommer uden om dette ved at bruge maskinlæring til at spotte ligheder mellem programmer i stedet for at identificere fejl direkte. Ved at sammenligne et nyt program med et eksisterende stykke software, der vides at være korrekt, kan det advare koderen om vigtige forskelle, der kan være fejl.

Intel planlægger at bruge værktøjet som et kodeanbefalingssystem for udviklere internt, og foreslår alternative måder at skrive kode på, der er hurtigere eller mere effektive. Men fordi MISIM ikke er bundet til syntaksen for et specifikt program, er der meget mere, det potentielt kan gøre. For eksempel kunne det bruges til at oversætte kode skrevet på et gammelt sprog som COBOL til et mere moderne sprog som Python. Dette betyder noget, fordi mange institutioner, herunder amerikanske regering , stoler stadig på software skrevet på sprog, som få kodere ved, hvordan de skal vedligeholde eller opdatere.

I sidste ende mener Gottschlich, at denne idé kunne anvendes på naturligt sprog. Kombineret med NLP kunne evnen til at arbejde med betydningen af ​​kode adskilt fra dens tekstlige repræsentation en dag lade folk skrive software ved blot at beskrive, hvad de vil gøre med ord, siger han.



At bygge små apps til din telefon eller sådan noget, der vil hjælpe din hverdag – jeg tror, ​​at de ikke er for langt væk, siger Gottschlich. Jeg vil gerne se 8 milliarder mennesker skabe software på den måde, der er mest naturlig for dem.

skjule