INHALT

Teil III
Wie funktioniert Maschinenlernen?

Programmieren und KI: Maschinenlernen aus Beispielen

Die einzelnen Schritte eines Programms so präzise zu beschreiben, dass nichts vergessen und nichts missverstanden wird und nichts falsch ist, ist die Aufgabe von Programmiererinnen und Programmierern. Wenn Sie das Sandwich-Spiel einmal mit Ihren Kindern spielen, werden Sie plötzlich nachvollziehen können, warum die Programme, die Sie benutzen, ab und zu fehlerhaft sind. Missverstehen Sie mich bitte nicht: Das ist keine Entschuldigung. Programme sollten natürlich fehlerfrei sein – ich will nur sagen, dass das nicht so einfach ist.

In der Tat ist dieser Sachverhalt einer der Gründe, warum die sogenannte Künstliche Intelligenz, genauer: eine ihrer Spielarten, nämlich das Maschinenlernen, sich aktuell so großer Popularität erfreut. Dort ist der Ansatz ein anderer. Anstatt jeden einzelnen Schritt genau zu beschreiben, definiert man stattdessen Programme durch eine große Menge an Beispielen. Das erklärt auch, warum man die entsprechenden Techniken Maschinenlernen nennt: Wir Menschen lernen ja auch besonders gut anhand von Beispielen.

In unserem Zusammenhang bestehen Beispiele aus Ein- und Ausgaben, die wir durch das → – Symbol voneinander trennen werden. Anstatt also die einzelnen Schritte beim Kuchenbacken zu beschreiben, betrachtet man die Beispiele (Milch, Mehl, Zucker, Kakao, Butter, Eier) → Marmorkuchen und (Mehl, Hefe, Salz, Zucker, Äpfel) → Apfelkuchen und (Mehl, Hefe, Salz, Zucker, Zwetschgen) → Zwetschgenkuchen und so weiter. Nehmen wir weiterhin an, dass es Zutatenlisten für Kompott gibt, also (Äpfel, Zucker, Zimt) → Apfelkompott und (Birnen, Zucker, Vanillezucker, Nelke) → Birnenkompott. Beim Maschinenlernen wird nun eine Funktion ermittelt, die für Eingaben, die „zwischen“ den Eingaben der Beispiele liegen, Ausgaben berechnet, die möglichst nahe bei oder zwischen den Ausgaben der entsprechenden Beispiele liegen. Für eine neue Zutatenliste (Mehl, Hefe, Zucker, Birnen), die nicht Teil der Beispiele war, findet die gelernte Funktion die Beispiele, deren Zutaten dieser Liste am ähnlichsten sind. Hier sind das wohl die Zutaten für Apfel- und Zwetschgenkuchen sowie Birnenkompott. Als Ausgabe gibt die gelernte Funktion etwas aus, das zwischen den zu diesen Eingaben gehörigen Ausgaben liegt – hier vielleicht Birnenkuchen.

Im Maschinenlernen unterscheidet man zwei Phasen. Die erste Phase ist das Lernen eines Sachverhalts, das in ein sogenanntes gelerntes Modell mündet, das diesen Sachverhalt abbildet. Nach dem Lernen nutzt man in der zweiten Phase das gelernte Modell wie ein Programm, indem man es mit Eingaben füttert und eine Ausgabe erhält.

