Naive Bayes Modell löst das Even-Odd Learning Problem
KI im Informatikunterricht
Dieser Beitrag kann als Grundlage für die Einführung des Themas „Künstliche Intelligenz“ im Schulunterricht eingesetzt werden. Er illustriert „Maschinelles Lernen“ anhand einer für die Schüler* einfach verständlichen Aufgabe mittels einer Data Analytics Methode: Naive-Bayes. Die Aufgabe kann mit „Papier und Bleistift“ durchgeführt werden. Die Voraussetzungen beschränken sich auf Erstellen von Tabellen, Auszählen von Häufigkeiten und Berechnung von relativen Häufigkeiten.
Die Blogserie „Six not so easy pieces for AI” (Sechs nicht so einfache Aufgaben für AI) begann in 2019 mit der einfachen Fragestellung, ob AI in der Lage ist, eine der einfachsten „intellektuellen“ Leistungen zu erbringen, nämlich zu lernen, ob eine Zahl gerade oder ungerade ist. (Siehe hier.)
Abstrakte Fragestellung - Allgemeines Schema
Hier bedeuten die einzelnen Attribute des Input-Vektors die Dezimalstellen einer ganzen Zahl, beginnend bei den „Einern“ ganz rechts. Der Wertebereich (Kategorien-Labels) ist jeweils 0,1,…,9. Die Response im Supervised Learning gibt jeweils an, ob die Zahl gerade oder ungerade ist. Die entsprechenden Klassen sind 0 (für Gerade) und 1 (für Ungerade). Im trainierten Zustand gibt R die „Vorhersage“ für eine Testzahl.
Es ist wichtig zu bedenken, dass ein "lernendes KI-System" hier kein Konzept von Zahlen, Dezimalstellen und deren Bedeutung innerhalb einer Zahl (z.B. Einer, Zehner etc.) hat. Die Inputs sind für das System nichts weiter als eine Liste von Ziffern.
Das Training-Szenario
Als Training-Daten wird eine Anzahl von ganzen positiven Zahlen in Form einer Liste der einzelnen Dezimalstellen samt der richtigen Klassifikation in gerade / ungerade vorgegeben.
Als Testdaten werden einzelne Zahlen oder ein Set von Zahlen in dieser Form ohne Klassifikation verwendet. Diese sind nicht in den „Lernvorgang“ eingegangen. Das Ergebnis (Prediction) kann mit dem wahren Wert verglichen werden.
Die ML Methode
Als ML-Methode verwenden wir hier, anders als in der erwähnten Blog-Serie, ein Naive-Bayes Verfahren. Kurz erläutert, wertet das NB-Verfahren die Trainingsdaten aus und bestimmt – mittels der Bayes-Formel - die bedingte Wahrscheinlichkeit dafür, dass, gegeben eine m-stellige Zahl (Input-Vektor), das Ergebnis R=0 ("gerade") ist. Entsprechend für R=1 ("ungerade"):
P(R=0|a0 a1 … am)
Der Input-Vektor ist einfach die Ziffernfolge der Zahl, wobei für die Dezimalstellen untereinander keine Abhängigkeit besteht. (Grundannahme für die Gültigkeit von „Naive“ Bayes.)
Im „gelernten“ Zustand kann das Modell (auch Classifier genannt) für unbekannte Zahlen b = b0 b1 … bm entscheiden, ob diese gerade oder ungerade ist, anhand der berechneten Wahrscheinlichkeiten P(R=0|b) und P(R=1|b) – je nachdem, welche der Wahrscheinlichkeiten größer ist.
(In der Regel reichen wenige Zahlen für das Training aus, sofern man die sog. Glättung im Classifier „ausschaltet“. Die Glättung kompensiert Fälle, in denen eventuell einzelne Werte in den Input-Daten nicht vorkommen (missing data), und sich damit Schwierigkeiten in der Auswertung ergeben können.)
Für unser gerade-ungerade-Lernen Problem zeigt sich, dass die o.a. Wahrscheinlichkeiten P entweder 0.0 oder 1.0 sind. Im Sinne der Blogserie haben wir es hier also mit „starkem Lernen“ zu tun.
Ist das Lernverfahren auch „robust“? In der Blogserie hatten wir damit ein Lernverfahren gekennzeichnet, das ein gewisses Maß an Fehlern in den Trainingsdaten vertragen kann und trotzdem „richtig“ lernt. Und dabei auch die Fehler „richtigstellt“ (im Code-Beispiel: 5% Zufallsstörung)
Da die Input-Werte ganzzahlig (Kategorien) sind (0,..9) und die Response-Klassen ebenfalls (0,1), setzen wir hier die Variante CategoricalNB() aus der scikit-learn Toolbox an.
Outline des Algorithmus „Gerade/Ungerade Lernen“
Als Programm liegt dieses Beispiel als ein Jupyter Notebook vor, ablauffähig und mit kleinen Zwischentexte zur Erläuterung. Wegen Problemen bei der Kompatibilität der Dokumentenformate liegt das Notebook als html-Datei hier: NB_even-odd_problem_notebook
Der übliche, grobe Ablauf ist wie folgt:
- Problem Defintion: Beschreibung der Aufgabe als Text
- Problem-Dimensionen und Datensatzumfang (Code-Zelle)
- Parameter für Problem-Varianten (optional, Code)
- Generierung des Datensets: (Code-Zellen) Inputzahlen per Zufallsgenerator, dargestellt als Liste von Dezimalziffern je Zeile, davon N Zeilen (Matrix-Struktur Nx6). Zugehörige Klassifikation (R-Werte) als Liste von 0 und 1 für jede Matrix-Zeile (Zahl). Beispiel:
- Datenset-Aufteilung Tranings-/Testdaten: z.B. 70% zu 30% (Code)
- Categorical Naive Bayes Modell: Modell-Defintion und Training (g_u_model.fit()) mit den Trainingsdaten (Code)
- Ergebnisse: 7.1Test-Beispiele, 7.2 Genauigkeit der Klassifikation durch das Modell für Trainings- und Testdaten, 7.3 „Innere“ Daten des trainierten Modells (s. Code-Zellen)
- (Optional) Aufgaben-Varianten: 8.1 Verfälschen der Klassifikationen in den Trainingsdaten zur einem kleinen Prozentsatz per Zufall. 8.2 Probieren, Teilbarkeit durch 5 zu lernen. (Code Zellen)
- (Optional) Experimentieren: Teilbarkeit durch 3, 4 o.ä. Warum funktioniert Naiv-Bayes hier nicht?
Links zu NaiveBayes Methoden
https://scikit-learn.org/stable/modules/naive_bayes.html
https://scikit-learn.org/stable/modules/generated/sklearn.naive_bayes.CategoricalNB.html
https://www.analyticsvidhya.com/blog/2017/09/naive-bayes-explained/
Six not so easy pieces for AI
In einer Artikelserie für die weit verbreitete Zeitungsbeilage PRISMA hatte Ulrich vor einiger Zeit schon versucht, KI und die Konsequenzen allgemein verständlich darzustellen. Die Serie beginnt mit dem Beitrag "Künstliche Intelligenz I: Von Menschen für Menschen geschaffen".
Die Frage, worin die Intelligenz von KI-Systemen besteht, ob KI-Systeme selbstständige Intelligenz entwickeln können, oder man ihnen intellektuelle Fähigkeiten zusprechen kann, wird zurzeit heftiger denn je diskutiert – nicht nur in Kreisen der „Techniker“ sondern auch in den Gesellschafts- und Cognitiv-Wissenschaften.
Beginnen wir mit einigen aktuellen Zitaten zu Intelligenz und Künstlicher Intelligenz – drei plausible aus Millionen von möglichen Zitaten.
„Allgemeine Künstliche Intelligenz: AKI – ein System, das alle intellektuellen Fähigkeiten eines Menschen in sich vereint.“ ([KI, S. 39]
„Wenn Maschinen oder Computer kognitive oder geistige Fähigkeiten zeigen, die denen des Menschen ähneln, so nennt man das Künstliche Intelligenz. Bei diesen Fähigkeiten kann es sich z.B. um Lernen aus Erfahrung handeln oder um die Lösung von Problemen.“ [KI]
In einem Fernseh-Interview [MG] definiert Markus Gabriel erstmalig "Intelligenz" als die Fähigkeit, für ein Problem eine Lösung zu finden. Er ergänzt: das setzt voraus dass man überhaupt ein Problem hat (oder erkennt). Und zu KI, recht restriktiv: in der KI sind es die Menschen, die die Probleme definieren, nicht die KI-Systeme / Algorithmen. Folglich sind KI-Systeme - trotz des "I" im Namen - nicht intelligent.
Es geht offenbar nicht nur darum, eine Aufgabe zu bewältigen, sondern um die Fähigkeit der Lösungsfindung.
Die intellektuelle „Intelligenz“ eines KI Systems besteht nicht (so sehr) in der Fähigkeit ein Problem zu lösen, sondern in der Fähigkeit, Lösungen für ein Problem zu finden. Das bedeutet im konkreten Fall, die Fähigkeit, die Lösung einer Aufgabe zu erlernen – weniger, sie nur auf eine Aufgabe anzuwenden. Ein Algorithmus, der z.B. den größten gemeinsamen Teiler (ggT) von zwei Zahlen bestimmt, löst diese Aufgabe. Er kann das. Ein Algorithmus, der lernt, wie der ggT. von zwei Zahlen bestimmt wird, hat eine ganz andere „intellektuelle“ Aufgabe. Menschenskinder lernen das spätestens als Schüler früher oder später.
Offenbar ist Erfahrung eine wesentliche Voraussetzung für die Lösungsfindung. Erfahrung kann vermittelt werden, durch Lehrer:innen, durch Beispiele (Daten) oder durch eigene, wiederholte Beobachtungen entstehen.
Sofern das System, das lernt, ein menschliches Artefakt ist (Programm, Computer, Robot) spricht man von Machine Learning - für Lebewesen verwendet man eher den Begriff „Animal Learning and Cognition“, aber das ist ein anderes Thema.
Ohne Zweifel ist heute die Leistungsfähigkeit spezieller KI Methoden, insbesondere des Maschinellen Lernens (ML), spezialisiert für bestimmte Aufgaben der Erkennung, Analyse und Klassifizierung den vergleichbaren menschlichen Fähigkeiten weit überlegen, dank der Fortschritte in der Computer- und Algorithmen-Entwicklung. Aber das haben Technologie-Fortschritte so an sich. Einen schon atemberaubenden Einblick in die Hochleistungssysteme und algorithmischen Techniken von ML Verfahren, insbesondere mit Tiefen Neuronalen Netzen, findet man in dem kürzlich erschienen Buch [KI].
Die Lernfähigkeit als (quasi-)intellektuelle Fähigkeit künstlicher Systeme zeichnet also Systeme aus, die sich vom Zustand des Nicht-Lösen-Könnens in den des Lösen-Könnens entwickeln können. Klingt kompliziert, ist es auch – wie soll das gehen? In der KI Praxis hat man dafür, dank der enormen Rechenleistung von Spezial-Computern und der Intelligenz von ML-Wissenschaftlern, Verfahren entwickelt und verfeinert, die diese Lernfähigkeit in Form von hochdimensionalen Parameter-Anpassungen gewinnen.
Das heißt aber auch, dass hier nicht ein „KI-System“ diese Lernfähigkeit entwickelt, sondern dass diese zunächst einmal durch enorme menschliche intellektuelle Leistungen – von Mathematikern, Informatikern, SW-Ingenieuren usw. – in Algorithmen oder technischen Systemen vorbereitet wird.
Man kann zwar „höhere“ KI-Systeme mit ML-Methoden ausstatten, die sich die algorithmischen Komponenten nach bestimmten Zielvorgaben selbst zusammenstellen, etwa der, das Lernen für eine bestimmte Problemklasse zu optimieren oder Erklärungen für bestimmte Ergebnisse zu liefern. Insofern kann man davon sprechen, dass sich die sogenannte Schwache KI (z.B. Machine Learning, Robot-Steuerung) durch Vielseitigkeit und Lernleistung in Richtung Starker KI (intellektuelle Leistungen) entwickelt. Aber auch das beruht primär auf menschlicher Intelligenz, sowohl was die Meta-Problemstellung betrifft als auch die algorithmischen Verfahren. Das KI-System kann dabei das Ausprobieren verschiedener Strukturen und Anpassen von sog. Hyperparametern automatisieren.
(Anmerkung: Das sieht nach einem „infiniten Regress“ Problem für die Allgemeine Künstliche Intelligenz aus. Was fehlt, ist ein Prinzip der Entwicklung. Etwa ein Evolutionsprinzip (Genetische Variation, Selektion), das ja offensichtlich erfolgreich zu Animal Learning and Cognition und insbesondere zur menschlichen Intelligenz als Maß aller Dinge geführt hat.)
In der Blog-Serie „Sechs nicht so einfache Aufgaben für KI“ haben wir der KI ein paar einfachste, anspruchslose Aufgaben vorgelegt, die jedes Kind zu bewältigen lernt. Sie sind der Verstehbarkeit halber aus der Mathematik gewählt. Also etwa das Zählen, oder gerade und ungerade Zahlen zu unterscheiden. Wir wollten daran sehen, wie es um die Lernfähigkeit bestellt ist, was man als Entwickler dazu beitragen muss, welche Qualitäten des Lernens man dabei entdecken kann und, was KI daraus lernen kann, wie Kinder diese Aufgaben – vermutlich – zu lösen lernen.
Die Blog-Serie ist auf Medium für Beck et al. GmbH, München, auf Deutsch veröffentlicht. Den Einstieg findet man in dem kurzen Einführungsblog: Sechs nicht so einfache Aufgaben für KI, oder über die Webseite von https://becketal.com unter #our_blog. Im Laufe der Zeit (2019) war die Serie ordentlich angewachsen, weshalb der Einführungsblog-Beitrag am Ende auch ein Verzeichnis aller Beiträge der Serie enthält, in der empfohlenen Lesereihenfolge und direkt bzw. untereinander verlinkt.
Noch ein Hinweis: Die Beiträge sind in Form so genannter Jupyter Notebooks (für Python) entstanden. D.h. der erzählende Text wird unterstützt durch kurze Python-basierte Code-Blöcke (unter Verwendung einschlägiger Packages wie keras / Tensorflow für Neuronale-Netze-Modelle). Mit denen können die beschriebenen Ideen bei Interesse nachgebildet werden.
Zum Abschluss noch ein älteres Zitat, nicht weniger bedeutend als die aktuellen:
"I propose to consider the question, "'Can machines think?' This should begin with definitions of the meaning of the terms 'machine' and 'think'. The definition might be framed so as to reflect so far as possible the normal use of the words, but this attitude is dangerous..." [AT]
[KI] G. Paaß, D. Hecker: Künstliche Intelligenz Springer 2021
[MG] Markus Gabriel: Sendung aspekte vom 12.3.2021
[AT] Alan Turing: Computing Machinery and Intelligence, Oxford University Press, 1950