← Nieuwste papers
🤖 AI

Protocode: Prototype-Driven Interpretability for Code Generation in LLMs

Dit artikel stelt een prototype-gestuurde aanpak voor die gebruikmaakt van AST-gebaseerde analyse om automatisch hoogwaardige In-Context Learning-demonstraties te samplen, waardoor zowel de interpreteerbaarheid als de prestaties van Large Language Models bij codegeneratietaken gelijktijdig worden verbeterd.

Oorspronkelijke auteurs: Krishna Vamshi Bodla, Haizhao Yang

Gepubliceerd 2026-01-22
📖 5 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Krishna Vamshi Bodla, Haizhao Yang

Oorspronkelijk artikel vrijgegeven aan het publieke domein onder CC0 1.0 (http://creativecommons.org/publicdomain/zero/1.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

Stel je voor dat je een zeer slimme, maar lichtelijk verwarde robot probeert te leren hoe hij computercode moet schrijven. Je kunt de robot niet simpelweg een tekstboek geven; in plaats daarvan toon je eerst een paar goede voorbeelden van code aan hem. Dit wordt In-Context Learning (ICL) genoemd. De robot kijkt naar jouw voorbeelden en probeert de stijl en logica ervan te kopiëren om een nieuw probleem op te lossen.

Het probleem is: Welke voorbeelden moet je de robot laten zien?

Als je de robot slechte voorbeelden laat zien, raakt hij in de war en schrijft hij buggy code. Als je hem perfecte voorbeelden laat zien, blinkt hij uit. Maar het vinden van de "perfecte" voorbeelden is moeilijk. De meeste mensen kiezen simpelweg voorbeelden die aan de oppervlakte op elkaar lijken, maar dat werkt niet altijd.

Dit artikel introduceert een nieuwe methode genaamd Protocode om dit op te lossen. Zie dit als een "Slimme Voorbeeldselector" die een speciale kaart gebruikt om de beste voorbeelden te vinden.

Zo werkt het, onderverdeeld in eenvoudige concepten:

1. De "Manifold" Kaart (Het vinden van de vorm van data)

Stel je voor dat al de verschillende programmeerproblemen (zoals "sorteer een lijst" of "bereken een vierkantswortel") punten zijn die zweven in een gigantische, meerdimensionale kamer.

  • De Oude Manier: Mensen kiezen meestal het punt dat het dichtst bij het punt ligt dat ze proberen op te lossen. Maar soms is het dichtstbijzijnde punt een "valstrik"-voorbeeld dat er weliswaar hetzelfde uitziet, maar een totaal andere logica heeft.
  • De Protocode Manier: De auteurs realiseerden zich dat deze punten niet zomaar willekeurig verspreid liggen; ze vormen onzichtbare, gebogen vormen (zoals een gekreukeld stuk papier), genaamd manifolds.
  • De Analogie: Stel je voor dat de data een berglandschap is. De oude methode kiest gewoon de dichtstbijzijnde piek. Protocode kijkt naar de vorm van het berglandschap zelf. Het vindt de "prototypes"—de meest representatieve, perfecte voorbeelden die precies in het hart van een specifieke vallei of piek liggen. Het gebruikt een techniek genaamd Piecewise-Linear Manifold Learning om deze vormen nauwkeurig te traceren, waardoor het gegarandeerd is dat het gekozen voorbeeld echt representatief is voor dat type probleem, en niet slechts een willekeurige buurman.

2. De "Proxy" Anker (De Magneet)

Zodra de kaart is getekend, moet het systeem het beste voorbeeld voor elke categorie kiezen (zoals "Python loops" of "Java classes").

  • De Analogie: Stel je voor dat je voor elk type code een magneet hebt (een Proxy). Je laat alle trainingsvoorbeelden in de kamer vallen. De magneet trekt de voorbeelden aan die erbij horen.
  • De Magie: Het systeem kiest niet alleen de dichtstbijzijnde; het leert de magneten te bewegen zodat ze de beste voorbeelden aantrekken en de slechte voorbeelden afstoten. Dit gebeurt met een wiskundige truc genaamd Proxy-Anchor Loss. Dit zorgt ervoor dat het gekozen voorbeeld een "kampioen" is voor zijn groep, waardoor het de meest betrouwbare leraar voor de robot wordt.

3. De "X-Ray" Visie (AST Analyse)

Zodn de robot code heeft geschreven met behulp van deze slimme voorbeelden, hoe weten we dan waarom hij schreef wat hij schreef?

  • Het Probleem: Meestal is AI-code een "black box". We zien de input en de output, maar we weten niet welk deel van het voorbeeld de robot ertoe heeft aangezet om een specifieke regel te schrijven.
  • De Oplossing: De auteurs gebruiken een hulpmiddel genaamd een Abstract Syntax Tree (AST). Denk aan code niet als een zin, maar als een stamboom.
    • De "bladeren" zijn de individuele woorden (tokens).
    • De "takken" zijn de structuren (zoals if-statements, loops of functies).
  • De Analogie: De auteurs schijnen een röntgenstraal (X-ray) op de code. Ze traceren de "invloed" terug van de output van de robot naar het specifieke voorbeeld dat aan hem werd getoond.
    • Resultaat: Ze kunnen zeggen: "De robot gebruikte deze specifieke for-loop structuur omdat hij sterk werd beïnvloed door Voorbeeld A, maar hij gebruikte dit error-handling blok omdat hij werd beïnvloed door Voorbeeld B."
    • Dit maakt de code interpreteerbaar. Je kunt precies zien welke delen van de code "veilig" zijn en welke delen mogelijk riskant zijn omdat ze zijn gekopieerd van een zwakker voorbeeld.

Wat hebben ze gevonden?

De onderzoekers hebben dit getest op verschillende AI-modellen (zoals Qwen, Llama en StarCoder) met behulp van een standaard codetest genaamd MBPP.

  • Betere Resultaten: Wanneer ze hun "Slimme Voorbeeldselector" (Protocode) gebruikten, schreven de robots betere code. Ze slaagden voor meer tests (specifiek de pass@10 metriek, die controleert of de juiste code in de top 10 van gissingen voorkomt) vergeleken met het gebruik van willekeurige voorbeelden of simpelweg de "dichtstbijzijnde" te kiezen.
  • Het Gevaar van Slechte Voorbeelden: Ze ontdekten dat als je de verkeerde voorbeelden koos (slecht gekozen ICL-demonstraties), de robot zelfs slechter presteerde dan wanneer je hem helemaal geen voorbeelden had gegeven. Dit bewijst dat kwaliteit belangrijker is dan kwantiteit.
  • Begrip van de Code: De "X-ray" analyse liet zien dat de robot het meest zelfverzekerd was in de gestructureerde delen van de code (zoals datastructuren en functies), maar soms moeite had met complexe foutafhandeling (error handling), ongeacht de gebruikte voorbeelden.

De Kernboodschap

Dit artikel gaat over het leren van AI om een betere student te worden door het betere huiswerk-voorbeelden te geven.

  1. Kies niet alleen vergelijkbare voorbeelden; kies de voorbeelden die echt de "vorm" van het probleem vertegenwoordigen.
  2. Gebruik wiskunde om de "kampioen"-voorbeelden te vinden voor elke categorie.
  3. Kijk onder de motorkap om precies te zien welke voorbeelden de beslissingen van de AI hebben beïnvloed, wat de code veiliger en begrijpelijker maakt.

Door dit te doen, kunnen ontwikkelaars de AI meer vertrouwen, wetende waarom de AI een specifiek stuk code heeft gegenereerd en ervoor te zorgen dat het niet zomaar een slechte gewoonte heeft overgenomen van een slecht voorbeeld.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →