Was ist eigentlich diese künstliche Intelligenz? Teil 2/3

Der erste Teil des Artikels ist hier zu finden.

“green and red light wallpaper” by Pietro Jeng on Unsplash

Deep Learning?

Es mag aufgefallen sein, dass ich mich bisher nur mit Machine Learning befasst habe. Am Anfang habe ich behauptet, dass die meisten Menschen Deep Learning meinen, wenn sie über KI fabulieren.

Was genau verbirgt sich hinter Deep Learning? Prinzipiell ist Deep Learning eine Untermenge von maschinellem Lernen. Beim Deep Learning kommen künstliche neuronale Netze zum Einsatz.

Es wird weiterhin ein Ergebnis Y für einen oder mehr Werte X gesucht - wie beim Machine Learning. Mein Beispiel zu ML war ein einfacher und konstruierter Fall, der wahrscheinlich genauso nicht in der freien Welt vorkommt. Denken wir an Bilderkennung, stellen wir schnell fest, dass es sehr viele Variablen und Gewichtungen geben kann. RGB-Werte, Pixel und so weiter. Deep Learning ist sehr gut geeignet, wenn man komplexe Daten vorliegen hat.

Bevor wir uns mit Deep Learning genauer befassen, müssen zunächst betrachten, was ein neuronales Netz ist.


Neuronale Netze bestehen aus Neuronen. Neuronen sind „Gebilde“, die auf einen Reiz reagieren. Je nachdem, wie stark dieser Reiz ist, wird er durchgelassen, oder nicht. Wie bereits beim ML ist das eine relativ einfache Formel: Eingangswerte werden mit Gewichten multipliziert, summiert und mit einem Offset (oder auch Bias) versehen.

Das Ergebnis wird am Ausgang des Neurons an eine Aktivierungsfunktion übergeben, die den Ausgangswert endgültig bestimmt.

Ziel eines neuronalen Netzes ist, die Gewichte und Offsets des Neurons optimal zu erlernen. Bis hierher das gleiche Vorgehen, wie im Machine Learning. Ein neuronales Netz besteht aus vielen Neuronen, die grundlegend in drei Schichten aufgeteilt sind:

  • Eingang (Input Layer)
  • „Verdeckte“ Schichten (Hidden Layers)
  • Ausgabeschicht (Output Layer)

Im Input Layer werden die Eingangsdaten in das Netz gespeist. Bei Bildern sind das die Pixel und deren Farbe oder Helligkeit. In den Hidden Layern werden Muster in den Rohdaten ermittelt.

Die Schichten lernen wieder mit Trainingsdaten (supervised learning), was diese Muster bedeuten.


Lernen im neuronalen Netz

Wie lernen diese neuronalen Netze?

Nachdem die Struktur des Netzes aufgebaut wurde, wird jedem Neuron initial ein zufälliges Anfangsgewicht zugeordnet. Anschließend geben wir die Daten über den Input Layer in das neuronale Netz. Die Neuronen geben ihr Ergebnis an die folgenden Schichten weiter. Am Output Layer erhalten wir dann ein Ergebnis und vergleichen es mit dem erwarteten Ergebnis. In den ersten Iterationen wird das weit weg von dem sein, was man möchte, da die Neuronen zufällig initialisiert wurden. Der Fehler kann berechnet werden. Anschließend wird zurückverfolgt, wie sich ein Neuron anpassen muss, damit der Fehler kleiner wird. Diese Anpassungen sollten nicht zu groß sein. Nun füttern wir das angepasste Netz mit den nächsten Daten. Das wiederholen wir so lange, bis das Ergebnis unseren Erwartungen entspricht.

Im Detail bedeutet das:

Forward Pass

Die Neuronen werden mittels sog. Forward Pass mit Daten gefüttert, es wendet seine Gewichtung und den Offset an und gibt es weiter zum nächsten Layer, so lange, bis der Output Layer erreicht ist. Gelernt hat das Netz bisher noch nichts.

Fehler finden

Der entstandene Fehler muss im nächsten Schritt bestimmt werden. Dazu wird das Ergebnis mit dem zu erwartenden Ergebnis verglichen und eine Abweichung berechnet. Um positive, wie negative Abweichungen gleichermaßen zu berücksichtigen, kommt hierbei bspw. der Mittelwert der quadratischen Abweichung zum Einsatz (Squared Mean Error oder SME).

Backpropagation

