EmbeddedKittens: An Evaluation of Code Embeddings for Scratch
Diese Arbeit evaluiert empirisch vier große Sprachmodelle und fünf Embedding-Ansätze für Scratch-Programme und zeigt auf, dass auf großen offenen Datensätzen trainierte Modelle effektiv strukturelle und semantische Informationen erfassen können, um Aufgaben der Lernanalyse wie die Vorhersage der funktionalen Korrektheit in kleinen Klassenzimmer-Settings zu unterstützen, ohne dass ein weiteres Fine-Tuning erforderlich ist.
Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen
Stellen Sie sich vor, Sie versuchen, einem superintelligenten Roboter beizubringen, menschliche Sprache zu verstehen. Sie füttern ihn mit Millionen von Büchern, Filmen und Websites, und schließlich lernt er, das nächste Wort in einem Satz mit erstaunlicher Genauigkeit vorherzusagen. Das ist die Magie von Großen Sprachmodellen (LLMs). Nun stellen Sie sich vor, Sie möchten, dass derselbe Roboter auch Quellcode versteht – die Anweisungen, die Programmierer schreiben, um Computern zu sagen, was sie tun sollen. Da Code ein wenig wie eine seltsame, strukturierte Sprache aussieht, haben Forscher herausgefunden, dass diese Roboter auch lernen können, ihn zu verstehen, was Entwicklern hilft, Software schneller zu schreiben oder sogar Fehler automatisch zu beheben.
Aber hier kommt der Clou: Nicht aller Code sieht aus wie Text. In Schulen lernen viele Kinder das Programmieren mit Scratch, einem farbenfrohen, blockbasierten System, bei dem man bunte Puzzleteile auf dem Bildschirm zusammensteckt, anstatt Zeilen von Text zu tippen. Es ist, als würde man mit Lego-Steinen bauen, anstatt eine Geschichte zu schreiben. Die große Frage für Wissenschaftler ist: Können dieselben „Robotergehirne“, die textbasierten Code lesen können, auch diese visuellen Block-Puzzles verstehen? Und wenn ja, welche Methode funktioniert am besten? Dies ist wichtig, denn wenn wir lernen können, Robotern Scratch beizubringen, könnten wir Werkzeuge entwickeln, die Lehrern helfen, Hausaufgaben zu bewerten, kämpfende Schüler zu erkennen oder sofortige Hinweise zu geben, was das Lernen des Programmierens für die nächste Generation viel reibungsloser macht.
Die große Code-Übersetzer-Herausforderung
In dieser Studie gingen die Forscher Benedikt Fein und Gordon Fraser einer kniffligen Frage nach: Können wir Computer dazu bringen, Scratch-Programme gut genug zu „verstehen“, um im Klassenzimmer zu helfen? Sie haben nicht nur geraten; sie bauten einen digitalen Spielplatz, um verschiedene Arten von „Code-Übersetzern“ zu testen.
Stellen Sie sich einen Code-Übersetzer als eine Möglichkeit vor, ein komplexes Scratch-Programm in eine einzige, geheime Zahl (oder einen „Vektor“) zu verwandeln, die das Wesen des Programms einfängt. Wenn zwei Programme ähnlich sind, sollten ihre geheimen Zahlen nah beieinander liegen. Wenn sie unterschiedlich sind, sollten die Zahlen weit auseinanderliegen. Die Forscher wollten sehen, welcher Übersetzer in diesem Spiel der beste ist.
Die Kontrahenten
Sie stellten fünf verschiedene Arten von Übersetzern zum Wettkampf auf:
- Die „Flachen“ Leser: Diese Modelle behandeln den Code wie eine einfache Liste von Wörtern und ignorieren die Struktur. Es ist, als würde man ein Rezept lesen, aber ignorieren, dass einige Schritte innerhalb einer „Rührschüssel“ stattfinden und andere auf dem „Herd“.
- Die „Baum“-Leser: Diese Modelle betrachten die Struktur des Codes, wie einen Stammbaum von Anweisungen. Sie verstehen, dass einige Blöcke in andere verschachtelt sind.
- Die „Fluss“-Leser: Dies sind die fortschrittlichsten. Sie sehen nicht nur die Struktur; sie verfolgen, wie Informationen durch das Programm fließen, wie Wasser durch Rohre fließt. Sie wissen, wenn sich eine Variable in einem Block ändert und in einem anderen verwendet wird.
- Die „Großen Gehirne“ (LLMs): Dies sind die riesigen, vortrainierten KI-Modelle (wie die, die Chatbots antreiben), die bereits Millionen von Textdokumenten gelesen haben. Die Forscher baten sie, sich Scratch-Code anzusehen und zu erraten, was er tut.
Der Test: Die Charaktere benennen
Um diese Übersetzer zu testen, entwickelten die Forscher ein Spiel namens „Sprite-Benennung“. In Scratch hat jeder Charakter (oder „Sprite“) einen Namen. Die Aufgabe war einfach: Zeigen Sie dem Modell den Code innerhalb eines Sprites und lassen Sie es den Namen des Sprites erraten. Es ist, als würde man jemandem das Tagebuch eines Charakters zeigen und fragen: „Wie heißt dieser Charakter?“
Die Ergebnisse zeigten eine klare Hierarchie. Die Gewinner waren die „Fluss“-Leser (speziell ein Modell namens GGNN). Indem sie darauf achteten, wie die Blöcke miteinander verbunden sind und wie Daten zwischen ihnen fließen, konnten diese Modelle die „Geschichte“ des Codes viel besser verstehen. Sie erraten den Namen des Sprites mit deutlich höherer Genauigkeit als die anderen.
Die riesigen „Großen Gehirne“ (LLMs) und die „Flachen“ Leser schnitten bei dieser spezifischen Benennungsaufgabe schlecht ab. Sie hatten Schwierigkeiten, die korrekten Namen zu erraten, da Scratch-Programme selten die schicken Variablennamen oder benutzerdefinierten Funktionen verwenden, die diese großen Modelle aus textbasiertem Code gewohnt sind. Stattdessen verlässt sich Scratch stark auf die Struktur der Blöcke und darauf, wie sie miteinander verbunden sind. Es ist jedoch wichtig anzumerken, dass selbst das gewinnende „Fluss“-Modell nicht perfekt war; es machte immer noch Fehler, was bedeutet, dass kein Modell ein makelloser Orakel war. Die LLMs waren nicht die Einzigen, die keine perfekten Punktzahlen erreichten, aber sie wurden konsequent von den Modellen übertroffen, die die Struktur und den Fluss des Programms verstanden.
Die Sprachbarriere
Die Forscher testeten auch, ob die Sprache der Schüler eine Rolle spielt. Scratch wird auf der ganzen Welt verwendet, in Brasilien, China, Polen und vielen anderen Ländern. Sie fanden heraus, dass die Modelle am besten funktionierten, wenn der Code in Englisch oder anderen Sprachen mit dem lateinischen Alphabet (wie A, B, C) geschrieben war. Wenn der Code andere Schriftsysteme verwendete (wie chinesische Schriftzeichen oder das russische Kyrillisch), wurden die Modelle verwirrt. Dies deutet darauf an, dass diese Werkzeuge weltweit funktionieren können, wenn sie besser darin werden, verschiedene Sprachen und Symbole zu verstehen, nicht nur Englisch.
Vom Benennen zum Bewerten: Können wir das im Unterricht nutzen?
Die eigentliche Magie geschah als Nächstes. Die Forscher fragten: „Wenn diese Modelle gut darin sind, Sprites zu benennen, können sie dann auch Lehrern helfen?“
Sie testeten zwei große Ideen:
- Überprüfung der Korrektheit: Kann das Modell auf ein unordentliches Programm eines Schülers schauen und sagen, ob es funktioniert, selbst ohne es auszuführen? Sie fanden eine starke Verbindung zwischen dem „Verständnis“ des Modells für den Code und der Frage, ob der Code tatsächlich Tests bestand. Wenn das Modell dachte, der Code sei „nah“ an der Lösung, funktionierte der Code in der Regel. Das bedeutet, dass diese Modelle als „Surrogat“ dienen könnten, um Hausaufgaben sofort zu überprüfen.
- Fortschritt verfolgen: Kann das Modell zeigen, wie sehr sich ein Schüler verbessert hat? Sie nutzten eine spezielle Karte, um den Fortschritt der Schüler darzustellen. Während die Schüler ihre Spiele mit neuen Funktionen erweiterten, bewegte sich ihre „Code-Karte“ näher an die endgültige Lösung heran. Die Modelle verfolgten diese Reise erfolgreich und zeigten Lehrern genau, wo ein Schüler feststeckte oder wie weit er gekommen war.
Interessanterweise, für diese breiteren Aufgaben (wie das Klassifizieren des Projekttyps oder das Verfolgen des Fortschritts), performten die LLMs tatsächlich recht gut und konnten die spezialisierten Strukturmodelle manchmal sogar erreichen oder schlagen. Dies deutet darauf hin, dass LLMs zwar die winzigen strukturellen Details verpassen könnten, die für die Benennung eines spezifischen Charakters nötig sind, aber sie sind sehr gut darin, das „große Ganze“ eines Projekts zu verstehen.
Das Urteil
Die Studie kommt zu dem Schluss, dass ja, es möglich ist, Code-Embeddings für Scratch zu verwenden, aber man muss das richtige Werkzeug für die jeweilige Aufgabe wählen. Für Aufgaben, die ein tiefes strukturelles Verständnis erfordern (wie das Benennen eines Sprites), sind spezialisierte Modelle, die den Fluss und die Struktur der Blöcke verstehen, die Champions. Die riesigen Chatbots (LLMs) sind für diese spezifischen Rätsel nicht die beste Wahl, weil sie die strukturellen Details übersehen, auf die Scratch angewiesen ist.
Für breitere pädagogische Aufgaben wie das Bewerten oder das Verfolgen des Fortschritts sind die LLMs jedoch überraschend effektiv und können genauso gut sein wie die spezialisierten Modelle. Noch besser ist, dass diese spezialisierten Modelle, einmal trainiert, für andere Aufgaben eingesetzt werden können – wie etwa das Bewerten oder das Verfolgen des Fortschritts – ohne dass sie für jede neue Aufgabe neu trainiert werden müssen. Dies ist ein großer Gewinn für Lehrer, da es bedeutet, dass sie über leistungsstarke, automatisierte Werkzeuge verfügen könnten, um Schülern zu helfen, selbst in kleinen Klassenzimmern, in denen nicht genügend Daten vorhanden sind, um ein neues KI-Modell von Grund auf neu zu trainieren.
Kurz gesagt: Die Forscher haben einen Weg gefunden, Computern ein „Gefühl“ für Scratch-Code zu vermitteln, das über das bloße Lesen von Wörtern hinausgeht. Indem sie die Form und den Fluss der Blöcke verstehen, können diese Modelle uns helfen, eine intelligentere und unterstützendere Zukunft für die Programmierausbildung zu bauen.
Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?
Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.