Deep Learning

Der Siegeszug der neuronalen Netze

Der Bereich des Maschinellen Lernens war in den letzten 10 Jahren ein Gebiet, das der breiten Öffentlichkeit eher unbekannt war. Doch dann kam AlphaGo [1]. Der folgende Artikel soll eine Einführung in die Bereiche neuronale Netze und Deep Learning geben sowie die Hintergründe beleuchten.

Das Google Programm, das in einem Wettkampf (Oktober 2015) gegen den europäischen Go-Profi Mr Fan Hui 5–0 und im März 2016 mit 4–1 gegen Lee Sedol (einen der besten Go-Spieler der Welt) gewann, machte Schlagzeilen. Plötzlich waren die Themen Deep Learning, Maschinelles Lernen und Künstliche Intelligenz (KI) in aller Munde. Mit seinen komplexen Entscheidungsmustern und der schwierigen Beurteilung der Züge galt das Spiel Go lange Zeit als letzte Bastion des Menschen gegen die KI. Doch plötzlich war auch diese Hürde – fast 20 Jahre nach der ersten gewonnenen Schachpartie gegen einen Profi [2] – genommen.

Mittlerweile gibt es sehr viele alltägliche Berührungspunkte mit Deep Learning. In vielen Bereichen wurden die bisher genutzten Programme und Algorithmen durch Verfahren des Deep Learning ersetzt, ohne dass jemand davon etwas mitbekommen hat. So nutzt zum Beispiel Facebook die Methoden des Deep Learnings zur Gesichtserkennung, selbstfahrende Autos die Möglichkeit der schnellen und präzisen Videoanalyse zum Erkennen von Objekten wie Schilder, Personen und Autos oder Sprachassistenten wie Siri und Cortana zur Spracherkennung und -analyse. Es gibt auch Anwendungen, die erst durch den Einsatz von Deep Learning in der Lage sind, mit der nötigen Robustheit und Genauigkeit, überhaupt produktiv eingesetzt zu werden. Ein Beispiel liefert hier der Skype Translator [3], mithilfe dessen Übersetzung in Echtzeit möglich ist. Die verwendeten Skype-Translator-Modelle verwendeten über 3 Milliarden Datensätze (von übersetzten Webseiten bis hin zu übersetzten Einzelgesprächen) als Lernbasis.

 

Neuronale Netze – Wie alles begann

Die Geschichte der neuronalen Netze beginnt im Jahr 1943. Inspiriert durch neue Erkenntnisse der Hirnforschung gelingt es dem Logiker Walter Pitts und dem Neurophysiologen Warren McCulloch [4] mit den Mitteln der Mathematik zu zeigen, dass mithilfe von Nervenzellen alle logischen Operationen (UND, ODER, NICHT [5]) sowie deren Kombinationen abgebildet werden können, wenn sie in Netzwerken zusammengeschaltet werden. Die von ihnen vorgestellte Architektur der Nervenzellen hatte zu Beginn allerdings nur die zwei Ausgaben: an oder aus. Die Aktivität eines Neurons wurde über einen Schwellenwert bestimmt. Wurde der Schwellenwert überschritten, galt das Neuron als aktiv. Auf dieser Schwellenwertlogik basieren noch heute fast alle künstlichen neuronalen Netze. Zu diesem Zeitpunkt gab es jedoch noch keine Maschine, die im Stande war, solche Netzwerke zu simulieren. Erst nach Kriegsende gelingt es einem Team an der Universität Manchester den ersten digitalen und damit zügig programmierbaren Computer nach Alan Turings Vorgaben, den Manchester Mark 1 [6], zu entwickeln. Dessen Nachfolger, der Ferranti Mark 1 [7], sollte im Jahr 1951 die erste künstliche Intelligenz ausführen.

Der nächste große Durchbruch gelang Frank Rosenblatt im Jahr 1958 mit dem Perzeptron [8]. Das Perzeptron war das erste lernfähige Netzwerk und eine abgeänderte Version der künstlichen Neuronen von McCulloch und Pitts. Seine Arbeit ist die Grundlage aller heutigen neuronalen Netze. Ein einfaches Perzeptron-Netzwerk hat Input-Neuronen und Output-Neuronen. Die Input-Neuronen sind mit den Output-Neuronen verbunden und damit in der Lage diese zu aktivieren, aber nicht umgekehrt. Diese Art des Netzwerks wird Feed-Forward-Architektur genannt und ist heute die Grundlage vieler neuronaler Netze. Die Informationen laufen dabei immer nur in eine Richtung. Eine zusätzliche Erweiterung ist die Einführung von Verbindungsstärken („ Gewichten“ ) zwischen den Neuronen. Die Stärke der Verbindung von zwei Neuronen passt das Perzeptron-Netzwerk automatisch so an, dass es bei seiner Aufgabe besser wird. Für die Anpassung der Gewichte wird die Ausgabe des Netzes (Aktivität in der Output-Schicht) mit dem Wunschwert verglichen und die Gewichte im Netzwerk so angepasst, dass der Wunschwert wahrscheinlicher wird.

 

