Aussehen
Künstliche Intelligenz
Wie maschinelles Lernen funktioniert, steht im Kapitel Künstliche Intelligenz — überwachtes Lernen, neuronale Netze, Entscheidungsbäume, und was daran gesellschaftlich schwierig ist. Hier geht es um etwas anderes: Du baust selbst eines.
Dabei sind zwei Dinge zu unterscheiden, die im Alltag gern in einen Topf geworfen werden.
Ein fertiges Modell benutzen heißt: Du schickst eine Anfrage hin und bekommst eine Antwort zurück. Das ist kaum schwerer als jede andere Schnittstelle und ein guter Anfang.
Ein Modell selbst trainieren ist etwas anderes. Da schaust du zu, wie aus Beispielen ein Modell entsteht, und siehst dabei genau die Begriffe wieder, die im KI-Kapitel erklärt wurden.
Ein Sprachmodell benutzen 🐍🐍
Die ersten Computerspiele waren Textadventures: Eine Szene wird beschrieben, man tippt, was man tun will, und der Text geht weiter. Das Problem war immer, dass jemand jede mögliche Antwort vorher aufschreiben musste.
Ein Sprachmodell nimmt einem genau das ab.
python
verlauf = [
{"rolle": "system", "text": "Du bist der Erzähler eines Textadventures. "
"Beschreibe kurz eine Szene und frage, was ich tue."}
]
while True:
antwort = frage_modell(verlauf)
print(antwort)
eingabe = input("> ")
if eingabe == "ende":
breakDer Aufbau ist immer gleich: Du schickst den bisherigen Verlauf mit, bekommst die nächste Antwort und hängst beides hinten an. Das Modell selbst merkt sich nichts — das Gedächtnis ist deine Liste.
Wie frage_modell genau aussieht, hängt vom Anbieter ab und steht in dessen Dokumentation. Der Rest ist das, was du kannst: eine Schleife, eine Liste, ein Dictionary.
Bevor du anfängst
- Der Schlüssel gehört nicht ins Programm. Siehe Daten abrufen — in eine eigene Datei, nie ins Repository.
- Anfragen kosten Geld. Eine Endlosschleife ohne Pause kann teuer werden. Bau eine Begrenzung ein.
- Gib nichts Persönliches weiter. Was du an einen Anbieter schickst, verlässt die Schule. Keine echten Namen, keine Noten, keine Daten von Mitschüler:innen.
- Prüfe, was zurückkommt. Ein Sprachmodell erfindet auch dann etwas, wenn es nichts weiß. Für ein Abenteuer ist das großartig, für eine Auskunft gefährlich.
Dein Textadventure
- Bring die Schleife zum Laufen: Szene, Eingabe, nächste Szene.
- Gib dem Erzähler eine Welt vor — Schule im Jahr 2140, ein U-Boot, was du magst.
- Führ ein Inventar als Liste mit und schick es bei jeder Anfrage mit.
- Bau ein Ende ein: Bei einem bestimmten Ereignis hört das Spiel auf.
- Vergleiche zwei Systemanweisungen, die sich nur in einem Satz unterscheiden. Wie stark verändert das das Spiel?
Aufgabe 5 ist die eigentlich interessante: Du lernst dabei mehr über Sprachmodelle als aus jeder Erklärung — nämlich dass die Anweisung fast alles bestimmt.
Ein Modell selbst trainieren 🐍🐍🐍
Der Klassiker ist die Ziffernerkennung: 70 000 handgeschriebene Ziffern, und dein Programm soll lernen, welche welche ist. Das ist genau das Beispiel aus dem KI-Kapitel, nur diesmal nicht als Erklärung, sondern als Code.
Gebaut wird das Modell mit Keras — der Bibliothek, die einem die Mathematik dahinter abnimmt. Das Erstaunliche ist, wie wenig übrig bleibt. Der eigentliche Kern passt in ein Dutzend Zeilen:
python
modell = keras.Sequential([
keras.layers.Flatten(input_shape = (28, 28)),
keras.layers.Dense(128, activation = "relu"),
keras.layers.Dense(10)
])Drei Schichten: eine, die das Bild auf eine Reihe von 784 Zahlen ausrollt; eine mit 128 Knoten, in der das eigentliche Lernen stattfindet; eine mit 10 Knoten — eine pro Ziffer. Der Aufbau aus dem Kapitel, in drei Zeilen.
Danach folgen zwei Aufrufe: fit trainiert, evaluate prüft an Daten, die das Modell nie gesehen hat. Genau die Trennung in Trainings- und Testdaten, die du mit den beißenden Affen unplugged geübt hast.
Was du brauchst: Am einfachsten geht es in Google Colab. Das Notizbuch läuft dann auf Googles Rechnern, du brauchst nichts zu installieren und führst jeden Schritt einzeln aus. Ein Google-Konto ist dafür nötig.
https://www.tensorflow.org/tutorials/quickstart/beginnerErst nachvollziehen, dann verändern
- Arbeite das Tutorial durch und führ jeden Schritt einzeln aus.
- Notiere, welche Genauigkeit dein Modell erreicht.
- Ändere die 128 auf 32 und danach auf 512. Was passiert mit der Genauigkeit? Was mit der Trainingszeit?
- Trainiere statt 5 Runden nur 1 — und danach 20. Wird es immer besser?
- Such dir aus den Testdaten ein Bild, bei dem sich das Modell irrt, und schau es dir an. Hättest du es erkannt?
Aufgabe 4 hat einen Haken, den man selbst finden soll: Ab irgendwann wird das Modell auf den Trainingsdaten besser und auf den Testdaten schlechter. Das nennt man Überanpassung.
Weitere Ideen
| Projekt | |
|---|---|
| Bilderkennung für selbst fotografierte Objekte trainieren | 🐍🐍🐍 |
| Ein Modell, das aus Wetterdaten den nächsten Tag vorhersagt | 🐍🐍🐍 |
| Ein Sprachmodell als Gegner in einem Ratespiel | 🐍🐍 |
| Zwei Sprachmodelle miteinander diskutieren lassen | 🐍🐍 |