Jetzt kann das Netz lernen. Wie auch der Mensch lernt das neuronale Netz aus seinen Fehlern. Der Fehler wird rückwärts in das Netz gegeben und jedes Gewicht und Offset wird ein kleines bisschen angepasst, um den Fehler zu verringern. Die Größe der Anpassung pro Neuton wird über den Anteil berechnet, den es am Fehler hatte (bspw. über das Gewicht). Über die Learning Rate wird gesteuert, wie groß eine Anpassung sein kann. Sie ist ein Hyperparameter eines neuronalen Netzes und eine wichtige Stellgröße für ein Netz.

Gängige Learning Rates sind bspw. 0,001 oder 0,01. Sie sind sehr niedrig, damit ein Overshooting vermieden wird. Prinzipiell können die neuronalen Netze die Learning Rate auch während des Lernens anpassen, doch gehe ich auf diese fortgeschritteneren Methoden hier nicht näher ein. Die Richtung der Korrektur wird durch die Ableitung der Fehlerfunktion ermittelt. Dessen negativer Wert gibt die Richtung vor, die die Fehlerfunktion minimiert. Genau das ist das Ziel eines neuronalen Netzes: Minimieren der gewählten Fehlerfunktion. Dieses Vorgehen ist der sog. Gradientenabstieg oder Gradient Descent. Problematisch sind Fehlerfunktionen, die ein lokales Minimum haben, in denen das Netz „hängen“ bleibt, da der Eindruck entstanden ist, das Minimum erreicht zuhaben.

Epochen und Batches

Sind alle Gewichte angepasst, erfolgt ein weiterer Durchlauf. Ein vollständiger Durchlauf der Input-Daten wird Epoche genannt. Damit haben wir einen weiteren wichtigen Hyperparameter von neuronalen Netzen: Anzahl der Trainingsepochen. Teilt man die Trainingsdaten in gleich große Gruppen auf, nennt man diese Batches. Batches können sinnvoll sein, um beschränkte Rechenleistungen des Computers zu berücksichtigen. Wichtig ist bei der Aufteilung in Batches eine Normalverteilung der Werte innerhalb jedes Batches im Vergleich zum gesamten Datensatz. Sind alle Batches des neuronalen Netzes einmal durchgelaufen, ist eine Epoche beendet.

Das Ziel: Convergence

Das Ziel des Lernens ist convergence: Die Näherung der Fehlerkurve an die 100%-Linie. Eine Betrachtung der Kurve ist maßgeblich um den Lernprozess zu beenden oder um Hyperparameter anzupassen. Wie schon bei Machine Learning kann ein neuronales Netz zu gut an die Testdaten angepasst sein. Overfitting ist auch hier ein Problem. Wenn ein Netz in einem abschließenden Blindtest ebenfalls gut abschneidet, ist die Wahrscheinlichkeit hoch, ein gut trainiertes Modell zu haben.


Convolutional neural network (CNN)

Diese Art von Netzwerken sind gerade in der Bilderkennung derzeit State-of-the-art.

Grundlegend sind Convolutions (Faltungen) in ihrer Funktion wie Photoshopfilter zu sehen. Es wird eine Faltung durchgeführt und somit ein neuer Wert für einPixel ermittelt.

Stark vereinfacht folgendes Beispiel:

Ein Bild mit 7x7 Pixeln wird ein Filter mit Matrix von 3x3 angewendet. Dieser Filter wird jetzt Pixelblock für Pixelblock angewendet und man erhält so ein neues Bild.

Ein Convolutional Neural Network trainiert diesen „Filter“. Somit können in Bildern Merkmale erkannt und genutzt werden. Das hat den Vorteil, dass wir die Rechenoperationen im Layer kleiner halten können, denn wir müssen nicht für jedes Pixel des Bildes Gewichtungen anpassen, sondern lediglich für den erheblich kleineren Filter. Nach einer Faltung kommt in einem CNN ein sogenanntes Pooling zum Einsatz. Hierbei werden die ermittelten neuen „Bilder“ noch einmal zusammengefasst. Beispielsweise kann innerhalb eines 3x3 Pixelausschnitt jeweils der größte Wert benutzt werden. Die so zusammengefasste Struktur wird in die nächste Faltung gegeben.

In dem Text belasse ich es bei dieser zugegebenermaßen sehr oberflächlichen Erklärung. Wichtig ist der Hinweis darauf, dass CNN wichtige Werkzeuge in der modernen Bildanalyse sind.