Was ist tiefes Lernen? Algorithmen, die das menschliche Gehirn nachahmen

Deep Learning definiert

Deep Learning ist eine Form des maschinellen Lernens, bei der Muster in Daten als komplexe, mehrschichtige Netzwerke modelliert werden. Da Deep Learning die allgemeinste Methode zur Modellierung eines Problems ist, kann es schwierige Probleme wie Computer Vision und Verarbeitung natürlicher Sprache lösen, die sowohl die konventionelle Programmierung als auch andere Techniken des maschinellen Lernens übertreffen.

Deep Learning kann nicht nur nützliche Ergebnisse liefern, wenn andere Methoden fehlschlagen, sondern auch genauere Modelle als andere Methoden erstellen und die zum Erstellen eines nützlichen Modells erforderliche Zeit verkürzen. Das Training von Deep-Learning-Modellen erfordert jedoch viel Rechenleistung. Ein weiterer Nachteil des Deep Learning ist die Schwierigkeit, Deep Learning-Modelle zu interpretieren. 

Das bestimmende Merkmal des tiefen Lernens ist, dass das trainierte Modell mehr als eine verborgene Schicht zwischen der Eingabe und der Ausgabe aufweist. In den meisten Diskussionen bedeutet tiefes Lernen die Verwendung tiefer neuronaler Netze. Es gibt jedoch einige Algorithmen, die Deep Learning unter Verwendung anderer Arten von verborgenen Schichten neben neuronalen Netzen implementieren.

Deep Learning vs. Machine Learning

Ich erwähnte, dass tiefes Lernen eine Form des maschinellen Lernens ist. Ich werde nicht-tiefes maschinelles Lernen als klassisches maschinelles Lernen bezeichnen , um der allgemeinen Verwendung zu entsprechen.

Im Allgemeinen laufen klassische Algorithmen für maschinelles Lernen viel schneller als Algorithmen für tiefes Lernen. Eine oder mehrere CPUs reichen oft aus, um ein klassisches Modell zu trainieren. Deep-Learning-Modelle benötigen häufig Hardwarebeschleuniger wie GPUs, TPUs oder FPGAs für Schulungen und auch für die Bereitstellung in großem Maßstab. Ohne sie würde das Training der Modelle Monate dauern.

Für viele Probleme erzeugt ein klassischer Algorithmus für maschinelles Lernen ein Modell, das „gut genug“ ist. Bei anderen Problemen haben klassische Algorithmen für maschinelles Lernen in der Vergangenheit nicht besonders gut funktioniert.

Deep Learning-Anwendungen

Es gibt viele Beispiele für Probleme, die derzeit tiefes Lernen erfordern, um die besten Modelle zu erstellen. Die Verarbeitung natürlicher Sprache (NLP) ist gut.

Im Herbst 2016 verbesserte sich die Qualität der Google Translate-Ausgabe für Englisch-Französisch-, Englisch-Chinesisch- und Englisch-Japanisch-Sprachpaare plötzlich dramatisch, von der Erstellung von Wortsalaten bis zur Erstellung von Sätzen, die der Qualität einer professionellen Übersetzung durch einen Menschen nahe kommen. Hinter den Kulissen haben die Teams von Google Brain und Google Translate Google Translate von der Verwendung seiner alten phrasenbasierten statistischen Algorithmen für die maschinelle Übersetzung (eine Art des klassischen maschinellen Lernens) auf die Verwendung eines tiefen neuronalen Netzwerks umgestellt, das mit Worteinbettungen unter Verwendung des TensorFlow-Frameworks von Google trainiert wurde .

Das war kein einfaches Projekt. Viele Doktoranden brauchten monatelange Arbeit an Modellen und Tausende von GPU-Wochen, um die Modelle zu trainieren. Es spornte Google auch an, eine neue Art von Chip zu entwickeln, eine Tensor Processing Unit (TPU), mit der neuronale Netze für Google Translate skaliert werden können.

Zusätzlich zu dem von Google Translate angesprochenen Problem der Sprachübersetzung umfassen die wichtigsten NLP-Aufgaben die automatische Zusammenfassung, die Auflösung von Co-Referenzen, die Diskursanalyse, die morphologische Segmentierung, die Erkennung benannter Entitäten, die Erzeugung natürlicher Sprachen, das Verständnis natürlicher Sprachen, das Markieren von Teilen der Sprache und die Stimmung Analyse und Spracherkennung.

