Künstliche Intelligenz mit Gefühl
Künstliche Intelligenz ist kein neues Thema. Viele Strukturen von künstlichen neuronalen Netzen stammen aus den 1980er-Jahren. Interessanterweise wurde diese Phase rückwirkend als Renaissance bezeichnet, weil die erste Konferenz zum Thema «Artificial Intelligence» bereits 1956 stattfand. Das jetzige Aufflammen ist also sozusagen die dritte Welle. Ein entscheidender Meilenstein bildete dabei die «Convolutional Neural Networks» vor etwa zehn Jahren. Dabei erstrecken sich die Einsatzgebiete auf praktisch alle Wissenschaftsbereiche. Zwei davon werden am 16. FAEL-Herbstanlass erläutert.
Autor: Mathis, OST Ostschweizer Fachhochschule, Rapperswil
Künstliche Intelligenz (abgekürzt KI oder ans Englische angelehnt AI) wird oft mit den Begriffen Machine Learning und Deep Learning in Verbindung gebracht. Eine zentrale Rolle dabei spielen neuronale Netzwerke (oder einfache neuronale Netze), deren Knotenpunkte von der Funktionalität her den menschlichen Neuronen nachempfunden werden. Zur Illustration eines solchen neuronalen Netzwerkes schauen wir uns ein Beispiel an, bei dem ein neuronales Netz gemäss Abbildiung 1 entscheiden soll, ob ein Punkt in einem Koordinatensystem innerhalb oder ausserhalb des Einheitskreises liegt.
Abb. 1: Struktur eines neuronalen Netzes mit zwei verborgenen Layern an Knoten.
Jeder dieser Knoten ist gemäss Abbildung 2 aufgebaut. Er weist Eingangssignale auf, welche mit einem Gewicht multipliziert werden und dann zusammen mit einem Offset summiert den Ausgang ergeben.
Abb. 2: Aufbau eines einzelnen Netzwerkknoten
Ein Netzwerk kann Tausende von Knoten beinhalten
Es gibt verschiedene Formen von neuronalen Netzen. Gemeinsam ist allen, dass sie eine Eingangsschicht (Input Layer), eine Ausgangschicht (Output Layer) und eine gewisse Anzahl verborgener Schichten (Hidden Layers) aufweisen. Solche Netze heissen im Englischen auch Multilayer Perceptron. Je nach Anzahl verborgener Schichten spricht man von einem einfachen Netzwerk oder eben von einem Deep Network. Die Eingangsschicht enthält die Eingangsgrössen, bilden also die Schnittstelle oder Sensorik zur realen Welt. Die Knoten der nächstfolgenden Schicht sind dann jeweils die gewichteten Summen der vorangegangenen Schicht, wobei pro Knoten noch ein Offset und am Knotenausgang eine Nichtlinearität hinzukommt. Die Nichtlinearität entspricht meist einer Sigmoid-Funktion, siehe Abbildung 3, welche einer Sättigungskurve (mit linearem Teil dazwischen) ähnelt.
Abb. 3: Beispiel einer Ausgangsnichtlinearität
Falls klassifizierte Trainingsdaten vorliegen, kann ein neuronales Netz damit trainiert werden (man spricht dann von Supervised Learning). Dabei wird mittels Fehlerrückführung (Korrektur basierend aufgrund eines Vergleichs des Ausgangs mit einem Sollwert) versucht, die Gewichte in den Knoten so anzupassen, dass das Netzwerk zunehmend besser in der Lage ist, die gewünschten Entscheidungen zuverlässig durchzuführen.
Während beim eigentlichen Fluss durch das neuronale Netz die Information immer von links nach rechts fliesst (feed-forward network), wird beim Trainieren der Fehler am Ausgang berechnet, fliesst dann aber rückwärts durch das Netzwerk. Man spricht von Back-Propagation-Algorithmen, weil die Gewichte von rechts nach links, also vom Ausgang Richtung Eingang, adaptiert werden.
Abb. 4: Training des neuronalen Netzes mittels Fehlerrückführung
Beispiel gefällig?
In einem ersten Beispiel nehmen wir für die Trainingsdaten ein Raster von Punkten über der Ebene mit Koordinaten (x1, x2). Ob ein Punkt innerhalb des Einheitskreises liegt, lässt sich natürlich mit dem Abstand zum Koordinatenursprung bestimmen; falls dieser kleiner als eins ist, wird der Punkt rot eingefärbt, wie in Abbildung 5 illustriert.
Abb. 5. Trainingsdaten für den Einheitskreis
Für den Erfolg des neuronalen Netzes kommt es nun drauf an, wie viel Aufwand wir betreiben möchten. Wenn wir uns nur einen einzelnen Knoten leisten, kann der Bereich nur in zwei durch eine Gerade getrennte Bereiche geteilt werden (Abb. 6, links oben). Bei zwei Knoten (Abb. 6, rechts oben) ist bereits etwas mehr möglich. Drei Knoten führen zu einer Dreiecksform (Abb. 6, links unten). Erst ab circa 10 Knoten (Abb. 6, rechts unten) lässt sich langsam ein Kreis ausmachen.
Abb. 6: Ergebnisse von neuronalen Netzen mit tiefer Komplexität (Anzahl Knoten 1, 2, 3 und 10)
Kompliziertere Formen
Nicht immer lässt sich wie im obigen Beispiel eine einfache mathematische Regel formulieren. Erst wenn wir zu komplizierteren Formen als dem Kreis greifen, zum Beispiel zu einer Herzform, dann zeigt ein neuronales Netz seine grosse Stärke: Wir müssen die Regeln nicht explizit formulieren, sondern können sie anhand von Beispielen illustrieren, den Trainingsdaten. In unserem Beispiel können wir Punkte auf ein Papierherz fallen lassen und dem neuronalen Netz mitteilen, ob die Punkte innerhalb oder ausserhalb dieser Herzform liegen. Nach dem erfolgreichen Training des Netzwerkes sollte dieses in der Lage sein, für zufällig gewählte Punkte zu entscheiden, ob sie innerhalb oder ausserhalb der Herzform sind und kann so selbst ein Herz «zeichnen». So sollte das Netzwerk am Ende selbständig ein Herz «zeichnen» können. Das Resultat eines solchen Versuches ist in Abb. 7 zu sehen.
Abb. 7: Das vom neuronalen Netz mit 100000 Punkten produzierte Herz
Ein paar interessante Parameter zu diesem neuronalen Netz: Es werden lediglich 2 Eingangsknoten benötigt, nämlich die (x1, x2)- Koordinaten der Zeichenfläche. Am Ausgang gibt es sogar nur einen einzigen Knoten, eine binäre Variable, welche anzeigt, ob der Punkt rot ist (wenn er ein Bestandteil der Herzform ist) oder nicht. Dazwischen befindet sich eine verborgene Schicht mit 40 Knoten. Mit gerade mal 5500 Trainingspunkten lässt sich das Netzwerk bereits genügend trainieren. Das Netzwerk hat in diesem Fall also recht gut gelernt, ein Herz zu zeichnen. Handzeichnungen des Autors sehen jedenfalls ähnlich krakelig aus.
Ausbaubarkeit
Natürlich hat die künstliche Intelligenz ihre Berechtigung nicht durch Zeichnen von roten Herzen erlangt. Heutige neuronale Netze weisen viel spektakulärere Fähigkeiten auf. Sie sind beispielsweise fähig, Bilder zu unter-scheiden, um verschiedene abgebildete Tiere zu klassifizieren. Noch viel wertvoller sind Anwendungen in der Medizin, wenn es um Begutachtung von Gewebeproben geht, bei der neuronale Netze in gewissen Fällen sehr zuverlässig gesunde und kranke Proben voneinander unterscheiden können. Ausserdem profitiert die Radiologie davon, dass neuronale Netze mit einer wesentlich grösserer Anzahl Röntgenbildern trainiert werden können, als ein Arzt in seinem ganzen Leben je zu Gesicht bekommt.
Solche mächtigen Netzwerke sind meist Convolutional Neural Networks (CNN), also Netzwerke, welche eine Faltung oder eine Art der Filterung entweder im zeitlichen oder räumlichen Verlauf der Daten vornehmen. So nutzen CNN die Eigenschaft, dass (zeitlich oder räumlich) nahe beieinanderliegende Datensamples nicht gänzlich unkorreliert sind, sondern eine gewisse Ähnlichkeit oder Abhängigkeit aufweisen.