Machine Learning als Laie verstehen — Zwei Buchtipps zur Einführung und Übung

Ab und zu spiele ich gegen meinen Computer Schach. Ich bin nicht gut darin, aber trotzdem macht es mir Spaß. Das Brettspiel ist schon sehr lange gut durch Computer spielbar, da es auch allein durch bloße Rechenkraft beherrschbar ist. Das erste Schachprogramm für das normale 8×8-Spielbrett entstand bereits 1958. Immer schnellere Computer mit immer größerer Speicherkapazität erlangten im Lauf der Jahrzehnte immer größere Spielstärke. Doch mittlerweile werden neue Ansätze versucht: Künstliche Intelligenz, die auf neuronalen Netzen basiert, hat es mittlerweile in Schachprogramme für den Hausgebrauch geschafft, als Open-Source-Software Leela Chess Zero (LC0). Der Hersteller der bekannten Schachsoftware Fritz hat LC0 genutzt, um ein künstliches neuronales Netz namens Fat Fritz aufzubauen, das 2019 in Fritz 17 integriert wurde. Eine halbwegs aktuelle Grafikkarte vorausgesetzt (die nicht für die visuelle Darstellung des Spiels, sondern für die Zugberechnung genutzt wird), kann so jede*r selbst gegen eine ‚richtige‘ KI spielen. Aus Laiensicht fühlt sich das erstmal ziemlich ‚cool‘ an — ein neuronales Netz, eine K I ! Klingt beeindruckend und je nach technischem Urvertrauen vielleicht auch beunruhigend.

Allerdings ist das, was heute als Künstliche Intelligenz bezeichnet wird, nicht wirklich intelligent. Die Programme sind keine Bewusstseine, die irgendetwas von dem verstehen würden, was sie am Ende als Ergebnis ausspucken. Tatsächlich werden bei der Erstellung und beim Training künstlicher neuronaler Netze überraschend einfache Rechenoperationen vollzogen — einfach, wenn man die einzelnen Neuronen betrachtet. Die Komplexität und die oft beeindruckenden, mitunter überraschenden Ergebnisse kommen durch das Zusammenspiel einer Vielzahl von Neuronenschichten zustande. Die Prinzipien dahinter kann man lernen und so besser verstehen, was hinter vielen Machine-Learning-Verfahren steckt — und das ist gar nicht so schwer.

In diesem Artikel möchte ich zwei Bücher vorstellen, die sehr hilfreich dabei sein können. Es sind keine Bücher, in denen über gesellschaftliche Folgen von KI nachgedacht oder das Vertrauen in Technik beleuchtet wird (wie ich es 2019 in „Die Unschuld der Maschinen“ tat), sondern die Autoren behandeln die praktische Seite von KI. Beide Bände sind Praxisbücher. Sie zeigen, wie wir selbst mit einfachen Mitteln Machine-Learning-Systeme und künstliche neuronale Netze entwickeln können, und sie tun das so verständlich, dass man kein „Data Scientist“ werden wollen muss, um daraus Nutzen zu ziehen. Nach der Lektüre und idealerweise eigenen praktischen Übungen versteht man viel besser, was Machine Learning eigentlich tut, wo dessen Grenzen liegen und warum es am Ende doch wichtig ist, immer die möglichen Folgen für die Menschen im Blick zu behalten.


Tariq Rashid: Neuronale Netze selbst programmieren (2017)

Wer keinerlei Erfahrung mit Programmierung hat, aber trotzdem von dem Thema fasziniert ist und keine Angst vor ein bisschen Mathematik hat, findet in Rashids Werk eine sehr verständliche Einführung. Nach einer kurzen Einleitung erklärt der Autor zunächst, was es für einen Computer bedeutet, etwas vorherzusagen und zu klassifizieren — am Beispiel von Raupen und Marienkäfern. Wie kann ein Computer anhand von Breite und Länge der Insekten erkennen, um welches Tier es sich handelt? Rashid geht Schritt für Schritt vor und illustriert jeden Schritt. Sobald es mathematisch(er) wird, führt er auch die Bedeutung entsprechender Symbole und Abkürzungen ein. Im Anhang gibt es zudem eine Einführung in die Analysis (die ich mir in der Form damals in der Schule gewünscht hätte).

So vorbereitet, geht es anschließend an das Konzept der künstlichen neuronalen Netze. Nach einer kurzen Herleitung aus der Biologie folgt wieder die schrittweise Einführung dieses für Machine Learning so wichtigen Konzepts. Aus Laiensicht ernüchternd ist vielleicht, dass das einzelne künstliche Neuron nichts weiter macht, als drei Eingangssignale a, b und c (alles Zahlenwerte) zu addieren und die Summe x dann in eine sogenannte Aktivierungsfunktion einzusetzen (Rashid verwendet eine Sigmoidfunktion, denn die sorgt dafür, dass zu niedrige Summen nicht weitergegeben werden, das Neuron also nicht ‚feuert‘). Das Ergebnis der Funktion, y, ist das Ausgangssignal (wieder eine Zahl). Es kann an ein weiteres Neuron als Eingangssignal weitergegeben werden.