Ein weiteres gutes Beispiel für die Anwendung von Deep Learning ist die Bildklassifizierung. Da lebende Organismen Bilder mit ihrem visuellen Kortex verarbeiten, haben viele Forscher die Architektur des visuellen Kortex von Säugetieren als Modell für neuronale Netze zur Bilderkennung herangezogen. Die biologische Forschung reicht bis in die 1950er Jahre zurück.

Der Durchbruch im Bereich des neuronalen Netzwerks für das Sehen war 1998 das LeNet-5 von Yann LeCun, ein siebenstufiges Faltungs-Neuronales Netzwerk (CNN) zur Erkennung handgeschriebener Ziffern, die in 32 x 32 Pixel großen Bildern digitalisiert wurden. Um Bilder mit höherer Auflösung zu analysieren, müsste das LeNet-5-Netzwerk auf mehr Neuronen und mehr Schichten erweitert werden.

Die besten Tiefenbildklassifizierungsmodelle von heute können verschiedene Kataloge von Objekten mit HD-Auflösung in Farbe identifizieren. Zusätzlich zu reinen tiefen neuronalen Netzen (DNNs) verwenden Menschen manchmal hybride Bildverarbeitungsmodelle, die tiefes Lernen mit klassischen Algorithmen für maschinelles Lernen kombinieren, die bestimmte Unteraufgaben ausführen.

Andere Sehprobleme neben der grundlegenden Bildklassifizierung, die mit Deep Learning gelöst wurden, umfassen die Bildklassifizierung mit Lokalisierung, Objekterkennung, Objektsegmentierung, Bildstilübertragung, Bildfärbung, Bildrekonstruktion, Bildauflösung und Bildsynthese.

Die Bildklassifizierung kann zur Videoklassifizierung erweitert werden, indem die einzelnen Bilder aus einem Video extrahiert und jedes Bild klassifiziert werden. Erkannte Objekte in Videoclips können von Bild zu Bild verfolgt werden.

Laut Goodfellow, Bengio und Courville, die 2016 geschrieben haben, wurde Deep Learning erfolgreich eingesetzt, um vorherzusagen, wie Moleküle interagieren werden, um Pharmaunternehmen bei der Entwicklung neuer Medikamente zu unterstützen, nach subatomaren Partikeln zu suchen und Mikroskopbilder, die für die Konstruktion verwendet werden, automatisch zu analysieren eine 3-D-Karte des menschlichen Gehirns.

Deep Learning neuronale Netze

Die Ideen für „künstliche“ neuronale Netze reichen bis in die 1940er Jahre zurück. Das wesentliche Konzept besteht darin, dass ein Netzwerk künstlicher Neuronen, die aus miteinander verbundenen Schwellenschaltern aufgebaut sind, lernen kann, Muster auf die gleiche Weise zu erkennen wie ein tierisches Gehirn und ein Nervensystem (einschließlich der Netzhaut).

Backpropagation

Das Lernen in tiefen neuronalen Netzen erfolgt durch Stärkung der Verbindung zwischen zwei Neuronen, wenn beide während des Trainings gleichzeitig aktiv sind. In moderner neuronaler Netzwerksoftware geht es meistens darum, die Gewichtswerte für die Verbindungen zwischen Neuronen unter Verwendung einer Regel zu erhöhen, die als Backpropagation of Error , Backprop oder BP bezeichnet wird.

Neuronen

Wie werden die Neuronen modelliert? Jedes hat eine Ausbreitungsfunktion, die die Ausgaben der verbundenen Neuronen transformiert, oft mit einer gewichteten Summe. Die Ausgabe der Ausbreitungsfunktion geht an eine Aktivierungsfunktion über, die ausgelöst wird, wenn ihre Eingabe einen Schwellenwert überschreitet.

Aktivierungsfunktionen

In den 1940er und 1950er Jahren verwendeten künstliche Neuronen eine Stufenaktivierungsfunktion und wurden Perzeptrone genannt . Moderne neuronale Netze mögen sagen, dass sie Perzeptrone verwenden, aber sie haben tatsächlich reibungslose Aktivierungsfunktionen, wie die logistische oder sigmoidale Funktion, die hyperbolische Tangente und die Rectified Linear Unit (ReLU). ReLU ist normalerweise die beste Wahl für eine schnelle Konvergenz, obwohl es ein Problem gibt, dass Neuronen während des Trainings „sterben“, wenn die Lernrate zu hoch eingestellt ist.

Die Ausgabe der Aktivierungsfunktion kann zur zusätzlichen Formgebung an eine Ausgabefunktion übergeben werden. Oft ist die Ausgabefunktion jedoch die Identitätsfunktion, was bedeutet, dass die Ausgabe der Aktivierungsfunktion an die stromabwärts verbundenen Neuronen weitergeleitet wird.

