msg life ag - Logo
Sprache:  
DE | EN
  |  Login
Künstliche Intelligenz

Wie lernen künstliche neuronale Netze?

Von Stefan Nörtemann / 11. Mai 2021
Wie lernen künstliche neuronale Netze?

Verfahren des maschinellen Lernens gibt es viele. Daher ist von Fall zu Fall zu entscheiden, welches Lernverfahren für die vorliegende Fragestellung geeignet erscheint. Dennoch hat jeder, der sich damit beschäftigt, so seine Lieblingsverfahren. Und manchmal kommen gewisse Lernverfahren richtiggehend in Mode. Aktuell sehr populär ist das maschinelle Lernen mit künstlichen neuronalen Netzen, das häufig unter dem Schlagwort Deep Learning daherkommt und auf das wir in nachfolgenden Beiträgen ein wenig näher eingehen möchten.

Die Idee

Grob gesagt handelt es sich bei künstlichen neuronalen Netzen um umfängliche Rechenwerke, die der Idee eines Gehirns sehr vereinfacht nachempfunden sind. Konkret verbergen sich dahinter Berechnungen, die mit Hilfe der linearen Algebra beschrieben und durchgeführt werden können.

Die vermeintliche Analogie zu der Funktionsweise eines Gehirns ist dabei nicht nur Anlass für die ersten Ideen und Modelle künstlicher neuronaler Netze (im Folgenden kurz neuronale Netze genannt). Die Analogie eines Informationsaustausches zwischen echten wie künstlichen Neuronen dient daneben auch der Veranschaulichung der Funktionsweise der Netze.

Wie rechnet ein neuronales Netz?

Am meisten verbreitet sind die sogenannten Feedforward-Netze, auf die wir uns nachfolgend beziehen. Obwohl andere Arten von Netzen, wie etwa rekkurente neuronale Netze, zunehmend Anwendungen finden.

Grob betrachtet berechnet ein Feedforward-Netz aus mehreren Eingabewerten mehrere Ausgabewerte. Die Berechnungen vollziehen sich dabei über mehrere Schichten von sogenannten Units (auch künstliche Neuronen genannt). In einer Eingabeschicht werden die Eingabewerte aufgenommen und an die Units der nächsten Schicht „weitergegeben“. Die Units der Ausgabeschicht liefern die Ergebniswerte für die Eingabewerte. In den Units der Zwischenschichten (Hidden-Units) wird aus den Inputwerten je ein Outputwert ermittelt. Hat man viele Zwischenschichten, spricht man auch von Deep Learning, wobei nirgends definiert ist, wie viele „viele“ sind.

Die Berechnungsvorschrift ist dabei für jede Unit identisch und denkbar einfach. Jede Verbindung zwischen zwei Units „trägt“ ein sogenanntes Gewicht. Die Ausgabe einer Unit ist nun die Summe aller Produkte von Eingabewerten mit dem zugehörigen Gewicht.

Damit aber nicht alles nur linear ist, gibt es auch noch eine sogenannte Aktivierungsfunktion, die auf die gewichtete Summe der Eingabewerte einer Unit angewendet wird. Auch hier gibt es eine Analogie zu einem Gehirn, denn dort wird eine Nervenzelle auch nur dann aktiviert, wenn ein gewisser Schwellenwert (an elektrischer Spannung) überschritten wird.

Auf diese einfache Weise berechnet ein neuronales Netz zu einem Set an Eingaben ein Set an Ausgaben. Im Kontext des überwachten maschinellen Lernens lässt sich dies nun sehr einfach und effizient für zahlreiche Datensätze durchführen.

Was berechnet ein neuronales Netz?

Wenn wir ein neuronales Netz für das überwachte maschinelle Lernen verwenden, gehen wir davon aus, dass es einen (vorab unbekannten) funktionalen Zusammenhang zwischen den Eingangsdaten und den Zielmerkmalen gibt. Andernfalls könnten wir nicht erwarten, auf Grund der Eingangsdaten überhaupt eine Vorhersage der Zielmerkmale treffen zu können. Daher stellt sich die Frage, ob für jeden funktionalen Zusammenhang ein geeignetes neuronales Netz existiert, das diesen modelliert.

Obwohl Pioniere wie Warren McCulloch & Walter Pitts bereits in den vierziger Jahren mit neuronalen Netzen gearbeitet haben, und Frank Rosenblatt Ende der fünfziger Jahre einen ersten Neurocomputer gebaut hat, blieb die obige Frage lange Zeit unbeantwortet. Erst 1989 bewies George Cybenko den universellen Approximationssatz, der vereinfacht besagt, dass jede stetige reelle Funktion durch ein geeignetes neuronale Netz beliebig angenähert werden kann.

Wie trainiert ein neuronales Netz?

Training bezeichnet hier einfach die sukzessive Anpassung aller Gewichte in dem neuronalen Netz mit dem Ziel, möglichst gut an die Trainingsdaten angepasst zu sein. Das Ziel ist demnach, die Gewichte so zu bestimmen, dass für Eingabedatensätze die erwarteten Ausgaben oder zumindest gute Näherungen berechnet werden. Dies klingt leichter, als es ist, und war für eine überraschend lange Zeit ein offenes mathematisches Problem. Es dauerte bis in die siebziger Jahre, bis die Fragestellung der Gewichtsanpassung in neuronalen Netzen zufriedenstellend gelöst werden konnte.

Basierend auf Arbeiten von Stuart Dreyfus im Bereich der Kontrolltheorie entwickelte Paul Werbos ein Verfahren, das wir heute Backpropagation nennen. Die zentrale Idee dabei ist es, eine sogenannte Kostenfunktion zu minimieren. Eine mögliche und gängige Kostenfunktion ist zum Beispiel die Summe der quadratischen Abweichungen der Ausgaben jeder Ausgabeunit mit dem erwarteten Wert. Fasst man diese als Funktion aller Gewichte auf, besteht die Aufgabe darin, die Gewichte so zu bestimmen, dass die Funktion minimiert wird.

Der Rest ist dann höhere Analysis. Mit dem Gradient Descent-Verfahren lassen sich zumindest lokale Minima berechnen, was in der Praxis häufig genügt.

Aber: So ganz stimmt das nicht! Obwohl neuronale Netze für das maschinelle Lernen sehr häufig sehr erfolgreich eingesetzt werden, gibt es manchmal auch ein paar Hürden und Probleme, auf die wir in einem Folgebeitrag eingehen werden.

Zur Blog Übersichtsseite