DeepMinds AlphaCode erövrar kodning, presterar lika bra som människors PlatoBlockchain-dataintelligens. Vertikal sökning. Ai.

DeepMinds AlphaCode erövrar kodning, presterar lika bra som människor

Hemligheten med bra programmering kan vara att ignorera allt vi vet om att skriva kod. Åtminstone för AI.

Det verkar absurt, men DeepMinds nya kodande AI slog precis bort ungefär 50 procent av mänskliga kodare i en mycket konkurrenskraftig programmeringstävling. På ytan låter uppgifterna relativt enkla: varje kodare presenteras med ett problem på vardagligt språk, och de tävlande måste skriva ett program för att lösa uppgiften så snabbt som möjligt – och förhoppningsvis utan fel.

Men det är en enorm utmaning för AI-kodare. Agenterna måste först förstå uppgiften – något som kommer naturligt för människor – och sedan generera kod för knepiga problem som utmanar även de bästa mänskliga programmerarna.

AI-programmerare är inget nytt. Redan 2021 släppte det ideella forskningslabbet OpenAI Codex, ett program som behärskar över ett dussin programmeringsspråk och är inställt på naturligt vardagligt språk. Det som gör DeepMinds AI-utgåva dubbad AlphaCode– isär är delvis vad den inte behöver.

Till skillnad från tidigare AI-kodare är AlphaCode relativt naivt. Den har ingen inbyggd kunskap om datorkodsyntax eller struktur. Snarare lär den sig något på samma sätt som småbarn som förstår sitt första språk. AlphaCode tar en "endast data"-strategi. Den lär sig genom att observera hinkar med befintlig kod och kan så småningom flexibelt dekonstruera och kombinera "ord" och "fraser" - i det här fallet kodbitar - för att lösa nya problem.

När den utmanades med CodeContest – kamprap-plågan för konkurrenskraftig programmering – löste AI ungefär 30 procent av problemen, samtidigt som den slog hälften av den mänskliga konkurrensen. Framgångsfrekvensen kan verka ynklig, men det här är otroligt komplexa problem. OpenAI:s Codex, till exempel, klarade ensiffrig framgång när den stod inför liknande riktmärken.

"Det är väldigt imponerande, prestandan de kan uppnå på några ganska utmanande problem," sade Dr Armando Solar-Lezama vid MIT, som inte var involverad i forskningen.

Problemen med AlphaCode är långt ifrån vardagliga tillämpningar – se det mer som en sofistikerad matematikturnering i skolan. Det är också osannolikt att AI kommer att ta över programmeringen helt, eftersom dess kod är full av fel. Men det kan ta över vardagliga uppgifter eller erbjuda färdiga lösningar som undviker mänskliga programmerare.

Kanske ännu viktigare, AlphaCode banar vägen för ett nytt sätt att designa AI-kodare: glöm tidigare erfarenheter och lyssna bara på data.

"Det kan tyckas förvånande att denna procedur har någon chans att skapa korrekt kod", säger Dr J. Zico Kolter vid Carnegie Mellon University och Bosch Center for AI i Pittsburgh, som inte var involverad i forskningen. Men vad AlphaCode visar är när "med rätt data- och modellkomplexitet kan en sammanhängande struktur uppstå", även om det är diskutabelt om AI:n verkligen "förstår" uppgiften.

Språk att koda

AlphaCode är bara det senaste försöket att utnyttja AI för att generera bättre program.

Kodning är lite som att skriva en kokbok. Varje uppgift kräver flera nivåer av noggrannhet: den ena är programmets övergripande struktur, liknande en översikt över receptet. En annan är att beskriva varje procedur i ett extremt tydligt språk och syntax, som att beskriva varje steg av vad man ska göra, hur mycket av varje ingrediens som behöver gå in, vid vilken temperatur och med vilka verktyg.

Var och en av dessa parametrar - säg kakao för att göra varm choklad - kallas "variabler" i ett datorprogram. Enkelt uttryckt måste ett program definiera variablerna - låt oss säga "c" för kakao. Den blandar sedan "c" med andra variabler, som de för mjölk och socker, för att lösa det sista problemet: att göra en fin ångande mugg varm choklad.

Det svåra är att översätta allt detta till en AI, särskilt när du skriver in en till synes enkel begäran: gör mig varm choklad.

Tillbaka i 2021, Codex gjorde sin första satsning på AI-kodskrivning. Teamets idé var att förlita sig på GPT-3, ett program som har tagit världen med storm med sin skicklighet att tolka och imitera mänskligt språk. Det har sedan vuxit till ChatGPT, en rolig och inte så ond chatbot som deltar i förvånansvärt intrikata och förtjusande konversationer.

Så vad är poängen? Precis som med språk handlar kodning om ett system av variabler, syntax och struktur. Om befintliga algoritmer fungerar för naturligt språk, varför inte använda en liknande strategi för att skriva kod?

