Gestenerkennung mit Snap!

Die im Folgenden beschriebene Lektionenskizze basiert auf den „Grand Gestures“ von Jens Mönig, die in dem seit einigen Wochen verfügbaren Kurs „Get Coding with Snap! – Building Up to AI“ dokumentiert sind. Für die Umsetzung werden 2 – 4 Lektionen benötigt.

Gestenerkennung

Die Idee: Figuren, die mit einem Linienzug gezeichnet werden können (ohne Absetzen) sollen automatisch erkannt werden und jeweils eine passende Animation auslösen.

Die eigentliche Programmierung besteht aus zwei Teilen: Der technische Aspekt konzentriert sich auf den Algorithmus zur Erkennung einer gezeichneten Figur, der kreative Aspekt darauf, einzelne Figuren entsprechend zu animieren.

Die Programmierung

Die Programmierung kann abgesehen von wenigen Blöcken mit den Schülerinnen und Schüler schrittweise durchgeführt werden und umfasst keine besonders komplexen Schritte.

Zeichenfunktion implementieren

Als erstes sollen die Schülerinnen und Schüler in der Lage sein, eigene Figuren zu zeichnen. Dazu sind folgende Programmierschritte notwendig.

Im Bereich „Bühne“ (stage) wird aufgrund des Ereignisses Mausklick eine Nachricht an das Objekt (sprite) versendet.

Programmierung der Bühne: Bei einem Mausklick wird eine Nachricht versendet.

Diese Mitteilung wird vom Objekt (sprite) aufgegriffen.

Die Programmierung des Sprites sorgt dafür, dass die Schülerinnen und Schüler eine Figur zeichnen können.

Um die Zeichnung anzufertigen, wird zuerst der Bildschirm gelöscht und dann folgt der „Stift“ von Snap den Bewegungen der Maus und hinterlässt somit eine entsprechende Spur.

Speichern einer Zeichnung

Im nächsten Schritt werden die einzelnen Positionen der Figur in der Variable „sketch“ gespeichert.

Die Positionen entlang der gezeichneten Figuren werden mittels einer Liste gespeichert.

Wiedergeben einer Zeichnung

Im Starterpaket zu „Grand Gestures“ gibt es einen entsprechenden Block, mit dem die gezeichnete Figur wiedergegeben werden kann.

Mit diesem Block können Zeichnungen wiedergegeben werden.

Für die Schülerinnen und Schüler ist es aber eindrücklicher, wenn man die Funktionalität dieses Blockes mit ihnen Schritt für Schritt erarbeitet.

Schrittweise Wiedergabe einer gezeichneten Figur.

Wenn man auf den im vorgegebenen Block vorhandenen warp-Block verzichtet, erscheint die Zeichnung nämlich nicht auf einen Schlag auf dem Bildschirm, sondern wird in der gleichen Art, wie sie die Schülerinnen und Schüler gezeichnet haben, schrittweise auf dem Bildschirm wiedergegeben. Das ist für die Schülerinnen und Schüler ein erster Aha-Moment.

„Normalisierung“ einer Zeichnung

In einem weiteren Schritt werden die Zeichnungen nun für den Vergleich untereinander vorbereitet und in einer weiteren Liste gespeichert, dabei spielt der folgende Block eine zentrale Rolle:

Block zur gleichmässigen Verteilung der Punkte auf der Figur.

Der Block „normalisiert“ die Zeichnung, indem er die vorher in unregelmässigen Abständen gemessenen Punkte regelmässig entlang der Linie verteilt. Dies ist später wichtig, um verschiedene Zeichnungen vergleichen zu können.

Ein Vergleich zwischen der rohen und angepassten Zeichnung illustriert die Funktion:

Nach der "Normalisierung" sind die Punkte entlang einer Zeichnung regelmässig verteilt.

links: Originalzeichnung; rechts: Zeichnung nach Anwendung des resample-Blocks

Die Anzahl der Punkte kann passend zur Komplexität der gezeichneten Figuren einstellen.

Für die Sekundarstufe I empfiehlt es sich, den resample-Block zu Verfügung zu stellen, da dessen Programmierung einige Zeit in Anspruch nimmt und vom eigentlichen Zweck des Programmierbeispiels eher ablenkt.

