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.

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.

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:

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.

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.

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.

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.

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 …“.

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.

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.

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

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.

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.