Spannend wird es, wenn mehrere dieser Neuronen in mehreren Schichten nacheinander aufeinanderfolgen und ihre Signale (Berechnungsergebnisse) an die jeweils nächste Schicht weiterleiten. Diese Neuronenverknüpfungen sind gewichtet — ein höheres Gewicht verstärkt ein Signal, ein niedrigeres Gewicht schwächt das Signal ab. Zu Beginn sind diese Gewichte meist zufällig festgelegt, aber das bleibt nicht so — denn das Netzwerk ‚lernt‘. Auch dies stellt Rashid Schritt für Schritt dar — das ist wichtig, denn so wird das Funktionsprinzip deutlich, das bei tatsächlich im Einsatz befindlichen neuronalen Netzen von außen nur schwer nachvollziehen ist (weil die eben sehr viele Neuronen in sehr vielen Schichten haben; Explainable AI, also die Ergebnisse von KIs für Menschen nachvollziehbar machen, ist ein eigener Forschungszweig).

An der Stelle wird auch das wichtige Konzept der Backpropagation (Fehlerrückführung) eingeführt. Das meint, dass die Ergebnisse der Berechnung am Ende mit einem Vorgabewert verglichen werden. Die Abweichung der Ergebnisse von der Vorgabe (der Fehler) wird dann in die Verknüpfungsgewichte zwischen den Neuronen zurückgeführt, sodass sich die Berechnungsergebnisse beim nächsten Durchlauf verfeinern, so lange, bis die ausgegebenen Ergebnisse den erwarteten Ergebnissen möglichst entsprechen — das ist das Lernen, das beim Trainieren neuer Netzwerke geschieht und das so fasziniert, wenn wir in den Medien davon hören, ein Computer hätte sich selbst das Schach spielen oder das Spiel Go beigebracht. Rashids verständliche Erklärung zeigt, dass dieses Lernen mit menschenähnlichem Verstehen nichts zu tun hat, sondern reine Mathematik ist.

Um das alles auch praktisch auszuprobieren, gibt Rashid ab der zweiten Hälfte eine Einführung ins Programmieren mit der Sprache Python. Anders als viele andere Bücher zum Thema (die Programmierlaien nahelegen, sich die Grundlagen erstmal anderswo beizubringen) fängt Rashid auch hier ganz am Anfang an — wer noch nie ein Programm geschrieben hat, kann es danach, und der Autor braucht dafür nicht einmal 15 Seiten, bevor er im Rest des Buches zeigt, wie das nun zur Erstellung neuronaler Netze verwendet wird.

Schön finde ich, dass der Programmier’crashkurs‘ unabsichtlich das ganze Thema des Machine Learnings in den Kontext klassischer Programmierung einbettet, bei der man ja dem Computer eine genaue Verarbeitungsvorschrift vorgibt (den Algorithmus) — während genau das beim Machine Learning nicht geschieht. Das, was man dabei programmiert, dient nicht dazu, am Ende das eigentlich interessierende Ergebnis auszugeben, sondern ’nur‘ dazu, das neuronale Netzwerk zu erschaffen, das dann selbstständig zum Ergebnis kommt. Als Anwendungsbeispiel hat Rashid das schöne Thema der Handschriftenerkennung ausgewählt — wie kann man den Computer dazu bringen, handgeschriebene Buchstaben zu erkennen?

Rashids Buch ist nur 211 Seiten stark, was aber für seine Zielgruppe — eben absolute Laien, die sich für das Thema interessieren — völlig ausreicht. Spezialthemen oder besondere neuere Entwicklungen und Trends werden ausgeklammert, was gut ist, denn das würde zu Beginn nur Verwirrung stiften.

Neuronale Netze selbst programmieren. Eine verständliche Einführung mit Python, von Tariq Rashid, Übersetzung von Frank Langenau, O’Reilly 2017, 26,90 EUR.


David Foster: Generatives Deep Learning. Maschinen das Malen, Schreiben und Komponieren beibringen (2019)