Traditionell unterscheidet man die folgenden Aufgaben des Maschinenlernens: Klassifizierung, Vorhersage, Gruppierung und Assoziation.

  1. Bei der Klassifizierung ordnet man Eingabedaten einer Klasse zu: Eingabebilder von Tieren etwa werden als „Hund“, „Katze“ oder „Meerschweinchen“ erkannt. Einfache Erkennungssysteme für Fußgänger ordnen einem Kamerabild die Klasse „Fußgänger“ oder „kein Fußgänger“ zu.
  2. Bei der Vorhersage soll das Ergebnis keine vorher festgelegte Klasse sein, sondern ein Wert, wenn etwa der Preis eines Hauses anhand seiner Quadratmeterzahl, Lage und seines Alter vorhergesagt werden soll. Unser Birnenkuchen oben fällt auch in diese Kategorie.
  3. Bei der Gruppierung (Clustering) will man „ähnliche“ Objekte in Klassen zusammenfassen, ohne die Klassen vorher zu kennen: Bilder von Tieren werden so gruppiert, dass möglichst alle Hunde, alle Katzen und alle Meerschweinchen in jeweils einer Klasse liegen, ohne dass man die Kategorien „Katze“, „Hund“, „Meerschweinchen“ vorher kennt.
  4. Bei der Assoziation schließlich versucht man zu verstehen, was die Faktoren sind, die in der Vergangenheit wesentlich zu einem bestimmten Ergebnis beigetragen haben. Beispiele sind Faktoren für den Onlinekauf eines bestimmten Produkts, vielleicht die Verwendung eines iPhones statt eines Android-Smartphones beim Einkauf, andere selbst vorher gekaufte Produkte, andere von Freunden vorher gekaufte Produkte, Uhrzeit des Einkaufs und so weiter.

Es gibt sehr viele unterschiedliche Ansätze, diese Probleme technisch zu lösen. Programme hingegen funktionieren im Wesentlichen immer so, wie ich das oben beschrieben habe. Das erklärt, warum wir in diesem Beitrag den Begriff des Programms einigermaßen detailliert einführen können: Der ist nämlich ziemlich eindeutig definiert! Weil es aber andererseits so extrem viele sehr unterschiedliche Verfahren des Maschinenlernens gibt (hier finden Sie ein Überblicksbild), müssen wir beim Maschinenlernen gezwungenermaßen stärker an der Oberfläche bleiben.

Wir müssen kurz noch die Welten des Maschinenlernens und des Programmierens zusammenbringen. Beim Programmieren überlegt sich ein Mensch Schritt für Schritt, wie ein Problem gelöst werden soll. Das Ergebnis ist ein vom Menschen erstelltes Programm. Beim Maschinenlernen ist das Ergebnis das erwähnte von einer Maschine erzeugte Modell, das den gelernten Sachverhalt beschreibt. Jetzt wird es ein bisschen kompliziert. Das Maschinenlernen selbst besteht aus einzelnen Schritten und ist in diesem Sinn ein Programm wie jedes andere: Eingaben sind Beispiele, Ausgabe ist das Modell. Die Ausgabe, also das Modell, kann man nun auch als Programm verstehen, weil es eine Funktion berechnet, zum Beispiel wie einem Bild eine Tierart zugeordnet wird. Diese Modelle sind aber etwas anders als die Programme, die wir bisher kennengelernt haben. Das Modell besteht nicht aus einzelnen zielgerichteten Schritten, durch die ein Mensch verstehen könnte, wie man dem Ziel näher kommt. Das war im Gegensatz dazu in unserem Summen- und Quadratprogramm oben durchaus der Fall. Wie genau stattdessen ein Modell das Problem löst, ist eben abhängig von der Variante des Maschinenlernens, für die man sich entschieden hat.

In diesem Sinn versucht Maschinenlernen, die Aufgabe des Programmierers zu übernehmen. Weil es auch für Programmiererinnen und Programmierer sehr unterschiedliche mögliche Lösungen für ein Problem gibt, ist eigentlich zu erwarten, dass auch Maschinenlernen sehr unterschiedliche Lösungen, also Modelle, finden kann. Und genau das ist der Fall.

Warum Maschinenlernen?

Bitte machen Sie sich klar, dass für alle vier genannten Anwendungen des Maschinenlernens die oben gemachte Beobachtung gilt, dass sie sich jeweils als Funktionen darstellen lassen. Zudem kann man sehen, dass in allen Fällen entweder die Aufgabe schwer zu präzisieren ist: „Identifiziere Ähnlichkeiten“ – wann sind zwei Hunde denn ähnlich, und wie unterscheiden sich Hunde von Katzen? „Ordne einer Klasse zu“ – was macht einen Hund denn zum Hund und eine Katze zu einer Katze? Oder die Zusammenhänge sind komplex („Was ist der Preis eines Hauses?“), oder man hat sie noch nicht genau verstanden („Identifiziere die Faktoren für eine Kaufentscheidung“).

