Deep Learning vs. Machine Learning: Verstehen Sie die Unterschiede

Maschinelles Lernen und tiefes Lernen sind beide Formen künstlicher Intelligenz. Man kann auch richtig sagen, dass Deep Learning eine bestimmte Art des maschinellen Lernens ist. Sowohl maschinelles Lernen als auch tiefes Lernen beginnen mit Trainings- und Testdaten und einem Modell und durchlaufen einen Optimierungsprozess, um die Gewichte zu finden, mit denen das Modell am besten zu den Daten passt. Beide können numerische (Regression) und nicht numerische (Klassifizierung) Probleme behandeln, obwohl es mehrere Anwendungsbereiche gibt, wie z. B. Objekterkennung und Sprachübersetzung, in denen Deep-Learning-Modelle tendenziell bessere Anpassungen liefern als Modelle für maschinelles Lernen.

Maschinelles Lernen erklärt

Algorithmen für maschinelles Lernen werden häufig in überwacht (die Trainingsdaten sind mit den Antworten versehen) und unbeaufsichtigt (eventuell vorhandene Bezeichnungen werden dem Trainingsalgorithmus nicht angezeigt) unterteilt. Überwachte Probleme des maschinellen Lernens werden weiter unterteilt in Klassifizierung (Vorhersage nicht numerischer Antworten wie die Wahrscheinlichkeit einer versäumten Hypothekenzahlung) und Regression (Vorhersage numerischer Antworten wie die Anzahl der Widgets, die nächsten Monat in Ihrem Geschäft in Manhattan verkauft werden).

Unbeaufsichtigtes Lernen wird weiter unterteilt in Clustering (Auffinden von Gruppen ähnlicher Objekte wie Laufschuhe, Wanderschuhe und Abendschuhe), Assoziation (Auffinden gemeinsamer Objektsequenzen wie Kaffee und Sahne) und Dimensionsreduktion (Projektion, Merkmalsauswahl) und Merkmalsextraktion).

Klassifizierungsalgorithmen

Ein Klassifizierungsproblem ist ein überwachtes Lernproblem, bei dem zwischen zwei oder mehr Klassen gewählt werden muss, wobei normalerweise Wahrscheinlichkeiten für jede Klasse angegeben werden. Ohne neuronale Netze und Deep Learning, die ein viel höheres Maß an Rechenressourcen erfordern, sind die häufigsten Algorithmen Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors und Support Vector Machine (SVM). Sie können auch Ensemble-Methoden (Modellkombinationen) wie Random Forest, andere Bagging-Methoden und Boosting-Methoden wie AdaBoost und XGBoost verwenden.

Regressionsalgorithmen

Ein Regressionsproblem ist ein überwachtes Lernproblem, bei dem das Modell aufgefordert wird, eine Zahl vorherzusagen. Der einfachste und schnellste Algorithmus ist die lineare Regression (kleinste Quadrate), aber Sie sollten hier nicht aufhören, da Sie häufig ein mittelmäßiges Ergebnis erhalten. Andere gängige Regressionsalgorithmen für maschinelles Lernen (ohne neuronale Netze) sind Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost und XGBoost. Sie werden feststellen, dass es einige Überschneidungen zwischen Algorithmen für maschinelles Lernen zur Regression und Klassifizierung gibt.

Clustering-Algorithmen

Ein Clustering-Problem ist ein unbeaufsichtigtes Lernproblem, bei dem das Modell aufgefordert wird, Gruppen ähnlicher Datenpunkte zu finden. Der beliebteste Algorithmus ist K-Means Clustering. Andere umfassen Mean-Shift-Clustering, DBSCAN (dichtebasiertes räumliches Clustering von Anwendungen mit Rauschen), GMM (Gaußsche Mischungsmodelle) und HAC (Hierarchical Agglomerative Clustering).

Algorithmen zur Dimensionsreduzierung

Die Reduzierung der Dimensionalität ist ein unbeaufsichtigtes Lernproblem, bei dem das Modell aufgefordert wird, Variablen zu löschen oder zu kombinieren, die nur geringe oder keine Auswirkungen auf das Ergebnis haben. Dies wird häufig in Kombination mit Klassifizierung oder Regression verwendet. Algorithmen zur Dimensionsreduzierung umfassen das Entfernen von Variablen mit vielen fehlenden Werten, das Entfernen von Variablen mit geringer Varianz, den Entscheidungsbaum, die zufällige Gesamtstruktur, das Entfernen oder Kombinieren von Variablen mit hoher Korrelation, die Eliminierung von Rückwärtsmerkmalen, die Auswahl von Vorwärtsmerkmalen, die Faktoranalyse und die PCA (Hauptkomponentenanalyse).

Optimierungsmethoden