Neuronale Netzwerktopologien

Nachdem wir die Neuronen kennen, müssen wir uns mit den gängigen Topologien neuronaler Netze vertraut machen. In einem Feed-Forward-Netzwerk sind die Neuronen in verschiedene Schichten unterteilt: eine Eingangsschicht, eine beliebige Anzahl versteckter Verarbeitungsschichten und eine Ausgangsschicht, und die Ausgaben von jeder Schicht gehen nur zur nächsten Schicht.

In einem Feed-Forward-Netzwerk mit Verknüpfungsverbindungen können einige Verbindungen über eine oder mehrere Zwischenschichten springen. In wiederkehrenden neuronalen Netzen können sich Neuronen entweder direkt oder indirekt durch die nächste Schicht beeinflussen.

Ausbildung

Das überwachte Lernen eines neuronalen Netzwerks erfolgt wie jedes andere maschinelle Lernen. Sie präsentieren dem Netzwerk Gruppen von Trainingsdaten, vergleichen die Netzwerkausgabe mit der gewünschten Ausgabe, generieren einen Fehlervektor und korrigieren das Netzwerk basierend auf dem Fehlervektor. Stapel von Trainingsdaten, die zusammen ausgeführt werden, bevor Korrekturen vorgenommen werden, werden als Epochen bezeichnet.

Für diejenigen, die an Details interessiert sind, verwendet die Backpropagation den Gradienten der Fehler- (oder Kosten-) Funktion in Bezug auf die Gewichte und Verzerrungen des Modells, um die richtige Richtung zu ermitteln, um den Fehler zu minimieren. Zwei Dinge steuern die Anwendung von Korrekturen: der Optimierungsalgorithmus und die Lernratenvariable, die normalerweise klein sein muss, um Konvergenz zu gewährleisten und die Entstehung toter ReLU-Neuronen zu vermeiden.

Optimierer

Optimierer für neuronale Netze verwenden normalerweise eine Art Gradientenabstiegsalgorithmus, um die Rückausbreitung zu steuern, häufig mit einem Mechanismus, der verhindert, dass sie in lokalen Minima stecken bleiben, z. B. durch Optimieren zufällig ausgewählter Mini-Batches (Stochastic Gradient Descent) und Anwenden von Impulskorrekturen auf den Gradienten . Einige Optimierungsalgorithmen passen auch die Lernraten der Modellparameter an, indem sie den Gradientenverlauf betrachten (AdaGrad, RMSProp und Adam).

Wie bei jedem maschinellen Lernen müssen Sie die Vorhersagen des neuronalen Netzwerks anhand eines separaten Validierungsdatensatzes überprüfen. Ohne dies zu tun, riskieren Sie die Erstellung neuronaler Netze, die nur ihre Eingaben speichern, anstatt zu lernen, verallgemeinerte Prädiktoren zu sein.

Echte DNNs

Ein tiefes neuronales Netzwerk für ein echtes Problem kann mehr als 10 verborgene Schichten haben. Die Topologie kann einfach oder recht komplex sein.

Je mehr Schichten im Netzwerk vorhanden sind, desto mehr Eigenschaften können erkannt werden. Je mehr Schichten im Netzwerk vorhanden sind, desto länger dauert die Berechnung und desto schwieriger wird das Training.

Deep-Learning-Algorithmen

Wie ich bereits erwähnt habe, wird das meiste tiefe Lernen mit tiefen neuronalen Netzen durchgeführt. Faltungs-Neuronale Netze (CNN) werden häufig für die Bildverarbeitung verwendet. Wiederkehrende neuronale Netze (RNN) werden häufig für die Verarbeitung natürlicher Sprache und anderer Sequenzen verwendet, ebenso wie LSTM-Netze (Long Short-Term Memory) und aufmerksamkeitsbasierte neuronale Netze. Zufällige Wälder, auch als zufällige Entscheidungswälder bezeichnet, die keine neuronalen Netze sind, sind für eine Reihe von Klassifizierungs- und Regressionsproblemen nützlich.

CNN neuronale Netze

