Navigation: 🐟 Teil 1 - 🐟 Teil 2 - 🐟 Teil 3 - 🐟 Teil 4 - 🐟 Zusatzkapitel Loading ⌛Loading ⌛

🐟 Künstliche Intelligenz für echte Fische 3

🎯 In dieser Reihe erfährst du, wie eine künstliche Intelligenz automatisiert Daten auswertet und beurteilt. Dazu begibst du dich auf raue See.


Inhaltsverzeichnis


1. Was bisher geschah...

👩‍🦰 Du hilfst Sigrún beim Bau eines Fischsortierapparats der Hering von Lodde unterscheiden kann. Anhand von zwei Messgrössen hast du versucht, die beiden Fischsorten mit einer von Hand gezeichneten Linie voneinander zu trennen.

🤔 Dabei ist die Frage aufgetaucht, was überhaupt „gut“ bedeutet.


Decision Boundaries1)

2. Was heisst überhaupt "gut"?

Decision Boundary
Eine „Grenze“ welche verschiedene Klassen voneinander abtrennt, wird als Decision Boundary bezeichnet. Bei zwei Messgrössen ist die Decision Boundary eine (gekrümmte) Linie.
Training Set und Validation Set
Die Daten, welche verwendet werden, um ein Verfahren einzustellen, bilden das Training Set. Die Daten, welche zum Überprüfen eines Verfahrens verwendet werden, bilden das Validation Set. Im vorangehenden Auftrag hattest du mithilfe des Training Sets eine Decision Boundary gezeichnet und anhand des Validation Sets überprüft, wie gut die Decision Boundary ist.

In der nebenstehenden Abbildung siehst du mehrere Decision Boundaries. Jede Zeile zeigt dieselbe Decsion Boundary zweimal, einmal mit dem Training Set und einmal mit dem Validation Set.

  • Oberste Zeile: Die lineare Decision Boundary vermag die Fischsorten nicht gut zu trennen. Der „Trainingsfehler“ und der „Validationsfehler“ sind beide hoch.
  • Unterste Zeile: Die Decision Boundary wurde stark von den einzelnen Trainingsfischen beeinflusst, d.h. die Trainingsfische wurden „auswendig gelernt“. Daher ist der Trainingsfehler klein, jedoch der Validationsfehler gross. Vermutlich werden künftige Fische ähnlich schlecht wie die Validationsfische erkannt werden.
  • Mittlere Zeile: Die Decision Boundary hat den groben Zusammenhang zwischen Hering und Lodde recht gut erfasst. Die Trainings- und Validationsfehler sind ähnlich klein. Vermutlich werden künftige Fische ähnlich gut erkannt werden.
Komplexität des Verfahrens
Ganz salopp gesagt, je komplexer ein Verfahren ist, desto mehr Kurven kann dieses in die Decision Boundary einbauen.
Generalisierung und Overfitting
Sind Trainings- und Validationsfehler ungefähr gleich, so wird von einer hohen Generalisierung gesprochen. Ist der Validationsfehler deutlich grösser, so hat ein Overfitting der Training Data stattgefunden, d.h. die Trainingsfische wurden auswendig gelernt.

⚠️ Das Ziel besteht darin, bei einer guten Generalisierung einen möglichst tiefen Fehler zu erhalten (und Overfitting zu vermeiden).


3. Künstliche Intelligenz – bitte übernehmen!

🤔 Eine Decision Boundary von Hand zu zeichnen und die falschen Fische von Auge zu zählen ist mühsam.

😎 Glücklicherweise kann das der Computer übernehmen. Das Stichwort hierfür heisst künstliche Intelligenz - das Programm soll selber lernen, welche Decision Boundary die beste ist.

✍ Auftrag

💡 Das nachfolgende Programm nutzt ein neuronales Netz, um Hering von Lodde zu trennen2). Neuronale Netze werden zu den Verfahren der künstlichen Intelligenz gezählt. Das neuronale Netz „lernt“ mithilfe des Training Sets in mehreren Epochen („Lernrunden“) eine immer bessere Decision Boundary zu zeichnen. Dieser Prozess wird als Training bezeichnet. Dabei wird die Güte der Decision Boudary regelmässig mit dem Validation Set überprüft. Dieser Prozess wird als Validation bezeichnet.