Speichern und Erkennen verschiedener Zeichnungen

Durch die Erweiterung des bisherigen Blockes zum Zeichnen von Linien können unterschiedliche Zeichnungen gespeichert und erkannt werden.

Das Programm wird erweitert: Zeichnungen können und gespeichert und erkannt werden.

Der if-Block wird verwendet, damit für den Rest des Kernprogrammes möglichst wenig Blöcke benötigt werden. Wenn „recognize“ wahr ist, werden die gezeichneten Figuren gespeichert, wenn „recognize“ falsch ist, werden diese erkannt.

Mit dem ask-Block wird nach dem Namen einer Figur gefragt, anschliessend werden die Punkte einer einzelnen Zeichnung zusammen mit der Bezeichnung „drawings“ gespeichert.

Im else-Teil spielt der „recognize … in …“-Block die zentrale Rolle. Auch auf dessen Programmierung sollte auf der Sekundarstufe I verzichtet werden.

Der Block findet die Zeichnung, die einer aktuellen Linie am ähnlichsten ist.

Der Block misst die Distanz zwischen der aktuell gezeichneten Figur und den Figuren in der Liste „drawings“, indem er jeweils den Abstand von Punktepaaren vergleicht. Der Name der Figur mit dem insgesamt kleinsten Abstand wird dann per „broadcast“ verschickt.

Um die Funktionsweise sichtbar zu machen, gibt es einen Zusatzblock, mit dem die Abstände der einzelnen Punktepaare als Vektoren dargestellt werden können.

Block zur Visualisierung der Abstände zwischen zwei Zeichungen.

Der Vergleich zwischen einem Rechteck und einem Dreieck sieht dann beispielsweise so aus.

Vergleich zwischen Rechteck und Dreieck.

Animation der erkannten Zeichnungen

Da der Name der erkannten Zeichnung versendet wird, kann dieser genutzt werden, um eine Animation zu starten, wobei das Gerüst immer gleich aussieht.

Animationsblock

Damit das funktioniert, muss die Mitteilung im „when I receive“-Block entsprechend angepasst und die Animation selbst programmiert werden.

Blöcke zur Animation der Figuren findet man unter den Looks- und Motion-Blöcken, es können aber auch Sounds und andere Effekte eingebaut werden.

Als Starthilfe sind hier einige Animationsblöcke. Diese kann man einfach verwenden, anpassen oder als Inspiration verwenden.

Beispiele für mögliche Animationen

Das Starter-Programm

Das Starter-Programm enthält die Definitionen der Variablen und alle Blöcke, die für die Programmierung der Aktivität benötigt werden: Gestenerkennung – Startdatei.

Starter mit einigen Blöcken zur Initialisierung des Programms.

Wenn man möchte, dass die eigenen Zeichnungen nicht gelöscht werden, sollte man den Block „set drawings“ vom Startblock (Block mit grüner Fahne) lösen.

Verwendung in Moodle

Moodle hilft bei der Organisation in zweifacher Hinsicht. Einerseits kann mit dem Plugin Snap! submissions eine Aktivität angelegt werden, aus der Snap! direkt mit der entsprechenden Vorlage gestartet werden kann, andererseits können Schülerinnen und Schüler ihre Animationsblöcke in einer geeigneten Moodleaktivität wie „Forum“ oder „Database“ miteinander austauschen.

Erfahrungen aus dem Unterricht

Für die Umsetzung werden auf der Sekundarstufe I mindestens zwei Lektionen benötigt. Legt man viel Wert auf den kreativen Teil, bei dem die Schülerinnen und Schüler die gezeichneten Figuren aufwändig animieren oder gar zu einer Geschichte verknüpfen, sind 3 bis 4 Lektionen auf jeden Fall angemessen.

Ausserdem empfiehlt es sich, den Schülerinnen und Schülern spätestens am Ende der Lektion einen funktionierenden Zwischenstand der Programmierung zu Verfügung zu stellen. In Moodle sollte man dabei beachten, dass die xml-Dateien mit der Option „download“ zu Verfügung gestellt werden.

Insgesamt vermittelt „Grand Gestures“ wichtige technische Grundlagen, bietet die Basis für eine kreative Nutzung des verwendeten Algorithmus und leistet eine gute Überleitung zu weitergehenden Verfahren aus dem Bereich der künstlichen Intelligenz.