Maschinenlernen wird aber nicht nur verwendet, weil es manchmal einfacher ist als das explizite Formulieren von Programmen. Bisweilen funktioniert es auch ganz einfach besser. Das kann man gut am Beispiel der automatischen Übersetzung natürlicher Sprachen sehen, etwa von Deutsch nach Englisch. Jahrzehntelang hat man versucht, die Regeln der beiden Grammatiken aufeinander abzubilden und hat damit letztlich nicht immer überzeugende Resultate erzielen können. Mit Maschinenlernen funktioniert das viel besser, wie das Beispiel der Übersetzungsmaschine DeepL sehr eindrücklich demonstriert – probieren Sie es einmal aus!

Ein anderes Beispiel ist die Objekterkennung in Bildern, etwa von Fußgängerinnen und Fußgängern in Kamerabildern, die von autonomen Fahrzeugen aufgezeichnet werden. Versuchen Sie einmal, genau wie im Sandwich-Fall, ganz präzise zu beschreiben, wie man einen Fußgänger erkennen kann, ohne Konzepte wie „Mensch“ oder „Kind“ oder „Schnee“ oder „Regenschirm“ zu benutzen. Diese Konzepte kennen Maschinen ja zunächst nicht. Denken Sie dabei daran, dass es Kinder und Erwachsene gibt; dass zu Fuß Gehende sich unterschiedlich schnell bewegen; dass sie Einkaufstaschen tragen und Regenschirme benutzen und zu Karneval Hühnerkostüme tragen können; dass sie in Grüppchen auftreten können und sich gegenseitig teilweise verdecken; dass sie auch von Autos verdeckt werden können; dass es unterschiedliche Licht- und Wetterverhältnisse mit Sonne, Regen und Schnee gibt; und dass zu Fuß Gehende wie aus dem Nichts auftauchen können, wenn ein Kind hinter einem Auto hervorspringt, um seinen Ball zu holen. Das ist noch schwieriger als das Erdnussbutter-Marmeladen-Sandwich!

Schließlich ist ein weiterer Grund für die Verwendung von Maschinenlernen die Tatsache, dass Programme, die solche maschinengelernten Funktionen implementieren, manchmal viel schneller ablaufen können als herkömmliche Programme.

Stolpersteine

Allerdings gibt es auch durchaus gravierende Nachteile des Maschinenlernens, über die in der aktuellen Debatte häufig großzügig hinweggesehen wird: Ob nämlich die so gefundene Ausgabe wirklich die richtige ist, das weiß keiner – und noch schlimmer: Das kann auch keiner genau wissen! Denn wir haben ganz bewusst mit Beispielen gelernt und die einzelnen Schritte nirgendwo explizit aufgeschrieben. Das ist ja gerade der Gag! Deswegen können die Ergebnisse aber auf dieser Ebene auch nicht überprüft werden. Kein Wunder also, dass es die aktuell boomende Forschungsrichtung der „erklärbaren KI“ gibt.

Beim Maschinenlernen werden häufig nicht dieselben Zusammenhänge gelernt, die ein Mensch zum Verständnis der Welt zugrunde legt. Bei der Aufgabe „unterscheide Hund von Katze“ achten wir Menschen vielleicht auf die Größe, die Form der Augen, den Schwanz, Schnurrbarthaare und so weiter. Maschinen hingegen lernen oft irgendwelche Zusammenhänge, die uns Menschen gar nicht relevant erscheinen. Verblüffenderweise funktioniert das in der Praxis trotzdem oft sehr gut. Dazu passt die bekannte Beobachtung, dass in der Regel durch das Verändern nur eines einzelnen Bildpunkts – was ein Mensch gar nicht wahrnehmen kann – aus einer richtigen Klassifizierung des Bildes als „Hund“ eine falsche „Katze“ wird. Die Frage ist dann, wie schlimm das in der Praxis ist.

