Automatisiertes maschinelles Lernen oder AutoML erklärt

Die beiden größten Hindernisse für den Einsatz von maschinellem Lernen (sowohl klassisches maschinelles Lernen als auch tiefes Lernen) sind Fähigkeiten und Computerressourcen. Sie können das zweite Problem lösen, indem Sie Geld darauf werfen, entweder für den Kauf beschleunigter Hardware (z. B. Computer mit High-End-GPUs) oder für die Vermietung von Rechenressourcen in der Cloud (z. B. Instanzen mit angeschlossenen GPUs, TPUs und FPGAs).

Auf der anderen Seite ist es schwieriger, das Kompetenzproblem zu lösen. Datenwissenschaftler verfügen häufig über hohe Gehälter und sind möglicherweise immer noch schwer zu rekrutieren. Google war in der Lage, viele seiner Mitarbeiter in seinem eigenen TensorFlow-Framework zu schulen, aber die meisten Unternehmen verfügen kaum über Fachkräfte, die in der Lage sind, selbst Modelle für maschinelles Lernen und tiefes Lernen zu erstellen, und noch weniger, wie andere lernen.

Was ist AutoML?

Durch automatisiertes maschinelles Lernen (AutoML) soll der Bedarf an qualifizierten Datenwissenschaftlern für die Erstellung von Modellen für maschinelles Lernen und tiefes Lernen verringert oder beseitigt werden. Stattdessen können Sie mit einem AutoML-System die gekennzeichneten Trainingsdaten als Eingabe bereitstellen und ein optimiertes Modell als Ausgabe erhalten.

Es gibt verschiedene Möglichkeiten, dies zu tun. Ein Ansatz besteht darin, dass die Software einfach jede Art von Modell auf die Daten trainiert und das Modell auswählt, das am besten funktioniert. Eine Verfeinerung davon wäre, ein oder mehrere Ensemblemodelle zu bauen, die die anderen Modelle kombinieren, was manchmal (aber nicht immer) bessere Ergebnisse liefert.

Eine zweite Technik besteht darin, die Hyperparameter (siehe unten) des besten Modells oder der besten Modelle zu optimieren, um ein noch besseres Modell zu trainieren. Feature Engineering (ebenfalls unten erläutert) ist eine wertvolle Ergänzung für jedes Modelltraining. Eine Möglichkeit, Deep Learning zu entqualifizieren, besteht darin, Transfer Learning zu verwenden und im Wesentlichen ein gut ausgebildetes allgemeines Modell für bestimmte Daten anzupassen.

Was ist Hyperparameteroptimierung?

Alle Modelle für maschinelles Lernen haben Parameter, dh die Gewichte für jede Variable oder jedes Merkmal im Modell. Diese werden normalerweise durch Rückausbreitung der Fehler plus Iteration unter der Kontrolle eines Optimierers wie des stochastischen Gradientenabfalls bestimmt.

Die meisten Modelle für maschinelles Lernen haben auch Hyperparameter, die außerhalb der Trainingsschleife festgelegt werden. Dazu gehören häufig die Lernrate, die Abbrecherquote und modellspezifische Parameter wie die Anzahl der Bäume in einem zufälligen Wald.

Hyperparameter-Tuning oder Hyperparameter-Optimierung (HPO) ist eine automatische Methode zum Durchsuchen oder Durchsuchen eines oder mehrerer Hyperparameter eines Modells, um die Menge zu finden, die zum am besten trainierten Modell führt. Dies kann zeitaufwändig sein, da Sie das Modell (die innere Schleife) für jeden Satz von Hyperparameterwerten im Sweep (die äußere Schleife) erneut trainieren müssen. Wenn Sie viele Modelle parallel trainieren, können Sie den Zeitaufwand auf Kosten der Verwendung von mehr Hardware reduzieren.