⚠️ Die %-Angabe in den Grafiken bezeichnet den Anteil richtig erkannter Fische (zusätzlich wird in Klammern die Anzahl falsch erkannter Fische angegeben). Der mse Wert in der Console ist ein Fehlermass, das vom neuronalen Netz für das Training genutzt wird. Je kleiner der mse, desto besser.

🚨 Training manuell stoppen: In die Grafik klicken und ESC drücken.

  1. Starte das nachfolgende Programm mit ▶Run. Der erste Start kann etwas dauern. Wenn alles klappt, so „faltet“ sich die Decision Boundary langsam in die Trainingsdaten hinein. Notiere dir am Ende den Anteil richtig erkannter Fische und den mse beides für Training und Validation. Loading ⌛
  2. Starte das Programm erneut und notiere dir wiederum den Anteil richtig erkannter Fische und den mse bezüglich Training und Validation. Loading ⌛
  3. Vergleiche die Zahlen in den beiden obigen Textfeldern. Sind diese identisch oder unterschiedlich? Lies danach:
    diese Erklärung.
  4. Starte das Programm mehrfach. Dabei darfst du auch die folgenden Parameter am Anfang des Programmcodes ändern:
    • LERNRATE: Legt fest, wie stark sich die Decision Boundary pro Epoche ändern darf. Ist der Wert zu hoch, springt die Decision Boundary hin und her, ist der Wert zu tief, brauchst du viel Geduld…
    • ANZAHL_HIDDEN_NEURONS: Bestimmt die Komplexität der Decision Boundary. Ist der Wert zu hoch, kann Overfitting auftreten, ist die Zahl zu klein, können die Fische nicht gut getrennt werden.
    • ANZAHL_EPOCHEN: Legt die Anzahl der Epochen fest. Ist der Wert zu klein, so kann das neuronale Netz nicht genügend lernen. Ist der Wert zu hoch, brauchst du viel Geduld…
    • EPOCHEN_FUER_GRAFIK_UPDATE: Legt fest, nach wie vielen Epochen die Grafik jeweils aktualisiert wird.
  5. Halte deine Rekorde für die Anteile richtig erkannter Fische und den mse für Training und Validation fest. Loading ⌛


4. Wie funktioniert so was?

Künstliches neuronales Netz [Ahmed Gad, Pixaby licence]3)
🕸️ Neuronale Netze: Beschreibung und Einsatzgebiete

Neuronale Netze sind einfache Nachbildungen des menschlichen Gehirns 🧠. Sie bestehen aus mehreren miteinander verbundenen künstlichen Neuronen (das sind einfache Nachbildungen von Gehirnzellen). Das Praktische an neuronalen Netzen ist, sie können auf einem Computer erstellt und genutzt werden.
Neuronale Netze sind (noch?) nicht in der Lage, das menschliche Gehirn vollständig nachzuahmen. Sie eignen sich jedoch relativ gut dafür, Muster zu erkennen und werden daher in verschiedenen Feldern der Forschung und Industrie eingesetzt (z.B. Gesichtserkennung, Bildkorrektur, Sprachübersetzung, Chatbots, Diagnosen in der Medizin).
Das von uns verwendete neuronale Netz4)
🕸️ Neuronale Netze: Aufbau und Arbeitsweise

Neuronale Netze können auf verschiedene Art und Weise aufgebaut werden. Eine Variante ist das rechts dargestellte neuronale Netz, welches du soeben für die Fischklassifikation verwendet hattest.
Dem neuronalen Netz in der Abbildung werden links die beiden Messwerte der Fische eingegeben. Die Eingabe läuft von links nach rechts durch alle Neuronen (die Kreise) hindurch und wird so zu einem Resultat verrechnet. Die Neuronen in der linken Spalte werden Input Neuronen genannt, die Neuronen in der Spalte ganz rechts Output Neuronen und alle Neuronen dazwischen Hidden Neuronen.
Je mehr Hidden Neuronen ein neuronales Netz hat, desto mehr kann es sich „merken“. Wird nicht nur eine Spalte Hidden Neuronen verwendet, sondern zwei oder mehrere, so wird von Deep Learning gesprochen.
Audio Mischpult [Kevin Wuhrmann, Pixaby licence]5)
🕸️ Neuronale Netze: Lernen