Faltungs-Neuronale Netze verwenden typischerweise Faltungs-, Pooling-, ReLU-, vollständig verbundene und Verlustschichten, um einen visuellen Kortex zu simulieren. Die Faltungsschicht nimmt im Wesentlichen die Integrale vieler kleiner überlappender Bereiche auf. Die Pooling-Schicht führt eine Form des nichtlinearen Downsamplings durch. ReLU-Schichten wenden die nicht gesättigte Aktivierungsfunktion an f(x) = max(0,x). In einer vollständig verbundenen Schicht haben die Neuronen Verbindungen zu allen Aktivierungen in der vorherigen Schicht. Eine Verlustschicht berechnet, wie das Netzwerktraining die Abweichung zwischen den vorhergesagten und den wahren Bezeichnungen unter Verwendung einer Softmax- oder Kreuzentropieverlustfunktion zur Klassifizierung oder einer euklidischen Verlustfunktion zur Regression bestraft.

RNN, LSTM und auf Aufmerksamkeit basierende neuronale Netze

In neuronalen Feed-Forward-Netzen fließen Informationen von der Eingabe über die verborgenen Schichten zur Ausgabe. Dies beschränkt das Netzwerk darauf, jeweils nur einen Status zu bearbeiten.

In wiederkehrenden neuronalen Netzen durchläuft die Information eine Schleife, die es dem Netzwerk ermöglicht, sich an die letzten früheren Ausgaben zu erinnern. Dies ermöglicht die Analyse von Sequenzen und Zeitreihen. RNNs haben zwei häufige Probleme: explodierende Farbverläufe (leicht durch Klemmen der Farbverläufe zu beheben) und verschwindende Farbverläufe (nicht so einfach zu beheben).

In LSTMs kann das Netzwerk frühere Informationen vergessen (abtasten) oder sich diese merken, in beiden Fällen durch Ändern der Gewichte. Dies gibt einem LSTM effektiv sowohl Langzeit- als auch Kurzzeitgedächtnis und löst das Problem des verschwindenden Gradienten. LSTMs können Sequenzen von Hunderten von vergangenen Eingaben verarbeiten.

Aufmerksamkeitsmodule sind verallgemeinerte Gatter, die einem Eingabevektor Gewichte zuweisen. Ein hierarchischer neuronaler Aufmerksamkeitscodierer verwendet mehrere Schichten von Aufmerksamkeitsmodulen, um Zehntausende vergangener Eingaben zu verarbeiten.

Zufällige Wälder

Eine andere Art von Deep-Learning-Algorithmus - kein tiefes neuronales Netzwerk - ist der Random Forest oder Random Decision Forest. Ein zufälliger Wald besteht aus vielen Schichten, aber anstelle von Neuronen besteht er aus Entscheidungsbäumen und gibt einen statistischen Durchschnitt (Klassifizierungsmodus oder Mittelwert für Regression) der Vorhersagen der einzelnen Bäume aus. Die randomisierten Aspekte von Random Forests sind die Verwendung der Bootstrap-Aggregation (auch bekannt als Bagging ) für einzelne Bäume und die Verwendung zufälliger Teilmengen der Features.

Deep Learning Frameworks

Während Sie Deep-Learning-Programme nach ersten Prinzipien schreiben können, ist es weitaus effizienter, Deep-Learning-Frameworks zu verwenden, insbesondere da diese für die Verwendung mit GPUs und anderen Beschleunigern optimiert wurden. Das herausragende Framework ist TensorFlow, das von Google stammt. Die bevorzugte High-Level-API für TensorFlow ist Keras, die auch mit anderen Back-End-Frameworks verwendet werden kann.

PyTorch von Facebook und anderen ist eine starke Alternative zu TensorFlow und unterstützt dynamische neuronale Netze, bei denen sich die Topologie des Netzes von Epoche zu Epoche ändern kann. Fastai ist eine High-Level-API von Drittanbietern, die PyTorch als Back-End verwendet.

MXNet von Amazon und anderen ist eine weitere starke Alternative zu TensorFlow mit dem Anspruch auf bessere Skalierbarkeit. Gluon ist die bevorzugte High-Level-Imperative-API für MXNet.

Chainer von IBM, Intel und anderen war in gewisser Weise die Inspiration für PyTorch, da es das neuronale Netzwerk durch Ausführen definiert und dynamische neuronale Netzwerke unterstützt.

Während alle oben genannten Frameworks hauptsächlich Python sind, besteht Deeplearning4j (DL4J), ursprünglich von Skymind und jetzt ein Apache-Projekt, hauptsächlich aus Java und Scala. DL4J ist kompatibel mit Apache Spark und Hadoop.

ONNX wurde ursprünglich als offenes Ökosystem für austauschbare KI-Modelle vorgeschlagen. ONNX hat jetzt zusätzlich zum Austauschdateiformat eine Laufzeit.