Die Tatsache, dass das Maschinenlernen sich aktuell so großer Popularität erfreut, liegt auch an den großen Fortschritten in den Lernverfahren. Der Hauptgrund ist aber wohl die heute oft viel einfachere Verfügbarkeit großer Mengen von Daten. Aber täuschen Sie sich nicht: So einfach ist auch das wieder nicht. Daten sind nämlich in der Praxis oft unvollständig und fehlerhaft oder nicht repräsentativ oder eben doch nur in relativ kleinen Mengen verfügbar. Und für die heute prominentesten Lernverfahren (vielleicht haben Sie schon einmal etwas von Deep Learning gehört), benötigt man sehr große Mengen von Beispielen, die in manchen Fällen vorliegen, etwa das Kaufverhalten bei Amazon, in vielen Fällen jedoch nicht, etwa Sicherheitsangriffe gegen Automobile. Es gibt viele andere Ansätze, auch solche, die mit kleineren Beispielmengen auszukommen versuchen, aber auch das führt uns hier zu weit.

Falls Sie das interessiert, finden Sie unter anderem bei Kaggle viele öffentlich verfügbare Daten, mit denen Maschinenlernverfahren ausprobiert und überprüft werden können.

Manchmal ist es so, dass das Lernen von Funktionen sehr viel Energie verbrauchen kann (hier nur eine Quelle zu dieser erregt geführten Diskussion). Da die „Berechnung“ der Funktion nach dem Lernen des Modells manchmal hingegen sehr wenig Energie verbraucht, muss man das natürlich in Bezug setzen zu alternativen Implementierungsformen, etwa der Programmierung von Hand. Auch das führt uns hier aber zu weit.

Schließlich besteht unter vielen Forscherinnen und Forschern heute Konsens, dass rein beispielbasierte Lernverfahren nicht das Mittel der Wahl sind, wenn man den zu lernenden Ausschnitt der Realität schon gut verstanden hat – etwa die Schwerkraft, Strömungen von Flüssigkeiten oder das Verhalten elektrischer Felder in bestimmten Kontexten: Es ist nicht sinnvoll zu lernen, was man schon weiß. Maschinenlernen ist also auch aus diesem Grund nicht der eine Hammer, der sinnvoll ist für alle Nägel. Große Anstrengungen werden heute unternommen, die Welt der expliziten Regeln und Gesetze mit der beispielbasierten Welt des Maschinenlernens zu verheiraten.

Auf das aktuell kontrovers diskutierte Thema der Ethik im Maschinenlernen gehen wir später nur kurz ein, auch das würde hier zu weit führen. Heiß debattiert wird aktuell die Problematik, dass eine maschinengelernte Funktion zwar im Schnitt sehr gut sein kann, aber für einzelne kleine Untergruppen von Eingaben sehr schlecht, wie beispielsweise bei der automatischen Gesichtserkennung, wenn dadurch mitunter gesellschaftliche Minderheiten diskriminiert werden.

In der aktuellen Debatte schließlich drängt sich bisweilen das Gefühl auf, als wären mit KI beziehungsweise Maschinenlernen alle Probleme der Informatik abschließend gelöst. Das ist natürlich nicht der Fall. Insgesamt funktioniert Maschinenlernen in der Tat oft gut, aber eben auch nicht immer. Wenn man aus Beispielen lernt, ist man zwangsläufig mit den diskutierten Schwierigkeiten konfrontiert. Deswegen ist Maschinenlernen genau wie das klassische Programmieren nur ein Werkzeug im Werkzeugkasten der Informatik: Maschinenlernen kann das Programmieren nicht ersetzen, aber sinnvoll ergänzen. Und wie wir gleich sehen werden, gehört zu Software viel mehr als das „Programmieren“ von Funktionen, ob das nun durch einen Menschen geschieht oder durch Maschinenlernen.