DeepMind's AlphaCode verovert coderen en presteert net zo goed als mensen

Bronknooppunt: 1771464

Het geheim van goed programmeren zou kunnen zijn dat we alles negeren wat we weten over het schrijven van code. Althans voor AI.

Het lijkt belachelijk, maar de nieuwe codeer-AI van DeepMind heeft zojuist ongeveer 50 procent van de menselijke codeerders verslagen in een zeer competitieve programmeerwedstrijd. Op het eerste gezicht klinken de taken relatief eenvoudig: elke programmeur krijgt een probleem voorgeschoteld in gewone taal en de deelnemers moeten een programma schrijven om de taak zo snel mogelijk op te lossen - en hopelijk foutloos.

Maar het is een enorme uitdaging voor AI-codeerders. De agenten moeten eerst de taak begrijpen - iets wat mensen van nature hebben - en vervolgens code genereren voor lastige problemen die zelfs de beste menselijke programmeurs uitdagen.

AI-programmeurs zijn niets nieuws. In 2021 bracht het non-profit onderzoekslaboratorium OpenAI uit Codex, een programma dat bedreven is in meer dan een dozijn programmeertalen en is afgestemd op natuurlijke, alledaagse taal. Wat bepaalt de AI-release van DeepMind - nagesynchroniseerd AlfaCode-apart is gedeeltelijk wat het niet nodig heeft.

In tegenstelling tot eerdere AI-coders is AlphaCode relatief naïef. Het heeft geen ingebouwde kennis over de syntaxis of structuur van computercode. Integendeel, het leert enigszins op dezelfde manier als peuters die hun eerste taal begrijpen. AlphaCode hanteert een 'data-only'-benadering. Het leert door emmers met bestaande code te observeren en is uiteindelijk in staat om "woorden" en "zinsdelen" - in dit geval stukjes code - flexibel te deconstrueren en te combineren om nieuwe problemen op te lossen.

Toen hij werd uitgedaagd met de CodeContest - de strijdkwelling van competitieve programmering - loste de AI ongeveer 30 procent van de problemen op, terwijl hij de helft van de menselijke concurrentie versloeg. Het slagingspercentage lijkt misschien miezerig, maar dit zijn ongelooflijk complexe problemen. De Codex van OpenAI behaalde bijvoorbeeld eencijferig succes bij vergelijkbare benchmarks.

"Het is erg indrukwekkend, de prestaties die ze kunnen leveren op een aantal behoorlijk uitdagende problemen," zei Dr. Armando Solar-Lezama van MIT, die niet betrokken was bij het onderzoek.

De problemen die AlphaCode aanpakte, zijn verre van alledaagse toepassingen - beschouw het meer als een geavanceerd wiskundetoernooi op school. Het is ook onwaarschijnlijk dat de AI het programmeren volledig zal overnemen, aangezien de code vol fouten zit. Maar het kan alledaagse taken overnemen of kant-en-klare oplossingen bieden die menselijke programmeurs ontgaan.

Wat misschien nog belangrijker is, is dat AlphaCode de weg vrijmaakt voor een nieuwe manier om AI-codeerders te ontwerpen: vergeet ervaringen uit het verleden en luister gewoon naar de gegevens.

"Het lijkt misschien verrassend dat deze procedure enige kans heeft om correcte code te creëren", zegt dr. J. Zico Kolter van de Carnegie Mellon University en het Bosch Center for AI in Pittsburgh, die niet betrokken was bij het onderzoek. Maar wat AlphaCode laat zien, is wanneer "gegeven de juiste gegevens en modelcomplexiteit een coherente structuur kan ontstaan", zelfs als het de vraag is of de AI de taak echt "begrijpt".

Taal om te coderen

AlphaCode is slechts de nieuwste poging om AI te gebruiken om betere programma's te genereren.

Coderen is een beetje zoals het schrijven van een kookboek. Elke taak vereist meerdere niveaus van nauwkeurigheid: een daarvan is de algemene structuur van het programma, vergelijkbaar met een overzicht van het recept. Een andere is het beschrijven van elke procedure in uiterst duidelijke taal en syntaxis, zoals het beschrijven van elke stap van wat te doen, hoeveel van elk ingrediënt er in moet, op welke temperatuur en met welk gereedschap.

Elk van deze parameters, bijvoorbeeld cacao om warme chocolademelk te maken, worden in een computerprogramma 'variabelen' genoemd. Simpel gezegd, een programma moet de variabelen definiëren - laten we zeggen "c" voor cacao. Vervolgens wordt 'c' gemengd met andere variabelen, zoals die voor melk en suiker, om het laatste probleem op te lossen: een lekkere dampende mok warme chocolademelk maken.

Het moeilijkste is om dat allemaal naar een AI te vertalen, vooral als je een ogenschijnlijk eenvoudig verzoek intypt: maak een warme chocolademelk voor me.

In 2021 maakte Codex zijn eerste uitstapje naar het schrijven van AI-codes. Het idee van het team was om te vertrouwen op GPT-3, een programma dat de wereld stormenderhand heeft veroverd met zijn bekwaamheid in het interpreteren en imiteren van menselijke taal. Het is sindsdien uitgegroeid tot ChatGPT, een leuke en niet zo slecht chatbot die verrassend ingewikkelde en heerlijke gesprekken voert.

Dus wat is het punt? Net als bij talen gaat het bij coderen om een ​​systeem van variabelen, syntaxis en structuur. Als bestaande algoritmen werken voor natuurlijke taal, waarom zou u dan geen vergelijkbare strategie gebruiken voor het schrijven van code?

