Mit Hilfe von Deep Learning lassen sich komplexe Problemstellungen auflösen - allerdings braucht es dazu sowohl eine Menge Rechenpower als auch riesige Datenmengen.
Deep Learning - Definition
Deep Learning (DL) ist eine Unterkategorie von Machine Learning (ML), die Datenmuster als komplexe, mehrschichtige Netzwerke modelliert. Deep Learning hat das Potenzial, komplexe Problemstellungen zu lösen, für die weder konventionelle Programmierarbeit noch andere Machine-Learning-Techniken geeignet sind.
Darüber hinaus lassen sich mit Hilfe von Deep Learning auch wesentlich akkuratere Modelle ausbilden als mit anderen Methoden. Der Zeitrahmen, um ein nutzwertiges Modell auf die Beine zu stellen, lässt sich so unter Umständen drastisch reduzieren. Allerdings erfordert das Training von Deep-Learning-Modellen enorme Rechenkraft und die Modelle zu interpretieren, ist ein schwieriges Unterfangen.
Das entscheidende Merkmal von Deep Learning ist, dass die trainierten Modelle mehr als einen versteckten Layer zwischen Input und Output aufweisen. In den meisten Fällen handelt es sich dabei um Künstliche Neuronale Netze - es gibt aber auch einige wenige Algorithmen, die Deep Learning mit anderen versteckten Layern implementieren.
Deep Learning vs. Machine Learning
Ganz allgemein laufen klassische Machine-Learning-Algorithmen wesentlich schneller als ihre Deep-Learning-Pendants. Um ein klassisches ML-Modell zu trainieren reicht normalerweise eine beziehungsweise mehrere CPUs aus.
DL-Modelle benötigen hingegen in vielen Fällen Hardware-Beschleunigung, etwa in Form von GPUs, TPUs oder FPGAs. Kommen diese nicht zum Einsatz, kann das Training von Deep-Learning-Modellen Monate in Anspruch nehmen.
Deep Learning - Use Cases
Für Deep Learning im Praxiseinsatz gibt es einige Beispiele:
Natural Language Processing
Im Herbst 2016 verbesserte sich die Performance von Google Translate drastisch: Was vorher Wortsalat war, kam plötzlich einer professionellen Übersetzung erstaunlich nahe. Der Grund: Google hatte sein Tool von einem phrasenbasierten, statistischen Machine-Learning-Algorithmus auf ein Künstliches Neuronales Netz umgestellt. Dazu war eine Vielzahl von Datenwissenschaftlern über Monate damit beschäftigt, Modelle aufzubauen und entsprechend zu trainieren.
Computer Vision
Ein weiteres gutes Beispiel ist die Klassifizierung von Bildern, beziehungsweise Computer Vision. Der Durchbruch in Sachen neuronale Netze gelang auf diesem Gebiet 1998 mit LeNet-5. Heutzutage können Bildklassifizierungsmodelle auf Deep-Learning-Basis eine Vielzahl von Objekten in HD und Farbe erkennen.
Deep Learning - Grundlagen
Die Idee des künstlichen neuronalen Netzes entstand bereits in den 1940er Jahren. Die Grundidee ist die Schaffung eines Netzwerks aus künstlichen Neuronen, das aus miteinander verbundenen Schwellenwertschaltern aufgebaut ist. Dieses Netzwerk kann - ähnlich wie ein tierisches Gehirn und Nervensystem - lernen, Muster zu erkennen. Folgende Begrifflichkeiten sollten Ihnen in diesem Zusammenhang geläufig sein:
Backpropagation
Deep Neural Networks "lernen" durch die Verstärkung der Verbindung zweier Neuronen, die während des Trainingsvorgangs gleichzeitig aktiv sind. Im Fall moderner Software erfolgt das im Regelfall, indem die Gewichtungswerte ("Weight Values)"der Verbindungen zwischen den Neuronen angehoben werden. Dieser Vorgang läuft regelbasiert ab und ist bekannt als Backpropagation, Backpropagation of Error oder auch Fehlerrückführung.
Neuronen-Modellierung
Jedes Neuron verfügt über eine Propagation Function, die den Output der verbundenen Neuronen transformiert, oft mit einer gewichteten Summe. Der Output der Propagation Function geht in eine Aktivierungsfunktion über, die aktiv wird, sobald ihr Input einen gewissen Schwellenwert überschreitet.
Aktivierungsfunktionen
In den 1940er und 1950er Jahren verwendeten künstliche Neuronen eine Stufen-Aktivierungsfunktion und wurden "Perceptrons" genannt. Moderne neuronale Netze verwenden Aktivierungsfunktionen wie die Sigmoidfunktion, die Hyperbelfunktion oder die Rectified Linear Unit (ReLU). ReLU ist für gewöhnlich die beste Wahl für schnelle Konvergenz, wenngleich es hierbei zu Neuronen-"Sterben" kommen kann, wenn die "Lernrate" im Training zu hoch ist.
Der Output der Aktivierungsfunktion kann zur weiteren Ausformung an eine Ausgangsfunktion übergeben werden. Häufig ist die Ausgangsfunktion jedoch die Identitätsfunktion, der Output der Aktivierungsfunktion wird also an die nachgeschalteten Neuronen weitergegeben.
Neuronale Netzwerktopologien
In einem Feed-Forward-Netzwerk sind die Neuronen in verschiedenen Schichten organisiert:
ein Input Layer;
mehrere versteckte Processing Layer;
ein Output Layer;
In einem Feed-Forward-Netz mit Verknüpfungen können Verbindungen eine oder mehrere Zwischenschichten überspringen. In rekurrenten neuronalen Netzen können sich die Neuronen selbst beeinflussen - entweder direkt oder indirekt durch die nächste Schicht.
Training
Supervised Learning läuft im Fall eines neuronalen Netzwerks wie bei jeder anderen Form von Machine Learning ab: Das Netzwerk wird mit verschiedenen Gruppen von Trainingsdaten "konfrontiert" und sein Output mit dem gewünschten Output verglichen. Basierend auf einem zuvor generierten Fehlervektor können Korrekturen am Netzwerk vorgenommen werden.
Optimizer
Optimierer für neuronale Netze verwenden im Regelfall eine Form des Gradientenabstiegsalgorithmus, um die Backpropagation zu steuern. Dabei kommt oft ein Mechanismus zum Einsatz, um ein "Hängenbleiben" in lokalen Minima zu vermeiden. Einige Optimierungsalgorithmen passen auch die Lernraten der Modellparameter an, indem sie den Verlauf des Gradienten betrachten.
Wie beim maschinellen Lernen müssen die Vorhersagen des neuronalen Netzwerks anhand eines separaten Validierungsdatensatzes überprüft werden. Geschieht das nicht, besteht die Gefahr, dass ein neuronales Netzwerk entsteht, das sich lediglich Inputs "merkt".
Deep Neural Networks
Ein Deep Neural Network, das reale Probleme lösen soll, kann mehr als zehn versteckte Layer aufweisen. Seine Topologie kann einfach oder sehr komplex sein. Je mehr Schichten das Netzwerk aufweist, desto mehr Merkmale kann es erkennen. Leider steigt mit der Anzahl der Schichten sowohl die Komplexität des Trainingsvorgangs als auch die Berechnungszeit.
Deep Learning - Algorithmen
Deep Learning fußt häufig auf Deep Neural Networks. Convolutional Neural Networks (CNNs) kommen häufig für Computer Vision zum Einsatz, während Recurrent Neural Networks (RNNs) zum Beispiel für Natural Language Processing verwendet werden - ebenso wie Long Short-Term Memory (LSTM)-Netze und aufmerksamkeitsbasierte neuronale Netze. Random Forests (oder Random DecisionForests) sind hingegen keine neuronalen Netzwerke und sind nützlich, wenn es um Klassifikations- oder Regressionsprobleme geht.
Convolutional Neural Networks
Um einen visuellen Kortex zu simulieren, verwenden CNNs typischerweise:
Faltungs- und Pooling-Layer,
ReLU Layer,
vollständig verbundene Schichten oder
Loss Layer.
Die Faltungsschicht nutzt im Grunde die Integrale vieler kleiner, überlappender Regionen. Die Pooling-Schicht setzt auf nonlinearesDownsampling. ReLU-Schichten wenden die nicht saturierte Aktivierungsfunktion f(x) = max (0,x) an. In einer vollständig verbundenen Schicht weisen die Neuronen Verbindungen zu allen Aktivierungen der vorherigen Schicht auf. Ein Loss Layer berechnet, wie das Netzwerktraining die Abweichung zwischen den vorhergesagten und den realen Labels abstraft, wobei eine Softmax- oder Cross-Entropie-Verlustfunktion für die Klassifizierung beziehungsweise eine euklidische Verlustfunktion für die Regression verwendet wird.
RNN, LSTM und aufmerksamkeitsbasierte neuronale Netze
In neuronalen Feed-Forward-Netzwerken fließen die Informationen vom Input Layer über die versteckten Schichten zum Output Layer. Ein solches Netzwerk kann also nur jeweils einen Zustand verarbeiten. In rekurrenten neuronalen Netzen durchläuft die Information eine Schleife, wodurch sich das Netz an vorherige Outputs "erinnern" kann. Dies ermöglicht die Analyse von Sequenzen und Zeitreihen. RNNs weisen zwei gängige Probleme auf: explodierende und/oder verschwindende Gradienten.
Im Fall von LSTMs ist das Netzwerk in der Lage, vorherige Informationen zu "vergessen" oder sich an sie zu "erinnern". Das verleiht einem LSTM im Endeffekt sowohl ein Langzeit- als auch ein Kurzzeitgedächtnis und löst das Problem verschwindender Gradienten. LSTMs können mit Sequenzen aus Hunderten historischen Inputs umgehen.
Random Forests
Eine andere Form von Deep-Learning-Algorithmus ist der Random Forest beziehungsweise Random Decision Forest. Dieser besteht aus einer Vielzahl von Schichten, wird aber nicht mit Neuronen sondern mit Decision Trees konstruiert. Seine Outputs bestehen aus den statistischen Durchschnittswerten der individuellen Decision Trees. Der "Random-Aspekt" entsteht durch die Anwendung von "Bootstrap Aggregation" auf einzelne Decision Trees und zufällige Feature Subsets.
Deep Learning - Modelltraining
Deep Transfer Learning
Beim Transferlernen wird ein Modell, das für einen Datensatz trainiert wurde, an einen anderen Datensatz angepasst. Mit Transfer Learning können Modelle wesentlich schneller und mit viel weniger Daten trainiert werden, als das von Grund auf der Fall wäre.
Google Cloud AutoML implementiert Deep Transfer Learning für Bildverarbeitung, Übersetzungen und NLP.
Azure Machine Learning Service bietet ähnliche Deep-Transfer-Learning-Dienste wie Custom Vision, anpassbare Sprache und Übersetzung sowie benutzerdefinierte Suche.
Verteiltes Deep-Learning-Training
Während TensorFlow verteiltes Training mit Parameterservern auf seine eigene Art und Weise koordiniert, verwendet ein allgemeinerer Ansatz Open MPI (Message Passing Interface). Horovod, ein verteiltes Trainings-Framework für TensorFlow, Keras und PyTorch, das bei Uber entwickelt wurde, verwendet sowohl Open MPI als auch Nvidia NCCL. Horovod erreicht eine Skalierungseffizienz zwischen 68 und 90 Prozent - je nach dem zu trainierenden Modell.
Deep Learning - Frameworks
Der effizienteste Weg Deep-Learning-Modelle aufzubauen, besteht darin, auf Frameworks zurückzugreifen - insbesondere deshalb, weil diese für die Nutzung mit GPUs und anderen Hardware-Beschleunigern konzipiert sind.
Das derzeit vorherrschende Framework ist Googles TensorFlow, die beliebteste High-Level-API Keras (diese lässt sich auch mit anderen Backend Frameworks nutzen).
PyTorch ist eine gute Alternative zu TensorFlow und unterstützt auch dynamische neuronale Netze, in denen sich die Netzwerktopologie verändern kann. Eine High-Level Drittanbeiter-API die PyTorch als Backend nutzt ist Fastai.
MXNet ist eine weitere TensorFlow-Alternative, die sich besser skalieren lassen soll. Die bevorzugte High-Level API ist Gluon.
Chainer war in gewisser Weise die Inspiration für PyTorch.
Das Apache-Projekt Deeplearning4j basiert im Gegensatz zu den vorgenannten Frameworks auf Java und Scala und ist kompatibel mit Apache Spark und Hadoop.
ONNX sollte ursprünglich ein offenes Ökosystem für KI-Modelle werden. Inziwschen besitzt ONNX auch eine Laufzeitumgebung.
TensorRT ist eine weitere Laufzeitumgebung für KI-Modelle - allerdings ist sie speziell für GPUs von NVidia konzipiert. TensorRT kann auch als Plugin für die ONNX Laufzeitumgebung zum Einsatz kommen.
Deep Learning - Ressourcen
Sie können jede Menge Deep-Learning-Erfahrung sammeln, indem Sie einfach eines der genannten Frameworks installieren und experimentieren. Sollten Sie noch etwas mehr Tiefgang benötigen, empfehlen sich folgende Anlaufstellen im Netz:
Dieser Beitrag basiert auf einem Artikel unserer US-Schwesterpublikation Infoworld.