Der KI-Winter der achtziger Jahre

Mit der Arbeit von Pitts, McCulloch und Rosenblatt waren die Grundlagen für lernende neuronale Netze frühzeitig gelegt. Zur gleichen Zeit setzte sich aber zunehmend ein anderer Ansatz durch, die symbolische KI. „Die symbolische Informationsverarbeitung war das Paradigma der klassischen künstlichen Intelligenz“, sagt Geoffrey Hinton. „Ihre zentrale Ausrichtung war es, komplexe Regeln auf relativ simple Inputs anzuwenden, um so zu klugen Schlüssen zu kommen.“ 1969 veröffentlicht Marvin Minsky mit seinem Kollegen Seymour Papert das Buch Perceptrons [9]. Es war der Versuch mit logisch-mathematischer Exaktheit zu beweisen, dass Perzeptronen Netzwerke selbst einfache Probleme der KI nicht würden lösen können. Der Einfluss des Buches war so groß, dass das Thema neuronale Netze in der KI-Forschung für mehr als zehn Jahre kaum relevant war. Die Entwicklungen im Bereich KI gingen weiter und erste Erfolge zeigten sich. In den späten achtziger Jahren fuhren die ersten autonomen Autos in Schrittgeschwindigkeit über Übungsparcours (Navlab1 [10] im Jahr 1986), das Andockmanöver der Sojus-Kapsel an die entstehende ISS passierte automatisch und Deep Blue [11, 2] von IBM gewann gegen Garri Kasparow im Schach. Aber alles ohne den Einsatz von künstlichen neuronalen Netzen.

 

Die Lernrevolution in der KI-Forschung

Die Tatsache, dass neuronale Netze heute so effizient trainierbar sind, ist einem Lernalgorithmus auf Grundlage von Paul Werbos Arbeit zu verdanken. Schon im Jahr 1974 erwähnte Paul Werbos in seiner Dissertation [12] die Möglichkeit Backpropagation auf künstliche neuronale Netze anzuwenden. Die Arbeit blieb jedoch lange unbeachtet. Geoffrey Hinton zeigte zusammen mit zwei Kollegen im Jahr 1986, dass der Backpropagation-Algorithmus [13] die tiefen Neuronen automatisch zu Detektoren für bestimmte Muster im Input trainiert. Mit dieser Arbeit wurde das Thema neuronale Netze in der KI-Forschung wiederbelebt. Hinton sagt: „Backpropagation vergleicht das Aktivitätsmuster in der Output-Schicht mit dem gewünschten Muster und ermittelt dann für alle Verbindungen im Netzwerk gleichzeitig deren neue Gewichte“ – also jene Zahlenwerte, die eine Verbindungsstärke zwischen zwei Neuronen angeben. Der Backpropagation-Algorithmus besteht aus drei grundlegenden Teilen, die in Iterationen wiederholt werden.

  1. Im Forward-Pass werden zunächst den Input-Neuronen Reize präsentiert (zu lernende Daten). Diese werden durch das Netzwerk propagiert und die Output-Neuronen repräsentieren die Ausgabe des Netzwerks.
  2. Im zweiten Schritt – der Fehlerbestimmung – wird die Ausgabe der Output-Neuronen mit dem gewünschten Ergebnis verglichen und ein Fehler bestimmt.
  3. Im dritten Schritt – dem Backward-Pass – werden die Gewichte zwischen den Neuronen angepasst.

Die Fehlerterme werden nun in entgegengesetzter Richtung durch das Netzwerk propagiert (bis zur Input-Schicht). Dies geschieht zunächst zwischen Output und letzter Hidden-Schicht, dann zwischen letzter und vorletzter Hidden-Schicht usw. In diesem Prozess werden die Gewichte so modifiziert, dass die Fehlerterme immer kleiner werden. Eine detaillierte Beschreibung des Algorithmus finden Sie unter [14].

 

Der Aufbau eines neuronalen Netzwerks