Eines der faszinierendsten Computerbücher meiner Jugend war Horst Völz‘ „Computer und Kunst“, das 1988 im ostdeutschen Urania-Verlag erschien. Völz, der sich als Professor intensiv mit Informationstheorie beschäftigt hat und immer noch dazu publiziert, zeigte in dem kleinen Bändchen einerseits, wie man mit einfachen programmiertechnischen Mitteln — damals war auf den in der DDR erhältlichen Computern die einfache Programmiersprache BASIC sehr verbreitet — ästhetisch ansprechende visuelle und klangliche Ausgaben erzeugen kann, etwa Fraktale, Musik oder Gedichte mit Zufallselementen. Andererseits diskutierte der Autor auch, ob das denn überhaupt Kunst sein könne, und was Kunst mit Information, Wahrscheinlichkeit und Entropie zu tun hat.

An dieses Buch musste ich denken, als ich kürzlich David Fosters Fachbuch „Generatives Deep Learning“ (2019) in die Hand nahm — der Untertitel ist vielversprechend: „Maschinen das Malen, Schreiben und Komponieren beibringen“, und tatsächlich zeigt Foster genau das — wie kann mit Hilfe künstlicher neuronaler Netze ein Computer selbstständig Bilder, Texte und Musik erzeugen. In den letzten Jahren gingen entsprechende Beispiele durch die Medien, zuletzt das Programm GPT-3, das täuschend echte, kohärente und inhaltlich sinnvolle Texte generieren kann — so gut, dass der Zugang zu dem Programm stark eingeschränkt ist, um Missbrauch zu vermeiden (Foster geht in seinem Buch am Ende kurz auf die Funktionsweise des Vorgängers, GPT-2, ein).

Im Unterschied zum bloßen Klassifizieren von Daten (etwa: Zeigt das Foto ein Auto oder einen Hydranten?) geht es Foster um das Generieren neuer Daten, die zwar in einem ähnlichen Stil wie die Trainingsdaten vorliegen, mit denen das neuronale Netz gelernt hat, die aber doch etwas ganz Eigenständiges darstellen. Eindrucksvoll wird dies im Kapitel zum Malen demonstriert — aus einem Foto und einem Gemälde (einem ‚Stilbild‘) wird ein Filter entwickelt, der dafür sorgt, dass das Foto ebenfalls wie ein Gemälde desselben Stils wirkt. Natürlich gab es ähnliche Versuche schon früher in Form dieser unsäglichen Photoshop-Filter — aber die Qualität und die ‚Echtheit‘ von per Deep Learning erzeugten Verfahren ist wesentlich beeindruckender.

Fosters Buch geht wesentlich mehr in die Tiefe als Rashids Einführung und benötigt daher auch mehr Vorwissen. Erstens sollte man bereits wissen, wie man in Python programmiert (was Rashid, wie erwähnt, von Grund auf erklärt) und wie man darin neuronale Netze aufbauen und trainieren kann (und natürlich auch, was künstliche neuronale Netze sind). Wer vorher Rashids Band gelesen hat, sollte damit zurechtkommen. Zweitens sind jedoch auch mehr mathematische Kenntnisse erforderlich — man sollte vor Wahrscheinlichkeitsberechnungen keine Angst haben und idealerweise auch längere Formeln lesen können. Ich selbst kann insbesondere letzteres nur mit Mühe bzw. ab einem gewissen Punkt gar nicht mehr.

Dass ich Fosters Buch dennoch mit Vergnügen gelesen habe, liegt daran, dass trotzdem erkennbar wird, nach welchen Prinzipien Texterzeugungs-KIs wie GPT-3 oder Programme, die täuschend echte Fotos menschlicher Gesichter erzeugen, funktionieren — und das wird in den nächsten Jahren immer relevanter werden, Stichwort: Deepfake. Es ist eine neue Form der von Douglas Rushkoff vor einigen Jahren geforderten „Code Literacy“. „Program or be programmed“, forderte Rushkoff 2010 im gleichnamigen Buch — lern‘ zu programmieren oder werde selbst programmiert.

Doch programmieren allein — im Sinne des Festlegens eines Algorithmus, der zum gewünschten Ergebnis führt, wie das noch zu Völz‘ Zeiten der Fall war — ist heute nicht mehr ausreichend. Dazu muss heute auch die Beschäftigung mit Mechanismen des Machine Learnings kommen, wenn man nicht nur staunend vor immer neuen Sensationsmeldungen stehen will. Dazu sollte man auch als Nicht-Techniker*in keine Scheu vor entsprechender Literatur haben. Ein so zugängliches Thema wie Malerei, Literatur und Musik, wie Foster es wählt, fasziniert und macht den Einstieg interessant.

Generatives Deep Learning. Maschinen das Malen, Schreiben und Komponieren beibringen, von David Foster, Übersetzung von Marcus Fraaß und Konstantin Mack, O’Reilly 2019, 39,90 EUR


(Titelbild: Wolfgang Mennel / Pixabay.com)

Author: Dr. Mario Donick

#Digitalisierung #Kommunikationsanalyse #Technikvertrauen #Softwaretransparenz ... und #Spiele @DonickMario

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.