AI-codering AI

AlphaCode koos voor die aanpak.

De AI is gebouwd op een machine learning-model genaamd "groot taalmodel", dat ten grondslag ligt aan GPT-3. Het kritieke aspect hier zijn veel gegevens. GPT-3 kreeg bijvoorbeeld miljarden woorden uit online bronnen zoals digitale boeken en Wikipedia-artikelen om te beginnen met het "interpreteren" van menselijke taal. Codex is getraind op meer dan 100 gigabyte aan gegevens die zijn geschraapt uit Github, een populaire online softwarebibliotheek, maar faalde nog steeds bij lastige problemen.

AlphaCode erft het "hart" van Codex doordat het op dezelfde manier werkt als een groot taalmodel. Maar twee aspecten onderscheiden het, legt Kolter uit.

De eerste zijn trainingsgegevens. Naast het trainen van AlphaCode op Github-code, bouwde het DeepMind-team een ​​aangepaste dataset van CodeContests op basis van twee eerdere datasets, met meer dan 13,500 uitdagingen. Elk kwam met een uitleg van de taak en meerdere mogelijke oplossingen in meerdere talen. Het resultaat is een enorme bibliotheek met trainingsgegevens die zijn afgestemd op de betreffende uitdaging.

"Ongetwijfeld is de belangrijkste les voor elk ML-systeem [machine learning] dat het moet worden getraind op gegevens die vergelijkbaar zijn met de gegevens die het tijdens runtime zal zien", aldus Kolter.

De tweede truc is kracht in cijfers. Wanneer een AI code stuk voor stuk (of token-voor-token) schrijft, is het gemakkelijk om ongeldige of onjuiste code te schrijven, waardoor het programma crasht of bizarre resultaten uitpompt. AlphaCode pakt het probleem aan door meer dan een miljoen mogelijke oplossingen voor een enkel probleem te genereren - veel meer dan eerdere AI-pogingen.

Als een gezond verstand en om de resultaten te verfijnen, voert de AI kandidaat-oplossingen uit via eenvoudige testcases. Vervolgens clustert het soortgelijke, zodat het slechts één van elk cluster vastspijkert om de uitdaging aan te gaan. Het is de meest innovatieve stap, zei Dr. Kevin Ellis van Cornell University, die niet bij het werk betrokken was.

Het systeem werkte verrassend goed. Toen AlphaCode werd uitgedaagd met een nieuwe reeks problemen, spuugde het potentiële oplossingen uit in twee computertalen - Python of C ++ - terwijl het buitensporige eruit wiedde. In vergelijking met meer dan 5,000 menselijke deelnemers presteerde de AI beter dan ongeveer 45 procent van de deskundige programmeurs.

Een nieuwe generatie AI-coders

Hoewel het nog niet op het niveau van mensen is, is de kracht van AlphaCode zijn uiterste vindingrijkheid.

In plaats van secties van eerdere trainingscode te kopiëren en te plakken, kwam AlphaCode met slimme fragmenten zonder grote stukken code of logica in zijn "leesmateriaal" te kopiëren. Deze creativiteit kan te danken zijn aan de datagestuurde manier van leren.

Wat ontbreekt in AlphaCode is "elk architectonisch ontwerp in het machine learning-model dat betrekking heeft op ... het genereren van code", zei Kolter. Het schrijven van computercode is als het bouwen van een geavanceerd gebouw: het is zeer gestructureerd, met programma's die een gedefinieerde syntaxis nodig hebben met een duidelijk ingebedde context om een ​​oplossing te genereren.

AlphaCode doet er niets van. In plaats daarvan genereert het code vergelijkbaar met hoe grote taalmodellen tekst genereren, het hele programma schrijven en vervolgens controleren op mogelijke fouten (voor een schrijver voelt dit vreemd vertrouwd aan). Hoe de AI dit precies bereikt, blijft mysterieus - de innerlijke werking van het proces ligt begraven in zijn tot nu toe ondoorgrondelijke machine-'geest'.

Dat wil niet zeggen dat AlphaCode klaar is om de programmering over te nemen. Soms neemt het duizelingwekkende beslissingen, zoals het genereren van een variabele maar het niet gebruiken ervan. Het gevaar bestaat ook dat het kleine patronen onthoudt uit een beperkt aantal voorbeelden - een stel katten die me krabden is gelijk aan alle katten zijn slecht - en de output van die patronen. Dit zou ze kunnen veranderen in stochastische papegaaien, legde Kolter uit, dit zijn AI's die het probleem niet begrijpen, maar waarschijnlijke oplossingen kunnen nabootsen of 'blind nabootsen'.

Net als de meeste algoritmen voor machine learning, heeft AlphaCode ook rekenkracht nodig waar maar weinigen gebruik van kunnen maken, ook al wordt de code openbaar vrijgegeven.

Desalniettemin wijst de studie op een alternatief pad voor autonome AI-codeerders. In plaats van de machines te voorzien van traditionele programmeerwijsheid, moeten we misschien bedenken dat de stap niet altijd nodig is. Integendeel, net als bij het aanpakken van natuurlijke taal, heeft een AI-codeerder alleen gegevens en schaal nodig voor succes.

Kolter verwoordde het het beste: “AlphaCode wierp de teerling. De datasets zijn openbaar. Laten we kijken wat de toekomst brengt.”

Krediet van het beeld: Pexels oppompen van Pixabay

Tijdstempel:

Meer van Hub voor singulariteit