Damit ein neuronales Netz genutzt werden kann, muss es erst einmal für seine Aufgabe „eingestellt“ werden. Das funktioniert ähnlich wie das Einstellen eines Mischpults für das Abmischen einer Band. Die Person am Mischpult wählt für alle Drehknöpfe und Schieberegler eine Einstellung und hört, ob der Sound gut tönt. Wenn nicht, wird die Einstellung so lange verändert, bis das Resultat „rockt“.
Beim neuronalen Netz sind die Knöpfe und Regler mit den Neuronen verknüpft, sie werden als Gewichte bezeichnet. Je mehr Hidden Neuronen ein neuronales Netz besitzt, desto mehr Gewichte hat es. Zu Beginn werden alle Gewichte zufällig eingestellt, was dazu führt, dass das neuronale Netz anfänglich Blödsinn produziert 🤪. Danach werden die Gewichte in mehreren Schritten angepasst, bis (hoffentlich) das neuronale Netz das Gewünschte „gelernt“ hat 😎. Dieser Vorgang wird als Training bezeichnet.
🕸️ Neuronale Netze: Daten und Training

Von jedem Fisch 🐟 kennen wir seine beiden Messwerte und die Klasse, zu welcher dieser gehört. Für Hering legen wir fest, dass das neuronale Netz die Zahl 0 ausgeben soll und für Lodde die Zahl 1. Diese beiden Zahlen werden als Desired Output (erwünschte Ausgabewerte) bezeichnet.
Für das Training schnappen wir uns den ersten Trainingsfisch. Nehmen wir an, es sei ein Hering. Seine beiden Messwerte werden in das neuronale Netz eingegeben. Daraus berechnet das neuronale Netz einen Ausgabewert, der bei unserem neuronalen Netz zwischen 0 und 1 liegt. Sagen wir, das neuronale Netz gibt 0.3 aus. Aus der Differenz des Ausgangswerts 0.3 und dem Desired Output für Heringe 0 wird ein Fehler berechnet. Das wird für alle Fische im Training Set wiederholt. Wenn der Gesamtfehler am Ende „gross“ ist, werden die Gewichte „stark“ angepasst, wenn der Fehler „klein“ ist, werden die Gewichte nur „leicht“ angepasst. Jede solche Wiederholung wird als Epoche bezeichnet.
🕸️ Neuronale Netze: Anwenden

Ist das neuronale Netz fertig trainiert, werden die Gewichte nicht mehr geändert. Das neuronale Netz kann nun für die Fischklassifikation verwendet werden. Dazu wird ein unbekannter Fisch 🐠 genommen und seine Messwerte dem neuronalen Netz eingegeben. Das neuronale Netz produziert daraufhin eine Zahl zwischen 0 und 1. Angenommen die Ausgabe ist 0.7, was bedeutet das? Das Einfachste ist das Folgende. Wir legen fest, ein Ausgabewert < 0.5 wird als Hering erkannt und ein Ausgabewert ≥ 0.5 als Lodde. Somit wird der unbekannte Fisch als Lodde erkannt. Der Grenzwert (in unserem Beispiel 0.5) wird als Threshold bezeichnet.
✍ Auftrag
  1. Ersetze im Text die 🐟 in den [🐟] durch folgende Wörter, welche du natürlich grammatikalisch an den Text anpasst:
    Epoche, Gehirn, Gewicht, Hering, Hidden, Input, Lodde, Muster, Output, Training Set, Threshold.
    ⚠️ Jedes Wort wird nur einmal gebraucht, die [ ] sollten stehen gelassen werden, dann ist auch nach dem Ausfüllen klar, wo die Lücke war.

Loading ⌛


5. Aber was bedeutet das nun für Sigrún?

😄 Sigrún freut sich zuerst darüber, dass es dir gelungen ist, einen so guten Fischsortierapparat zu bauen. Der Apparat liefert keine perfekten Resultate, aber der grösste Teil der Fische wird richtig sortiert.

😭 Dann realisiert Sigrún jedoch, dass im Hering-Korb immer noch zu viele Lodde und im Lodde-Korb immer noch zu viele Heringe zu liegen kommen. Somit müsste sie alle Fische in beiden Körben von Hand nachkontrollieren! Der Fischsortierapparat ist trotz seiner „Intelligenz“ für Sigrún immer noch nutzlos.


6. Fortsetzung folgt...

👩‍🦰 Gibt es doch noch Hoffnung für Sigrún? Das erfährst du im 🐟 Teil 4.


Eigene Notizen

Loading ⌛

1) , 4)
eigene Darstellung, CC0 1.0
2)
Im Programm wurde das Neuronale-Netz-Framework TensorFlow.js verwendet