Neuronale Netze zur Erkennung von 0 und 1

1989 veröffentlichten Y. LeCun et al. ihre Arbeit über die Erkennung von Postleitzahlen mithilfe von neuronalen Netzen (Quelle) und dieser Ansatz gehört unterdessen zu den Standardunterrichtseinheiten bei der Einführung des Themas und Schülerinnen und Schüler experimentieren mit entsprechenden interaktiven Anwendungen (Beispiel). Dabei kommen einerseits für den didaktischen Einsatz vergleichsweise grosse neuronale Netze zum Einsatz, z.B. 768 (28 x 28) Bildpunkte als Eingaben für das neuronale Netz, LeCun selbst arbeitete mit einer Auflösung von 16 x 16, andererseits werden auch viele beschriftete Testdaten benötigt.

Deshalb stellt sich die Frage, wieweit solche Systeme im Unterricht reduziert werden können, sodass sie einerseits für Lernende überschaubarer werden, anderseits aber das Potential behalten, auch komplexere Probleme mit einer einigermassen handhabbaren Anzahl von Versuchsdaten zu lösen.

Ein möglicher Ansatz mit der blockbasierten Programmiersprache Snap!, die unter anderem auch Blöcke rund um das Thema neuronale Netze zu Verfügung stellt, wird im Folgenden beschrieben.

Neuronale Netze trainieren

Schülerinnen und Schüler der Sekundarstufe I sollen anhand eines mininalen Ansatzes, der Erkennung von Nullen und Einsen, mit einem neuronalen Netz experimentieren. Dabei sollen sie die Trainingsdaten selbst erfassen und nach dem Training des neuronalen Netzes untersuchen, wie gut und unter welchen Umständen das neuronale Netz diese Ziffern unterscheiden kann. Anschliessend sollen sie mit den gleichen Fragestellungen zusätzliche Zeichen trainieren und deren Erkennungsraten unter verschiedenen Bedingungen untersuchen.

Hinweis: In Anlehnung an die Gestenerkennung in Snap! sollen alle Zeichen aus einem Linienzug bestehen. (Die Programmierung kann in dieser Hinsicht natürlich auch angepasst werden.)

Das Programm

Das Programm (Link) besteht aus den folgenden Teilen (Sprites):

Start: Im Startsprite wird der Zweck des Programms erklärt und die Umgebung eingerichtet.

Start des Programms zum neuronalen Netz und Initialisierung.

Damit das Programm möglichst überschaubar bleibt, werden die Zeichen nicht normalisiert. Stattdessen steht ein Zeichenbereich zu Verfügung, in den Nullen und Einsen hineingeschrieben werden können. Diese didaktische Reduzierung kann einen Einfluss auf die Datenqualität haben, welche im Bereich Training wichtig wird.

Training: Im Trainingsteil können die Trainingsdaten erhoben werden, wobei verschiedene Anpassungen an die Einstellungen möglich sind.

Im Trainingsbereich werden die Daten erfasst.

Für das Erfassen der Daten ist es sinnvoll einige Einstellungen anzupassen:

  • Stiftdicke: Wenn die Datenmenge stark reduziert werden soll, was ein Ziel der didaktischen Vereinfachung ist, muss die Stiftdicke genügend gross gewählt werden, ansonsten sind nach der Reduktion keine verwertbaren Pixel mehr vorhanden.
  • Bildgrösse: Die Bildgrösse kann über die Variable „percentage“ eingestellt werden. Für das Training von 0 und 1 ist ein Wert von 2 % ausreichend. Für das Training weiterer Zeichen sollte dieser Wert auf mindestens 5% erhöht werden.

In der vorliegenden Fassung können nur Nullen und Einsen bequem erfasst werden. Für weitere Zeichen empfiehlt es sich folgenden Block zu kopieren (duplicate) und anzupassen:

Block zum schnellen Speichern eines einzelnen Datensatzes.

Dazu ändert man einfach die Eingabe bei „when … key pressed“. Die versandten Daten müssen dabei nicht mit der Eingabe übereinstimmen, erleichtern aber die Zuordnung, wenn sie der Eingabe entsprechen.