Training und Evaluierung verwandeln überwachte Lernalgorithmen in Modelle, indem sie ihre Parametergewichte optimieren, um den Wertesatz zu finden, der am besten zur Grundwahrheit Ihrer Daten passt. Die Algorithmen stützen sich für ihre Optimierer häufig auf Varianten des steilsten Abstiegs, beispielsweise den stochastischen Gradientenabstieg, bei dem es sich im Wesentlichen um den steilsten Abstieg handelt, der mehrfach von zufälligen Startpunkten aus durchgeführt wird.

Häufige Verfeinerungen des stochastischen Gradientenabfalls fügen Faktoren hinzu, die die Richtung des Gradienten basierend auf dem Impuls korrigieren oder die Lernrate basierend auf dem Fortschritt von einem Durchgang durch die Daten (als Epoche oder Stapel bezeichnet) zum nächsten anpassen .

Datenbereinigung für maschinelles Lernen

In freier Wildbahn gibt es keine sauberen Daten. Um für maschinelles Lernen nützlich zu sein, müssen Daten aggressiv gefiltert werden. Zum Beispiel möchten Sie:

  1. Sehen Sie sich die Daten an und schließen Sie alle Spalten aus, in denen viele Daten fehlen.
  2. Sehen Sie sich die Daten erneut an und wählen Sie die Spalten aus, die Sie für Ihre Vorhersage verwenden möchten ( Funktionsauswahl ). Dies ist etwas, das Sie möglicherweise ändern möchten, wenn Sie iterieren.
  3. Schließen Sie alle Zeilen aus, in denen noch Daten in den verbleibenden Spalten fehlen.
  4. Korrigieren Sie offensichtliche Tippfehler und führen Sie gleichwertige Antworten zusammen. Beispielsweise sollten USA, USA, USA und Amerika in einer einzigen Kategorie zusammengefasst werden.
  5. Schließen Sie Zeilen mit Daten aus, die außerhalb des Bereichs liegen. Wenn Sie beispielsweise Taxifahrten in New York City analysieren, möchten Sie Zeilen mit Breiten- und Längengraden für Abholung oder Rückgabe herausfiltern, die außerhalb des Begrenzungsrahmens der Metropolregion liegen.

Sie können noch viel mehr tun, dies hängt jedoch von den gesammelten Daten ab. Dies kann mühsam sein, aber wenn Sie einen Datenbereinigungsschritt in Ihrer Pipeline für maschinelles Lernen einrichten, können Sie ihn nach Belieben ändern und wiederholen.

Datencodierung und Normalisierung für maschinelles Lernen

Um kategoriale Daten für die Maschinenklassifizierung zu verwenden, müssen Sie die Textbeschriftungen in ein anderes Formular codieren. Es gibt zwei gängige Codierungen.

Eine davon ist die Beschriftungscodierung , was bedeutet, dass jeder Textbeschriftungswert durch eine Zahl ersetzt wird. Die andere ist die One-Hot-Codierung , dh jeder Textbeschriftungswert wird in eine Spalte mit einem Binärwert (1 oder 0) umgewandelt. Die meisten Frameworks für maschinelles Lernen verfügen über Funktionen, die die Konvertierung für Sie durchführen. Im Allgemeinen wird eine One-Hot-Codierung bevorzugt, da die Label-Codierung den Algorithmus für maschinelles Lernen manchmal verwirren kann, wenn man denkt, dass die codierte Spalte eine geordnete Liste sein soll.

Um numerische Daten für die Maschinenregression zu verwenden, müssen Sie die Daten normalerweise normalisieren. Andernfalls könnten die Zahlen mit größeren Bereichen dazu neigen, den euklidischen Abstand zwischen Merkmalsvektoren zu dominieren , ihre Auswirkungen könnten auf Kosten der anderen Felder vergrößert werden, und die Optimierung des steilsten Abstiegs könnte Schwierigkeiten beim Konvergieren haben. Es gibt eine Reihe von Möglichkeiten, Daten für maschinelles Lernen zu normalisieren und zu standardisieren, einschließlich Min-Max-Normalisierung, mittlerer Normalisierung, Standardisierung und Skalierung auf Längeneinheit. Dieser Vorgang wird häufig als Feature-Skalierung bezeichnet .

Feature Engineering für maschinelles Lernen

Ein Merkmal ist eine einzelne messbare Eigenschaft oder Eigenschaft eines beobachteten Phänomens. Das Konzept eines „Merkmals“ bezieht sich auf das einer erklärenden Variablen, die in statistischen Techniken wie der linearen Regression verwendet wird. Merkmalsvektoren kombinieren alle Merkmale für eine einzelne Zeile zu einem numerischen Vektor.