Was ist Feature Engineering?

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. Ein Merkmalsvektor kombiniert alle Merkmale für eine einzelne Zeile zu einem numerischen Vektor. Beim Feature Engineering werden die besten Variablen sowie die beste Datencodierung und -normalisierung für die Eingabe in den Modelltrainingsprozess ermittelt.

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 (PCA) durch, um korrelierte Variablen in einen Satz linear unkorrelierter Variablen umzuwandeln.

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 geordnet ist.

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 .

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.

Was ist Transferlernen?

Transferlernen wird manchmal als benutzerdefiniertes maschinelles Lernen und manchmal als AutoML (meistens von Google) bezeichnet. Anstatt beim Training von Modellen aus Ihren Daten von vorne zu beginnen, implementiert Google Cloud AutoML das automatische Deep-Transfer-Lernen (dh es beginnt mit einem vorhandenen Deep-Neural-Netzwerk, das auf anderen Daten trainiert ist) und die Suche nach neuronalen Architekturen (dh es findet die richtige Kombination aus zusätzlichen Daten) Netzwerkschichten) für die Übersetzung von Sprachpaaren, die Klassifizierung natürlicher Sprachen und die Bildklassifizierung.

Dies ist ein anderer Prozess als der, der normalerweise mit AutoML gemeint ist, und es werden nicht so viele Anwendungsfälle abgedeckt. Wenn Sie andererseits ein angepasstes Deep-Learning-Modell in einem unterstützten Bereich benötigen, führt das Transferlernen häufig zu einem überlegenen Modell.

AutoML-Implementierungen

Es gibt viele Implementierungen von AutoML, die Sie ausprobieren können. Einige sind kostenpflichtige Dienste, andere sind kostenloser Quellcode. Die folgenden Listen sind keinesfalls vollständig oder endgültig.

AutoML-Dienste

Alle drei großen Cloud-Dienste verfügen über eine Art AutoML. Amazon SageMaker führt eine Hyperparameter-Optimierung durch, probiert jedoch nicht automatisch mehrere Modelle aus oder führt Feature-Engineering durch. Azure Machine Learning verfügt sowohl über AutoML, das Funktionen und Algorithmen durchläuft, als auch über die Optimierung von Hyperparametern, die Sie normalerweise mit dem besten von AutoML ausgewählten Algorithmus ausführen. Wie ich bereits erwähnt habe, handelt es sich bei Google Cloud AutoML um Deep-Transfer-Lernen für die Übersetzung von Sprachpaaren, die Klassifizierung natürlicher Sprachen und die Klassifizierung von Bildern.

Eine Reihe kleinerer Unternehmen bieten auch AutoML-Dienste an. Zum Beispiel hat DataRobot, das behauptet, AutoML erfunden zu haben, einen guten Ruf auf dem Markt. DotData hat zwar einen winzigen Marktanteil und eine mittelmäßige Benutzeroberfläche, verfügt jedoch über umfassende Funktionen für das Feature-Engineering und deckt viele Anwendungsfälle für Unternehmen ab. H2O.ai Driverless AI, das ich 2017 überprüft habe, kann einem Datenwissenschaftler dabei helfen, Modelle wie einen Kaggle-Master zu entwickeln, Feature-Engineering, Algorithmus-Sweeps und Hyperparameter-Optimierung auf einheitliche Weise durchzuführen.

AutoML-Frameworks

AdaNet ist ein leichtes TensorFlow-basiertes Framework zum automatischen Lernen hochwertiger Modelle mit minimalem Eingriff von Experten. Auto-Keras ist eine Open-Source-Softwarebibliothek für automatisiertes maschinelles Lernen, die von Texas A & M entwickelt wurde und Funktionen zur automatischen Suche nach Architektur und Hyperparametern von Deep-Learning-Modellen bietet. NNI (Neural Network Intelligence) ist ein Toolkit von Microsoft, mit dem Benutzer Modelle für maschinelles Lernen (z. B. Hyperparameter), Architekturen für neuronale Netzwerke oder Parameter eines komplexen Systems auf effiziente und automatische Weise entwerfen und optimieren können.

Auf GitHub finden Sie zusätzliche AutoML-Projekte und eine ziemlich vollständige und aktuelle Liste von Artikeln zu AutoML.