Wichtig: Im Abschnitt „Variables“ können verschiedene Variablen angezeigt werden. Diese geben einem eine Rückmeldung zu verschiedenen Aspekten des Datensatzes. So kann man beispielsweise mittels der Variable „numbers“ direkt bei der Eingabe überprüfen, ob bei gegebener Auflösung (Reduktion der Daten) das entsprechende Zeichen überhaupt noch ein brauchbares Signal liefert.

Oberfläche der Eingabe mit Überprüfung der Datenqualität.

Die gezeichnete Zahl verschwindet zwar nach kurzer Zeit, die Daten bleiben aber in der Variablen „numbers“ gespeichert. Sie werden allerdings erst in den Datensatz übernommen, wenn auf der Tastatur die entsprechende Taste (hier: 1) gedrückt wurde.

Sobald ein Muster gespeichert wird, gibt das Programm eine Rückmeldung: In der Form eines „T“ werden die Dimensionen des gespeicherten Bildes und dessen Label angezeigt.

Sollte doch einmal vorschnell ein ungeeignetes Datenmuster gespeichert worden sein, kann dieses mit dem Block „delete last of data“ gleich wieder gelöscht werden.

Achtung! Da das Programm sehr einfach gehalten ist, darf nicht über den blauen Rand der Eingabefläche hinausgezeichnet werden, sonst kann es zu Problemen mit den Trainingsdaten kommen. Darum können sich die Schülerinnen und Schüler aber im nächsten Schritt kümmern.

Neuronales Netz: Hier wird das neuronale Netz definiert und trainiert.

Für das Training des neuronalen Netzes stehen spezielle Blöcke bereit

Bevor mit dem Training begonnen wird, muss deren Qualität überprüft werden. Wenn, wie schon erwähnt, bei der Eingabe über den Rand gezeichnet wurde, kann es sein, dass die Dimensionen einzelner Datensätze von der vorgegebenen Grösse abweichen.

Weil der Datensatz so klein ist, kann man solche Abweichungen von Hand überprüfen. Dazu klickt man einfach auf „dimensions of data“ und damit werden die Eingabedaten als Tabelle angezeigt.

Tabelle mit den Daten zu den eingegebenen Zeichen.

Grössere Datensätze können mit dem Block „set data …“ bereinigt werden. Dieser löscht Datensätze, die zu gross sind, d.h., Muster, bei denen über den Rand gezeichnet wurde.

Die einzelnen Datensätze können nun mit „plot bars …“ angezeigt werden. Die Auswahl erfolgt per Zufall, kann aber mit „item … of data“ auch gezielt gesteuert werden.

Anzeige eines einzelnen Datensatzes

Auch hier gilt: Weil die Datenmenge so klein ist, bleibt alles überschaubar.

Falls sich die Schülerinnen wundern, weshalb ein Datensatz teilweise sehr unterschiedliche Werte enthalten kann, sollte man sie darauf hinweisen, dass dies ein Artefakt der Komprimierung der Daten ist. Dabei werden Pixel zusammengefasst und je nach Verteilung mehr oder weniger hell dargestellt.

Nach all diesen Vorbereitungen kann nun endlich das neuronale Netz trainiert werden. Dazu klickt man auf den Block „generate classifier …“.

Die visuelle Ausgabe von Snap! zeigt einerseits den Trainingsverlauf, andererseits das verwendete neuronale Netz.

In einer Liveansicht wird nicht nur mit den unten im Bild sichtbaren Balken und der Statistik oben rechts der Trainingsverlauf angezeigt, sondern auch das neuronale Netz visualisiert und laufend aktualisiert. Die Stärken und Farben der Verbindungslinien geben dabei die Gewichtungen wieder.

Hinweis: Der Block „generate classifier …“ nutzt die vorhandenen Daten, um ein entsprechendes neuronales Netz aufzubauen. Die Architektur des Netzes kann aber auch manuell eingestellt werden, was für interessierte Lernende ein weiteres Experimentierfeld eröffnet.

Testen: In diesem Bereich testen die Schülerinnen und Schüler, wie gut die trainierten Zeichen erkannt werden.

Blöcke zum Testen des neuronalen Netzes