Ein Teil der Kunst bei der Auswahl von Features besteht darin, einen Mindestsatz unabhängiger Variablen auszuwählen , die das Problem erklären. Wenn zwei Variablen stark korreliert sind, müssen sie entweder zu einem einzigen Feature kombiniert werden oder eine sollte gelöscht werden. Manchmal führen Menschen eine Hauptkomponentenanalyse durch, um korrelierte Variablen in einen Satz linear nicht korrelierter Variablen umzuwandeln.

Einige der Transformationen, mit denen Benutzer neue Features erstellen oder die Dimensionalität von Feature-Vektoren reduzieren, sind einfach. Subtrahieren Sie beispielsweise Year of Birthvon Year of Deathund konstruieren Sie Age at Death, was eine unabhängige Hauptvariable für die Lebenszeit- und Mortalitätsanalyse ist. In anderen Fällen ist die Merkmalskonstruktion möglicherweise nicht so offensichtlich.

Daten für maschinelles Lernen aufteilen

Die übliche Praxis für überwachtes maschinelles Lernen besteht darin, den Datensatz für Training , Validierung und Test in Teilmengen aufzuteilen . Eine Arbeitsweise besteht darin, 80% der Daten dem Trainingsdatensatz und jeweils 10% den Validierungs- und Testdatensätzen zuzuweisen. (Die genaue Aufteilung ist eine Frage der Präferenz.) Der Großteil des Trainings wird anhand des Trainingsdatensatzes durchgeführt, und die Vorhersage erfolgt anhand des Validierungsdatensatzes am Ende jeder Epoche.

Die Fehler im Validierungsdatensatz können verwendet werden, um Stoppkriterien zu identifizieren oder die Optimierung von Hyperparametern voranzutreiben. Am wichtigsten ist, dass Sie anhand der Fehler im Validierungsdatensatz feststellen können, ob das Modell zu den Trainingsdaten passt.

Die Vorhersage anhand des Testdatensatzes erfolgt normalerweise am endgültigen Modell. Wenn der Testdatensatz nie für das Training verwendet wurde, wird er manchmal als Holdout-Datensatz bezeichnet.

Es gibt verschiedene andere Schemata zum Aufteilen der Daten. Eine übliche Technik, die Kreuzvalidierung , besteht darin, den gesamten Datensatz wiederholt in einen Trainingsdatensatz und einen Validierungsdatensatz aufzuteilen. Am Ende jeder Epoche werden die Daten gemischt und erneut aufgeteilt.

Bibliotheken für maschinelles Lernen

In Python sind Spark MLlib und Scikit-learn eine ausgezeichnete Wahl für Bibliotheken für maschinelles Lernen. In R sind einige Optionen für maschinelles Lernpaket CARAT, randomForest, e1071 und KernLab. In Java stehen Java-ML, RapidMiner und Weka zur Auswahl.

Deep Learning erklärt

Deep Learning ist eine Form des maschinellen Lernens, bei der das zu trainierende Modell mehr als eine verborgene Schicht zwischen Eingabe und 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.

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).

Backprop

Das Lernen erfolgt im Wesentlichen durch die 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 Rückausbreitung von Fehlern , Backprop oder BP bezeichnet wird.

Neuronen in künstlichen neuronalen Netzen

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 neuronalen Netzen

In den 1940er und 1950er Jahren verwendeten künstliche Neuronen eine Stufenaktivierungsfunktion und wurden Perzeptrone genannt . Moderne neuronale Netze können sagen, dass sie Perzeptrone verwenden, aber tatsächlich reibungslose Aktivierungsfunktionen haben, wie die logistische oder sigmoidale Funktion, die hyperbolische Tangente oder 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.

[Auch auf: 6 Möglichkeiten, maschinelles Lernen zum Scheitern zu bringen]

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, n verborgene Verarbeitungsschichten und eine Ausgangsschicht. Die Ausgaben von jeder Ebene gehen nur zur nächsten Ebene.

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 selbst beeinflussen.

Training neuronaler Netze

Das überwachte Lernen eines neuronalen Netzwerks erfolgt wie bei jedem anderen maschinellen 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 den Details interessiert sind, verwendet die Rückausbreitung den Gradienten der Fehler- (oder Kosten-) Funktion in Bezug auf die Gewichte und Vorspannungen 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 Variable für die Lernrate muss normalerweise klein sein, um Konvergenz zu gewährleisten und die Entstehung toter ReLU-Neuronen zu vermeiden.

Optimierer für neuronale Netze

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, wie z. B. die Optimierung zufällig ausgewählter Mini-Batches (Stochastic Gradient Descent) und das Anwenden von Impulskorrekturen auf die Gradient. Einige Optimierungsalgorithmen passen auch die Lernraten der Modellparameter an, indem sie den Gradientenverlauf betrachten (AdaGrad, RMSProp und Adam).