EmbeddedKittens: An Evaluation of Code Embeddings for Scratch
Dit artikel evalueert empirisch vier grote taalmodellen en vijf embedding-benaderingen voor Scratch-programma's, waarmee wordt aangetoond dat modellen die zijn getraind op grote open datasets effectief structurele en semantische informatie kunnen vastleggen om leeranalysetaken te ondersteunen, zoals het voorspellen van functionele correctheid in kleine klasomgevingen zonder dat verdere fijnafstemming vereist is.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.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 superintelligente robot probeert te leren om menselijke taal te begrijpen. Je voert het miljoenen boeken, films en websites, en uiteindelijk leert de robot met verbazingwekkende nauwkeurigheid het volgende woord in een zin te voorspellen. Dit is de magie van Large Language Models (LLM's). Nu wil je dat diezelfde robot ook broncode begrijpt — de instructies die programmeurs schrijven om computers aan te sturen. Omdat code een beetje lijkt op een vreemde, gestructureerde taal, hebben onderzoekers ontdekt dat deze robots ook kunnen leren om het te begrijpen, wat ontwikkelaars helpt om sneller software te schrijven of zelfs fouten automatisch te herstellen.
Maar hier komt de twist: niet alle code ziet eruit als tekst. Op scholen leren veel kinderen programmeren met Scratch, een kleurrijk, op blokken gebaseerd systeem waarbij je puzzelstukjes op een scherm aan elkaar klikt in plaats van regels tekst te typen. Het is alsof je bouwt met Lego-stenen in plaats van een verhaal te schrijven. De grote vraag voor wetenschappers is: kunnen deze "robotbreinen" die tekstgebaseerde code kunnen lezen, ook deze visuele blokpuzzels begrijpen? En als dat zo is, welke methode werkt het best? Dit is belangrijk omdat als we deze robots kunnen leren om Scratch te begrijpen, we tools kunnen bouwen die leraren helpen bij het nakijken van huiswerk, het opsporen van worstelende leerlingen of het geven van directe hints, waardoor leren programmeren voor de volgende generatie veel soepeler verloopt.
De Grote Code-Vertaler Uitdaging
In dit onderzoek gingen onderzoekers Benedikt Fein en Gordon Fraser op zoek naar het antwoord op een lastige vraag: Kunnen we computers leren om Scratch-programma's zo goed te "begrijpen" dat ze in een klaslokaal kunnen helpen? Ze gokten niet alleen maar; ze bouwden een digitale speeltuin om verschillende soorten "code-vertalers" te testen.
Beschouw een code-vertaler als een manier om een complex Scratch-programma om te zetten in één enkel, geheim getal (of een "vector") dat de essentie van het programma vastlegt. Als twee programma's vergelijkbaar zijn, moeten hun geheime getallen dicht bij elkaar liggen. Als ze verschillend zijn, moeten de getallen ver uit elkaar liggen. De onderzoekers wilden zien welke vertaler de beste was in dit spel.
De Strijders
Ze stelden vijf verschillende soorten vertalers op om tegen elkaar te strijden:
- De "Platte" Lezers: Deze modellen behandelen de code als een eenvoudige lijst met woorden, waarbij de structuur wordt genegeerd. Het is also als een recept lezen, maar negeren dat sommige stappen binnen een "mengkom" gebeuren en andere op het "fornuis".
- De "Boom" Lezers: Deze modellen kijken naar de structuur van de code, zoals een stamboom van instructies. Ze begrijpen dat sommige blokken binnen andere blokken genest zijn.
- De "Flow" Lezers: Dit zijn de meest geavanceerde. Ze zien niet alleen de structuur; ze volgen hoe informatie door het programma beweegt, zoals het observeren van water dat door pijpen stroomt. Ze weten of een variabele in één blok verandert en in een ander blok wordt gebruikt.
- De "Grote Breinen" (LLM's): Dit zijn de gigantische, vooraf getrainde AI-modellen (zoals de modellen die chatbots aandrijven) die al miljoenen tekstdocumenten hebben gelezen. De onderzoekers vroegen hen om naar de Scratch-code te kijken en te raden wat deze aan het doen was.
De Test: De Personages Benoemen
Om deze vertalers te testen, creëerden de onderzoekers een spel genaamd "Sprite Naming" (het benoemen van sprites). In Scratch heeft elk personage (of "sprite") een naam. De taak was simpel: laat het model de code binnen een sprite zien en vraag het om de naam van de sprite te raden. Het is alsof je iemand het dagboek van een personage laat lezen en vraagt: "Wat is de naam van dit personage?"
De resultaten lieten een duidelijke hiërarchie zien. De winnaars waren de "Flow" lezers (specifiek een model genaamd GGNN). Door aandacht te besteden aan hoe de blokken met elkaar verbonden zijn en hoe gegevens tussen hen bewegen, begrepen deze modellen de "verhaallijn" van de code veel beter. Ze raadden de naam van de sprite met een aanzienlijk hogere nauwkeurigheid dan de anderen.
De gigantische "Grote Brein" modellen (LLM's) en de "Platte" lezers presteerden slecht op deze specifieke benamingstaak. Ze hadden moeite om de juiste namen te raden omdat Scratch-programma's zelden de chique variabelenamen of aangepaste functies gebruiken waar deze grote modellen in tekstgebaseerde code aan gewend zijn. In plaats daarvan vertrouwt Scratch zwaar op de structuur van de blokken en hoe ze met elkaar verbonden zijn. Het is echter belangrijk om op te merken dat zelfs het winnende "Flow" model het niet perfect kreeg; het maakte nog steeds fouten, wat betekent dat geen enkel model een foutloze orakel was. De LLM's waren niet de enigen die geen perfecte scores behaalden, maar ze werden consequent overtroffen door de modellen die de structuur en de flow van het programma begrepen.
De Taalbarrière
De onderzoekers testten ook of de taal die de studenten gebruikten uitmaakte. Scratch wordt over de hele wereld gebruikt, in Brazilië, China, Polen en vele andere plaatsen. Ze ontdekten dat de modellen het beste werkten wanneer de code in het Engels of andere talen met het Latijnse alfabet (zoals A, B, C) werd geschreven. Wanneer de code andere schriftsystemen gebruikte (zo zoals Chinese karakters of Russisch Cyrillisch), raakten de modellen in de war. Dit suggereert dat deze tools wereldwijd effectief moeten zijn, moeten ze beter worden in het begrijpen van verschillende talen en symbolen, en niet alleen van het Engels.
Van Benoemen naar Nakijken: Kunnen we dit in de klas gebruiken?
De echte magie gebeurde daarna. De onderzoekers vroegen zich af: "Als deze modellen goed zijn in het benoemen van sprites, kunnen ze dan ook leraren helpen?"
Ze testten twee grote ideeën:
- Controleren op Juistheid: Kan het model naar een rommelig programma van een student kijken en zeggen of het werkt, zelfs zonder het uit te voeren? Ze vonden een sterke link tussen het "begrip" van het model en of de code daadwerkelijk slaagde voor tests. Als het model dacht dat de code "dicht bij" de oplossing lag, werkte de code meestal wel. Dit betekent dat deze modellen als een "surrogaat" kunnen dienen om huiswerk direct te controleren.
- Voortgang Bijhouden: Kan het model de vooruitgang van een student laten zien? Ze gebruikten een speciale kaart om de voortgang van studenten uit te zetten. Naarmate studenten functies aan hun spellen toevoegden, bewoog hun "codekaart" dichter naar de uiteindelijke oplossing. De modellen volgden deze reis succesvol en lieten leraren precies zien waar een student vastliep of hoe ver hij gevorderd was.
Interessant genoeg, voor deze bredere taken (zoals het classificeren van het type project of het bijhouden van de voortgang), presteerden de LLM's eigenlijk erg goed, en evenaarden ze soms zelfs de gespecialiseerde structurele modellen. Dit suggereert dat hoewel LLM's misschien de kleine structurele details missen die nodig zijn voor het benoemen van een specif kind, ze heel goed zijn in het begrijpen van het "grote plaatje" van een project.
Het Eindoordeel
De studie concludeert dat ja, het mogelijk is om code-embeddings voor Scratch te gebruiken, maar dat je de juiste tool voor de juiste taak moet kiezen. Voor taken die een diep structureel begrip vereisen (zoals het benoemen van een sprite), zijn gespecialiseerde modellen die de flow en de structuur van de blokken begrijpen de kampioenen. De gigantische chatbots (LLM's) zijn geen goede match voor die specifieke puzzels omdat ze de structurele details missen waar Scratch op vertrouwt.
Echter, voor bredere educatieve taken (zoals het nakijken of het bijhouden van voortgang), zijn de LLM's verrassend effectief en kunnen ze net zo goed zijn als de gespecialiseerde modellen. Nog beter is dat deze gespecialiseerde modellen, eenmaal getraind, kunnen worden gebruikt voor andere taken — zoals het nakijken of het bijhouden van voortgang — zonder dat ze voor elke nieuwe opdracht opnieuw getraind hoeven te worden. Dit is een enorme winst voor leraren, aangezien dit betekent dat ze kunnen beschikken over krachtige, geautomatiseerde tools om studenten te helpen leren, zelfs in kleine klaslokalen waar niet genoeg data beschikbaar is om een nieuwe AI vanaf nul te trainen.
Kortom, de onderzoekers hebben een manier gevonden om computers een "gevoel" voor Scratch-code te geven dat verder gaat dan alleen het lezen van woorden. Door de vorm en de flow van de blokken te begrijpen, kunnen deze modellen ons helpen een slimmere, meer ondersteunende toekomst voor programmeeronderwijs te bouwen.
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.