Die Blöcke im Bereich „Testen“ greifen weitgehend auf bereits vorhandene Elemente zu, um die Eingabe und Überprüfung von Zeichen zu erlauben. Zentral ist aber der Block „class of …“, der die neuen Eingabedaten mithilfe des trainierten neuronalen Netzes klassifiziert.

Eine Eins wird als 1 klassifiziert.

Erweiterungen: In diesem Bereich werden die Lernenden aufgefordert, ihre eigenen Untersuchungen anzustellen.

Experimentiervorschläge für Schülerinnen und Schüler

Diese Experimente sollen von den Schülerinnen und Schülern auch dokumentiert werden, wobei sie von einer Reihe von ausserhalb des Snap!-Programms formulierten Leitfragen unterstützt werden.

Leitfragen

1) Wie funktioniert das Programm?

Aus welchen Schritten besteht das Programm und wie funktionieren diese?

2) Welche Daten hast du für das Training verwendet?

Schreibe auf, welche Zahlen, Buchstaben oder Zeichen du für das Training verwendest hast.
Wie viele Male hast du jedes einzelne Zeichen trainiert?

3) Welche Einstellungen hast du verwendet?

Wie gross sind die von dir verwendeten Pixelbilder? 
Welche Stiftgrösse hast du verwendet?

4) Wie ist dein neuronales Netz aufgebaut?

Aus wie vielen Schichten besteht dein Netz und wie gross sind diese?
Du kannst hier auch eine Abbildung der Bühne (stage) aus Snap verwenden.

5) Wie gut wurden deine Zeichen erkannt?

Welche Zeichen wurden gut erkannt? Welche nicht? Woran liegt das möglicherweise?

6) Was würdest du bei weiteren Versuchen anders machen?

Beschreibe, welchen Teil deines Experiments du anpassen würdest.

7) Was für Fragen bleiben für dich offen?

Gibt es Teile des Experiments, die du noch nicht ganz verstanden hast oder über die du gerne mehr wissen würdest?

Integration in Moodle

Snap! lässt sich über die entsprechende Webseite aufrufen, im konkreten Fall wird dafür aber das Plugin Snap! Submission in Moodle verwendet. Dieses kann innerhalb der Moodle-Aktivität Aufgabe verwendet werden, funktioniert allerdings zum Zeitpunkt der Veröffentlichung aufgrund des Updates auf Snap! v12 aktuell nicht korrekt, weshalb ein entsprechender Bugreport geschrieben wurde.

Davon abgesehen besteht der Vorteil der Integration in Moodle darin, dass sowohl die programmierten Beispiele als auch die Berichte der Schülerinnen und Schüler an einem zentralen Ort gespeichert werden. Diese können dann auf unterschiedliche Weise (hier: Kriterienraster) bewertet werden.

Ausführlicher Kriterienraster zur Bewertung der Abgaben der Lernenden.

Bei der Verwendung von Kriterienrastern kann unterdessen in Moodle auch auf externe Sprachmodelle (LLM) zurückgegriffen werden. Da im konkreten Fall keine persönlichen Daten der Schülerinnen und Schüler übermittelt werden, können Lehrpersonen so entlastet werden.

Einordnung

Mit dem vorliegenden Ansatz (Unterscheidung von Nullen und Einsen) können sich Schülerinnen und Schüler in einer didaktisch stark vereinfachten Form mit der konkreten Anwendung von neuronalen Netzen beschäftigen. Dabei sind die verwendeten Datenmengen und die darauf basierenden neuronalen Netze derart klein, dass deren Verwendung anschaulich bleibt. Trotzdem können anhand dieses Vorgehens typische Herausforderungen bei der Verwendung neuronaler Netze aufgezeigt werden. Und die dabei erworbenen Kenntnisse und Fertigkeiten können dann auch auf komplexere Anwendungen übertragen werden. Damit entspricht der Ansatz der Philosophie von Snap!: Low floor, wide walls, high ceiling!

Was der Ansatz hingegen nicht leisten kann: Er bietet keinen konkreten Einblick in die Funktionsweise eines Neurons oder wesentlicher Techniken, welche beim Training und der Verwendung von neuronalen Netzen verwendet werden. Dazu bietet Snap! andere Blöcke an und möglicherweise ist ein solcher Einblick auch eher Thema für eine höhere Schulstufe.

 

 

 