Architektur eines neuroyalen Netzes
Abb. 1: Architektur eines neuronalen Netzes, [19]

Aus diesen Erkenntnissen leitet sich die folgende Architektur eines neuronalen Netzes ab. Ein neuronales Netzwerk besteht aus mehreren Schichten von Neuronen, die übereinander geschichtet werden. Man unterscheidet drei Arten von Schichten (Layern) in einem neuronalen Netzwerk. Die erste Schicht ist immer der sogenannte Input-Layer. Dieser erhält die zu lernenden Daten. Am Ende jedes Netzwerks steht ein Output-Layer, der das Ergebnis (z. B. die vorherzusagende Klasse) ausgibt. Zwischen diesen zwei Schichten befinden sich sogenannte Hidden-Layer (hidden – weil sie keine sichtbare Ausgabe produzieren). In den Hidden-Layern geschieht die eigentliche Verarbeitung der Daten. Die anderen Schichten sind nur für die Ein- und Ausgabe zuständig. Jede Schicht besteht wiederum aus mehreren Neuronen.

Architektur eines neuroyalen Netzes
Abb. 2: Neuron, [19]


Diese sind von Schicht zu Schicht (Input->Hidden->Output) verbunden. Eine Verbindung der Neuronen innerhalb einer Schicht existiert in der klassischen Netzwerkarchitektur nicht. Im Neuron selbst finden die Berechnungen statt. Ein Neuron kombiniert die Eingabedaten (Ausgabe der vorherigen Schicht) mit den Gewichten der Verbindungen, die somit verstärkend oder dämpfend wirken. Das Produkt der Eingabewerte und Gewichte wird summiert und die Summe wird durch die sogenannte Aktivierungsfunktion eines Knotens geleitet, um zu bestimmen, ob und inwieweit dieses Signal durch das Netzwerk weitergeleitet wird.

 

Tiefe neuronale Netze

Die heutigen tiefen neuronalen Netze (DNN s - Deep Neural Networks [15]) bestehen aus tausenden künstlichen Neuronen. Der Begriff „ tief“ ist abgeleitet von der Anzahl der hierarchisch übereinanderliegenden Schichten von Neuronen. Bei mehr als zwei Zwischenschichten (Hidden Layers) spricht man von tiefen neuronalen Netzen. AlphaGo etwa hat beispielsweise 13 Zwischenschichten. Diese haben oft mehrere Millionen von Verbindungen über die Informationen weitergeleitet und verarbeitet werden. Das allgemeine Verfahren bei neuronalen Netzen ist immer gleich. Im Bereich der tiefen neuronalen Netze gibt es für verschiedene Problemstellungen jedoch spezielle Netzarchitekturen und Verfahren. So wurden die Convolutional Neural Network (ConvNet ) [16] speziell für die Bildverarbeitung und -erkennung entwickelt. Mithilfe von verschiedenen Arten von Schichten (Layern) ist das Netz in der Lage relevante Merkmale aus Bildern zu extrahieren und zu lernen. Eine weitere Unterart sind rekurrente Netzwerke [17]. Ihre spezielle Eigenschaft sind eingebaute Schleifen, sodass Informationen über mehrere Iterationen bestehen bleiben. Mit ihnen ist es möglich, Vorhersagen auf Basis von Zeitreihen zu machen. Ein klassisches Anwendungsgebiet von tiefen rekurrenten Netzwerken liegt im Bereich von Enterprise-Resource-Planning-Anwendungen wie Produktions- oder Zulieferkettenoptimierungen oder bei der Vorhersage von Börsenkursen.

Ein wesentlicher Erfolgsfaktor der tiefen neuronalen Netze ist die Entwicklung der GPU-Technik. Mit der CUDA Deep Neural Network Library (cuDNN) [18] und entsprechender Hardware (z. B. NVIDIA Titan X oder NVIDIA Tesla V100 ) bietet NVIDIA die Grundlage für hoch optimierte, parallele Rechenoperationen, die speziell auf die Bedürfnisse von neuronalen Netzen und den Backpropagation-Algorithmus angepasst sind. In Kombination mit verschiedenen Deep-Learning-Frameworks wie Caffe [19], TensorFlow [20], Theano [21], Torch [22] oder CNTK [23] ist es möglich, in kurzer Zeit ein neuronales Netz zu definieren und trainieren zu lassen. Eine weitere Verbesserung bietet die Kombination aus dem Framework TensorFlow und Apache Spark [24]. Die Kombination ermöglicht es, dass moderate Modellgrößen sehr einfach und schnell gelernt und evaluiert werden können. Mehr dazu im Beitrag von Tim Hunter [25].

 

