AI beter maken in het oplossen van problemen bij codeerwedstrijden

AI beter maken in het oplossen van problemen bij codeerwedstrijden

Interview Het vermogen van commerciële grote taalmodellen om competitieve programmeerproblemen op te lossen kan aanzienlijk worden vergroot door de processen zorgvuldig te begeleiden via slimme, snelle engineering.

Om dit aan te tonen heeft Codium AI, gevestigd in Israël, AlphaCodium gebouwd uitgebracht de software op GitHub deze maand. AlphaCodium is op zichzelf geen groot taalmodel. In plaats daarvan is het een methode die het probleemoplossend vermogen van generatieve AI-tools zoals GPT-4 verbetert door gebruik te maken van wat CEO Itamar Friedman ‘flow engineering’ noemt.

Eerst wordt een programmeervraag ingevoerd in het onderliggende grote taalmodel, en wordt gevraagd het probleem te beschrijven en samen te vatten. Die informatie geeft vervolgens aan hoe het probleem moet worden opgelost. AlphaCodium definieert dingen, zoals wat de inputs en outputs zouden moeten zijn, bij het bedenken van een oplossing. Dit alles wordt gespecificeerd in natuurlijke taal.

Het model begint dan code te genereren die overeenkomt met de specificaties die het zojuist heeft beschreven. Programmeerwedstrijden waarbij deelnemers worden gevraagd om volgens de specificaties te coderen, bieden doorgaans tests die laten zien wat een script moet uitvoeren voor een bepaalde invoer. AlphaCodium genereert meer van deze testgevallen en doorloopt vervolgens mogelijke oplossingen om te controleren of de code werkt zoals verwacht.

Als het er niet in slaagt om een ​​van de outputs te matchen die in een van de tests zijn gedefinieerd, genereert het model verschillende oplossingen totdat ze alle tests doorstaan ​​of totdat het mislukt. Er kunnen fouten optreden als de code niet compileert of gewoon verkeerd is.

In onderstaand schema ziet u de verschillende stappen in het flow-engineeringproces. Het is grotendeels opgesplitst in een voorverwerkingsfase, waarin het systeem het probleem in natuurlijke taal analyseert, en een code-iteratiefase, waarin het mogelijke oplossingen vergelijkt met openbare en door AI gegenereerde tests.

alfa-codium

Alle brede stappen die AlphaCodium begeleiden bij het genereren van code om problemen op te lossen

“We nemen niet het probleem, gaan naar het model en zeggen: ‘Hé, genereer alsjeblieft de uiteindelijke oplossing’,” vertelde Friedman. Het register. “We vragen het model om dit probleem in opsommingstekens opnieuw te definiëren.” Door het te vereenvoudigen en dingen in stukjes op te delen, wordt het voor het model gemakkelijker om later code te genereren voor verschillende delen van een algoritme.

In wezen is flow engineering een procedure die het probleemoplossende proces van het model begeleidt door het in goed gedefinieerde stappen op te splitsen. Door hem te vragen “de gegenereerde code op te delen in kleine subfuncties, met betekenisvolle namen en functionaliteit”, wordt ons verteld, leidt dit tot minder bugs en wordt de code gemakkelijker te testen en te repareren.

“We hebben feitelijk 95 procent van onze tijd besteed aan flow-engineering, en slechts 5 procent aan snelle engineering, en we hebben de aanwijzingen voor elke [stap] niet gewijzigd”, voegde Friedman eraan toe.

Ingenieurs van Codium testten de prestaties van hun model op honderden problemen die werden gebruikt in de verificatie- en testdelen van de CodeForces-dataset die twee jaar geleden door Google DeepMind werd samengesteld. Ze beweren dat AlphaCodium beter was in het oplossen van codeerproblemen dan de AlphaCode- en AlphaCode2-modellen van Google DeepMind.

In de resultaten gerapporteerd in een arXiv papier [PDF] kon AlphaCodium 44 procent van de vragen correct beantwoorden, vergeleken met de 24 procent van AlphaCode, terwijl het slechts vijf oplossingen genereerde vergeleken met de tien gekozen oplossingen van AlphaCode voor 107 validatieproblemen. Interessant genoeg werd de kloof kleiner toen het ging om 165 testproblemen, waarbij AlphaCodium 29 procent oploste, vergeleken met de 28 procent van AlphaCode.

AlphaCode selecteert de tien meest veelbelovende oplossingen uit tienduizenden of honderdduizenden mogelijke scripts die het genereert, waardoor het rekenintensief is om te draaien.

“We hebben ons veel meer gericht op de hele teststroom”, aldus Friedman. “Voor [Google] hebben ze zoveel werk aan de generatie gedaan. Ze proberen honderden andere opties te genereren en wij genereren heel weinig oplossingen, maar testen ze heel goed om de verbetering van de code te begeleiden.”

AlphaCodium is een klein beetje beter dan het nieuwste AlphaCode2-model van Google DeepMind, dat 10,000x efficiënter is dan zijn voorganger AlphaCode, voegde hij eraan toe.

alphacodium_2

Hoe AlphaCodium zich verhoudt tot andere state-of-the-art modellen op het gebied van nauwkeurigheid en efficiëntie

Friedman zei dat hij er vertrouwen in had dat de prestaties van AlphaCodium niet te wijten zijn aan datalekken, waarbij het onderliggende model op dezelfde problemen is getraind en getest. De GPT-4-versie die AlphaCodium aandrijft, werd tot september 2021 getraind op tekst die van internet was geschraapt, terwijl de problemen waarop het systeem werd getest, afkomstig waren uit de eerder genoemde CodeForces-dataset die veel later werd vrijgegeven.

Een betere vergelijking tussen appels en appels die het flow-engineeringproces beoordeelt, is echter kijken naar het vermogen van GPT-4 om diezelfde vragen op te lossen met en zonder AlphaCodium toe te passen. De gewone, oude GPT-4 kon slechts 19 en 12 procent van de problemen in respectievelijk de validatie- en testsets correct beantwoorden, vergeleken met de 44 en 29 procent van de door AlphaCodium aangedreven variant.

Kortom, het lijkt erop dat het implementeren van een zorgvuldige pijplijn die aanvullende gegevens genereert om te begeleiden hoe code wordt gegenereerd en om het testproces te verbeteren effectiever kan zijn dan proberen een groot taalmodel helemaal opnieuw te trainen.

Codium heeft onlangs een nieuwe tool uitgebracht ter ondersteuning van Python-ontwikkelaars, die nu AlphaCodium kunnen bellen om een ​​codeerprobleem in hun IDE direct op te lossen. Je kunt ermee spelen hier. ®

Tijdstempel:

Meer van Het register