Worteinbettungen

Mithilfe von Markov-Ketten können aus Texten Wortfolgen gebildet werden, die den Grammatikregeln ziemlich gut folgen. Siehe dazu Automatische Generierung von Texten und Snap!GPT, sowie SoekiaGPT. Die resultierenden Texte enthalten aber meist unsinnige Passagen, weil sie auf statistischen Wahrscheinlichkeiten und nicht auf einem tieferen Verständnis basieren.

Damit beispielsweise ein Sprachmodell auch inhaltlich passende Texte verfassen kann, greift es nebst anderen Techniken auf sogenannte Worteinbettungen (word embeddings) zurück. Dabei werden Wörter und Begriffe als Vektoren dargestellt und in einem multidimensionalen Raum verortet. Diese Worteinbettungen sollen von den Schülerinnen und Schülern mithilfe entsprechender Blöcke in Snap! untersucht werden.

Die folgende Lerneinheit baut auf der Arbeit von Ken Kahn auf, der entsprechende Unterlagen in englischer Sprache im Rahmen des eCraft2Learn-Projektes der University of Oxford veröffentlicht hat.

Ablauf der Lektion

Zuerst werden die Schülerinnen und Schüler mithilfe einer einfachen mittels vibe coding erstellten Webseite in das Thema eingeführt: Word embeddings entdecken. Dabei handelt es sich um eine starke Vereinfachung des Sachverhalts, die aufzeigen soll: Worteinbettungen erfolgen nicht zufällig, sondern die Platzierung einzelner Begriffe spiegelt Aspekte der Sprache wider.

Didaktisch vereinfache Abbildung von Worteinbettungen.

Vor dem Wechsel zum Snap!-Programm erfahren die Lernenden auch, dass die Koordinaten der Wörter bei Worteinbettungen nicht nur aus zwei Zahlen (zweidimensional) oder drei (3D), sondern aus vielen Dimensionen bestehen, die durch den Vergleich von n-Grammen oder anderen rechnerisch aufwändigen Verfahren bestimmt wurden.

Das Snap!-Programm

Das Snap!-Programm selbst besteht aus drei Teilen: Blocks, 2D-View und Experiments. Es ist hier zu finden: Worteinbettungen – DE.

Blocks listet im Wesentlichen die wichtigsten von Ken Kahn entwickelten Blöcke auf und erklärt deren Funktion, wobei die Schülerinnen und Schüler diese unter der Anleitung der Lehrperson kennenlernen sollen.

Da die recht zahlreichen Blöcke im Programm selbst beschrieben werden, wird hier auf eine genauere Erläuterung verzichtet und nur eine grobe Übersicht gegeben.

Die hinterlegten Worteinbettungen arbeiten mit Vektoren, die 300 Dimensionen aufweisen. Zudem ist der Datensatz multilingual (15 verschiedene Sprachen) und ermöglicht damit auch den Vergleich zwischen Sprachen und Übersetzungen.

Nebst der reinen Darstellung der Vektoren, kann auch nach Wörtern im Umfeld von Begriffen gesucht werden wie etwa in einem Nachschlagewerk für sinn- und sachverwandte Wörter. Und es ist möglich mittels Verrechnung von Vektoren Analogien zu berechnen.

2D-View ermöglicht die Projektion der Vektoren auf eine Ebene und ermöglicht damit die Erkundung von Wörtern in Hinblick auf spezifische Eigenschaften.

Zwar liefert Ken Kahn bereits einen Block, mit dem die Vektoren in der Ebene abgebildet werden, bei den üblichen Verfahren gehen aber meist gerade diejenigen Zusammenhänge verloren, die bei der Verrechnung von Vektoren überraschenderweise zutage treten.

Deshalb wurde das Snap!-Programm um weitere Blöcke ergänzt, welche die Berechnung entsprechender Achsen erlaubt, mit deren Hilfe die Wörter dann so in der Ebene abgebildet werden können, dass diese Zusammenhänge grafisch einfach ersichtlich werden.

Das zu Verfügung gestellte Beispiel stellt Verwandtschaftsbeziehungen in Bezug auf Alter und Geschlecht dar.