Fazit

Natürlich haben (tiefe) neuronale Netze nicht nur Vorteile. Für das Training der Netze werden sehr viele Daten benötigt. Daher sollte vor der Auswahl der Algorithmen immer eine ausführliche Analyse der Rohdaten, des Verwendungszwecks und des Ziels stehen. Die Entwicklung im Bereich des Maschinellen Lernens, hier speziell die neuronalen Netze, ist derzeit so rasant, dass ein Ende der Erfolgsgeschichte nicht in Sicht ist. Immer neue Architekturen von tiefen neuronalen Netzen lösen bisher scheinbar unlösbare bzw. nur sehr aufwendig zu lösende Probleme. Die Frage, die sich mir stellt, ist: Haben wir mit Deep Learning die höchste Stufe des Maschinellen Lernens erreicht? Ich glaube nicht!

 

Referenzen

[1] deepmind.com, AlphaGo, https://deepmind.com/research/alphago 

[2] Zeit Online, Als Deep Blue das Genie Garri Kasparow schlug, http://blog.zeit.de/schach/als-deep-blue-das-genie-garry-kasparow-schlug/, 2016

[3] Skype Blog, Skype Translator – How it Works, https://blogs.skype.com/news/2014/12/15/skype-translator-how-it-works/ , 2014

[4] Warren S. McCulloch & Walter Pitts, A logical calculus of the ideas immanent in nervous activity, http://www.minicomplexity.org/pubs/1943-mcculloch-pitts-bmb.pdf, 1943 

[5] Wikipedia, Boolesche Algebra, https://de.wikipedia.org/wiki/Boolesche_Algebra 

[6] University of Manchester, The Manchester Mark 1, http://curation.cs.manchester.ac.uk/computer50/www.computer50.org/mark1/MM1.html 

[7] University of Manchester, The Ferranti Mark 1, http://curation.cs.manchester.ac.uk/computer50/www.computer50.org/mark1/FM1.html 

[8] Wikipedia, Perzeptron, https://de.wikipedia.org/wiki/Perzeptron 

[9] Marvin Minsky & Seymour A. Papert, Perceptrons, https://mitpress.mit.edu/books/perceptrons, 1987

[10] Wikipedia, Navlab, https://en.wikipedia.org/wiki/Navlab 

[11] IBM, Deep Blue, http://www-03.ibm.com/ibm/history/ibm100/us/en/icons/deepblue/ 

[12] Paul Werbos & Paul John, Beyond regression : new tools for prediction and analysis in the behavioral sciences, https://www.researchgate.net/publication/35657389_Beyond_regression_new_tools_for_prediction_and_analysis_in_the_behavioral_sciences 

[13] David E. Rummelhart, Geoffrey E. Hinton, Ronald J. Williams, Learning representations by back-propagating erros, http://www.iro.umontreal.ca/~vincentp/ift3395/lectures/backprop_old.pdf, 1986

[14] neuronalesnetz.de, Backpropagation, http://www.neuronalesnetz.de/backpropagation3.html 

[15] Y ann LeCun, Yoshua Bengio & Geoffrey Hinto, Deep learning, http://www.cs.toronto.edu/~hinton/absps/NatureDeepReview.pdf 

[16] Andrej Karpathy, Convolutional Neural Networks, http://cs231n.github.io/convolutional-networks/ 

[17] Colah`s Blog, Understanding LSTM Networks, http://colah.github.io/posts/2015-08-Understanding-LSTMs 

[18] NVIDIA, NVIDIA cuDNN, https://developer.nvidia.com/cudnn 

[19] Deeplearning4j, Introduction to Deep Neural Networks, https://deeplearning4j.org/neuralnet-overview 

[20] tensorflow.org, TensorFlow, https://www.tensorflow.org 

[21] deeplearning.net, Theano, http://deeplearning.net/software/theano 

[22] torch.ch, Torch, http://torch.ch 

[23] microsoft.com, Microsoft Cognitive Toolkit, https://www.microsoft.com/en-us/cognitive-toolkit 

[24] apache.org, Apache Spark, http://spark.apache.org 

[25] Tim Hunter, Deep Learning with Apache Spark and TensorFlow, https://databricks.com/blog/2016/01/25/deep-learning-with-apachespark-and-tensorflow.html 


Fabian Witt verfasste diesen Beitrag, der in der Juni-Ausgabe 2017 des KaffeeKlatsch erschien.