AI-kodning AI

AlphaCode tog det tillvägagångssättet.

AI är byggd på en maskininlärningsmodell som kallas "stor språkmodell", som ligger till grund för GPT-3. Den kritiska aspekten här är massor av data. GPT-3, till exempel, matades med miljarder ord från onlineresurser som digitala böcker och Wikipedia-artiklar för att börja "tolka" mänskligt språk. Codex tränades på över 100 gigabyte data som skrapats från Github, ett populärt mjukvarubibliotek på nätet, men misslyckades fortfarande när de ställdes inför knepiga problem.

AlphaCode ärver Codex "hjärta" genom att den också fungerar på samma sätt som en stor språkmodell. Men två aspekter skiljer det åt, förklarade Kolter.

Den första är träningsdata. Förutom att träna AlphaCode på Github-kod, byggde DeepMind-teamet en anpassad datauppsättning från CodeContests från två tidigare datauppsättningar, med över 13,500 XNUMX utmaningar. Var och en kom med en förklaring av uppgiften och flera potentiella lösningar på flera språk. Resultatet är ett enormt bibliotek med träningsdata som är skräddarsydda för utmaningen.

"Förmodligen är den viktigaste lärdomen för alla ML-system [maskininlärning] att det bör tränas på data som liknar de data som det kommer att se vid körning", säger Kolter.

Det andra tricket är styrka i siffror. När en AI skriver kod bit för bit (eller token-by-token) är det lätt att skriva ogiltig eller felaktig kod, vilket gör att programmet kraschar eller pumpar ut konstiga resultat. AlphaCode tar itu med problemet genom att generera över en miljon potentiella lösningar för ett enda problem – mängder större än tidigare AI-försök.

Som en förnuftskontroll och för att begränsa resultaten, kör AI-kandidaten genom enkla testfall. Den kluster sedan liknande så att den spikar bara en från varje kluster för att ge sig in på utmaningen. Det är det mest innovativa steget, sa Dr. Kevin Ellis vid Cornell University, som inte var involverad i arbetet.

Systemet fungerade förvånansvärt bra. När de utmanas med en ny uppsättning problem, spottar AlphaCode ut potentiella lösningar på två datorspråk – Python eller C++ – samtidigt som de rensar bort upprörande. När den ställdes mot över 5,000 45 mänskliga deltagare överträffade AI cirka XNUMX procent av expertprogrammerarna.

En ny generation av AI-kodare

Även om det ännu inte är på människans nivå, är AlphaCodes styrka dess totala uppfinningsrikedom.

Istället för att kopiera och klistra in delar av tidigare träningskod, kom AlphaCode med smarta utdrag utan att kopiera stora bitar av kod eller logik i sitt "läsmaterial". Denna kreativitet kan bero på dess datadrivna sätt att lära sig.

Det som saknas i AlphaCode är "all arkitektonisk design i maskininlärningsmodellen som relaterar till...generering av kod", sa Kolter. Att skriva datorkod är som att bygga en sofistikerad byggnad: den är mycket strukturerad, med program som behöver en definierad syntax med tydligt inbäddat sammanhang för att skapa en lösning.

AlphaCode gör inget av det. Istället genererar den kod som liknar hur stora språkmodeller genererar text, skriver hela programmet och sedan kollar efter potentiella misstag (som författare känns detta konstigt bekant). Hur exakt AI uppnår detta förblir mystiskt - processens inre funktion är begravd i dess ännu outgrundliga maskin-"sinne".

Därmed inte sagt att AlphaCode är redo att ta över programmeringen. Ibland fattar den överdrivna beslut, som att generera en variabel men inte använda den. Det finns också risken att den kan memorera små mönster från ett begränsat antal exempel – ett gäng katter som kliade mig är lika med att alla katter är onda – och resultatet av dessa mönster. Detta kan förvandla dem till stokastiska papegojor, förklarade Kolter, som är AI som inte förstår problemet men kan papegoja, eller "blint härma" troliga lösningar.

I likhet med de flesta maskininlärningsalgoritmer behöver AlphaCode också datorkraft som få kan utnyttja, även om koden är offentligt släppt.

Ändå antyder studien en alternativ väg för autonoma AI-kodare. Istället för att förse maskinerna med traditionell programmeringsvisdom kan vi behöva tänka på att steget inte alltid är nödvändigt. Snarare, i likhet med att ta itu med naturligt språk, är allt en AI-kodare behöver för att lyckas data och skala.

Kolter uttryckte det bäst: "AlphaCode kastade tärningen. Datauppsättningarna är offentliga. Låt oss se vad framtiden har att erbjuda."

Image Credit: Deepmind

Tidsstämpel:

Mer från Singularity Hub