Berechnete Beziehungen von Begriffen in der Ebene entlang der Achsen Alter und Geschlecht.

Dabei wurde das Beispiel bewusst in englischer Sprache gehalten, damit die Schülerinnen und Schüler dieses in einem ersten Schritt ins Deutsche übertragen können. Die Definition der Achsen mittels entsprechender Wortpaare ist nämlich anspruchsvoll und fordert zum Experimentieren heraus.

Blöcke die zur Abbildung von Begriffen in der Ebene verwendet werden können.

Da auch Schülerinnen und Schüler der Sekundarstufe I mit diesen Blöcken arbeiten sollen, wurden die benötigten Berechnungen bewusst wegabstrahiert. Diese können bei entsprechendem Vorwissen der Lernenden aber über die Editierfunktion der Blöcke aufgerufen und nachvollzogen werden.

Auch der „write words … in 2D“-Block ist stark abstrahiert, weil er über die Variablen „x axis“ und „minmax“ die Koordinaten der Begriffe automatisch so skaliert, dass sie den sichtbaren Teil der Ebene mehr oder weniger ausfüllen.

Experiments dient dem freien Experimentieren. Die Schülerinnen und Schüler können Blöcke in diesem Bereich ziehen und mit diesen eigene Untersuchungen durchführen.

Die Dokumentation

Sowohl das Snap!-Programm als auch die Dokumentation, welche die Schülerinnen und Schüler teilweise in der Lektion, teilweise als Hausaufgabe erstellen sollen, wird in einem Moodlekurs über die Aufgabenstellung mithilfe der Plugins Snap! Submissions und Response template umgesetzt.

Dabei nehmen die Lernenden zu folgenden Leitfragen Stellung:

1) Welche Blöcke hast du ausprobiert?
Füge entsprechende Bildschirmfotos ein und beschreibe kurz, was diese Blöcke bewirken.

2) Welche Wörter hast du untersucht?
Schreibe die von dir eingegebenen Wörter ein und notiere das vom Computer errechnete Ergebnis.

3) Bei welchen Beispielen haben dich die Ergebnisse überrascht? Was hat deinen Erwartungen entsprochen?
Nenne konkrete Beispiele.

4) Welches Ergebnis aus all deinen Versuchen findest du am spannendsten? Weshalb?
Beschreibe es in eigenen Worten und füge ein Bildschirmfoto ein.

5) Wie würdest du einem Kind erklären, wie Word embeddings funktionieren?
Verwende eine einfache Sprache, um die Technik hinter deinen Versuchen zu erklären.

Bemerkungen

Obwohl für die Umsetzung der Lerneinheit die Snap!-Programmierumgebung im Zentrum steht, liegt der Fokus nicht auf der Programmierung – diese wird in Form einer sogenannten Mikrowelt (nur wesentliche Blöcke sind sichtbar) zu Verfügung gestellt. Damit können zwei Zielsetzungen umgesetzt werden:

1) Die Schülerinnen und Schüler lernen die Grundlage einer wichtigen Technik kennen, die bei Suchmaschinen und Sprachmodellen zum Einsatz kommt: Worteinbettungen als informatorisches Konzept.

2) Die Schülerinnen und Schüler „rechnen“ mit Sprache und lernen dabei mehr über die Zusammenhänge zwischen einzelnen Begriffen (mediendidaktischer Ansatz).

Dabei ist die Erweiterung zur gesteuerten Abbildung von Begriffen aus dem multidimensionalen Vektorraum in die Ebene von zentraler Bedeutung: Denn die einschlägige Literatur zeigt zwar die Grundprinzipien der Beziehungen von Begriffen auf, verwendet dabei aber meist fabrizierte Beispiele, statt diese aus den vorhandenen Daten anschaulich zu berechnen.

 

 

„Game of Life“ und emergentes Verhalten

Das von John Conway 1970 entwickelte „Game of Life“ soll im Medien- und Informatikunterricht als Beispiel dienen, um für Schülerinnen und Schüler der Sekundarstufe I emergentes Verhalten sichtbar zu machen.

Game of Life

Das „Game of Life“ ist auf verschiedensten Webseiten und in vielen Publikationen hervorragend dokumentiert, weshalb hier auf eine Beschreibung des zellulären Automaten selbst verzichtet wird. Wer mehr darüber wissen möchte, sei auf die Webseite ConwayLife.com verwiesen.

Das Programm

Weil das „Game of Life“ so gut dokumentiert ist, eignet es sich besonders gut, um eine Version mittels Vibe Coding zu erstellen, die eine Reihe von Bedingungen erfüllt, die für den Unterricht besonders hilfreich sind.

Hier kann das Programm „Conway’s Game of Life“ ausprobiert werden.

Das Programm selbst besteht aus drei Teilen: Regeln und Muster, Übung und Simulation.

Regeln und Muster

Unter dem Reiter „Regeln und Muster“ wird das Spiel eingeführt, die Regeln erklärt und einige typischen Muster vorgestellt.

Conway's Game of Life: Erklärungen und Muster

Übung

Unter dem Reiter „Übung“ können die Schülerinnen und Schüler die jeweils nächsten Schritte zu einer Reihe von vorgegebenen Mustern „berechnen“, indem sie die Regeln manuell anwenden, oder sich die einzelnen Schritte zeigen lassen.

Conway's Game of Life: Übung

Simulation

Unter dem Reiter „Simulation“ ist es möglich, eigene Figuren zu entwerfen und deren Entwicklung zu verfolgen.

Conway's Game of Life: Simulation

Dafür bietet das Programm eine Reihe von interessanten Funktionen:

Steuerung: Hier kann die Simulation schrittweise oder automatisch mit unterschiedlicher Geschwindigkeit abgespielt werden.

Gittergrösse: Die Gittergrösse kann dem zu Verfügung stehenden Bildschirm und dem zu untersuchendem Muster angepasst werden.

Zeichnen & Vorlagen: Hier können einige bekannte Muster eingefügt oder ein Zufallsmuster ausgewählt werden. Natürlich können die Schülerinnen und Schüler auch ganz eigene Muster entwerfen.

JSON Speichern / Laden: Gezeichnete Muster können an dieser Stelle gespeichert und wieder geladen werden.

Export: Beim Export ist es möglich, den aktuellen Stand der Simulation als SVG oder eine Anzahl von Simulationsschritten als animiertes SVG zu speichern.

Einsatz im Unterricht

Im Unterricht wurde zuerst kurz mit den Schülerinnen und Schülern besprochen, wie aus einfachen Regeln komplexes Verhalten entstehen kann (Emergenz) und dann das Video „Auf den Spuren des ‚Spiels des Lebens‘“ aus der Reihe Mathewelten geschaut (bis 30.11.2028 auf SRF).

Der Hauptteil der Lektion bestand aus der Arbeit mit dem vorgestellten Programm in den Schritten „Regeln & Muster“, „Übung“ und „Simulation“, wobei letzterer Schritt den Hauptteil der Lektion umfasste.

Zum Abschluss tauschten die Schülerinnen und Schüler ihre besten Beispiele als animierte SVGs über eine entsprechende Datenbankaktivität in Moodle aus.

Dabei wurden unterschiedliche Strategien sichtbar: Während einige Schülerinnen und Schüler systematisch die zu Verfügung stehenden Beispiele ausprobierten, experimentierten andere frei. Einige beschränkten sich dabei auf einfache Figuren, andere begannen mit einer grösseren Pixelgrafik und wollen herausfinden, was mit dieser in der Simulation passierte.

Weshalb Emergenz?

Das „Game of Life“ ist unbestritten eine spannende Simulation, trotzdem stellt sich die Frage, weshalb Emergenz im Unterricht der Sekundarstufe I überhaupt ein Thema sein soll.

Die Antwort darauf liegt in der Entwicklung der künstlichen Intelligenz in den letzten Jahren, insbesondere bei den grossen Sprachmodellen (LLMs). Diese basieren ja auch auf relativ einfachen Rechenschritten, die aber in ihrer Gesamtheit weit mehr können als die blosse Summe ihrer Teile (siehe dazu „Characterizing Emergent Phenomena in Large Language Models„).

In dieser Hinsicht ist die Beschäftigung mit dem „Game of Life“ ein vergleichsweiser überschaubarer Schritt hin zu einem zumindest teilweisen Verständnis dafür, wie die grossen Sprachmodelle funktionieren.