Kurs
Machine Learning ist längst kein Fremdwort mehr. Plattformen wie DataCamp, Coursera, Udacity und viele andere arbeiten kontinuierlich daran, Machine-Learning-Wissen effizient und flexibel zugänglich zu machen. Dank ihrer Angebote ist der Einstieg heute mit kaum Vorkenntnissen möglich. Der Begriff Automated Machine Learning sorgt in den bekannten Data-Science-Foren allerdings besonders für Schlagzeilen. Unternehmen wie Google und H2O.ai treiben dieses Feld stark voran. Im Vergleich zu klassischem Machine Learning ist es noch kein Standardthema. Denn Machine Learning enthält ja bereits viel Automatisierung – da liegt die Frage nahe: „Lässt sich Machine Learning selbst auch automatisieren?“
In diesem Tutorial findest du Antworten auf solche Fragen.
Los geht’s.
Eine typische Machine-Learning-Pipeline verstehen
Als Data Scientist sieht ein typischer Workflow in etwa so aus:
- Datenerfassung
- Datenvorverarbeitung
- Einen für das Problem geeigneten Machine-Learning-Algorithmus wählen
- Modell trainieren
- Modell testen
- Hyperparameter anpassen
- Erneut testen
- Ergebnisse kommunizieren
Der zweite Schritt, die Datenvorverarbeitung, ist sehr umfangreich und in der Regel einer der zeitintensivsten Teile der Pipeline. Er umfasst Aufgaben wie Datenbereinigung, Transformation, Featureauswahl usw. Die Schritte 3 bis 7 beziehen sich auf ein einzelnes Modell. Gute Praktiker begnügen sich aber nicht mit einem Modell. Sie probieren mehrere Ansätze aus, vergleichen die Ergebnisse und wählen dann das beste Modell. Das führt zu einer weiteren zeitaufwendigen Aufgabe: Welches Modell wähle ich aus?
Das folgende Zitat zum Debugging in Machine-Learning-Projekten trifft den Kern und sollte man im Hinterkopf behalten:
Du hast jetzt ein Gefühl für eine typische Machine-Learning-Aufgabe. Am Ende musst du entscheiden, welches Modell für dein Problem am besten geeignet ist – und begründen, warum. Oft ist die Zahl möglicher Optionen riesig, die Deadline aber nah. Erkennst du das Dilemma? Schauen wir genauer hin.
Wie lässt sich die Machine-Learning-Pipeline automatisieren?
Wir betrachten weiterhin die Aufgabe, unter Zeitdruck das beste Modell zu finden, obwohl es unzählige Möglichkeiten gibt.
Gleich zu Beginn stand die Frage „Kann Machine Learning auch automatisiert werden?“ Das ist alles andere als naiv. Selbst Sebastian Raschka bezeichnete Automated Machine Learning in einem Interview als „die Automatisierung des Automatisierens von Automatisierung“.
Denk noch einmal an Schritt 5 des oben beschriebenen Workflows – Hyperparameter eines Modells abstimmen. Angenommen, deine Daten sind vorbereitet und du startest mit einem Klassifikator $X$. $X$ besitzt fünf Hyperparameter. Du musst also denselben Klassifikator mit vielen verschiedenen Hyperparameter-Kombinationen testen – alles andere als trivial. Noch schwieriger wird es, wenn die Ergebnisse nicht überzeugen. Dann probierst du vier weitere Klassifikatoren aus, jeder mit sechs Hyperparametern. Kannst du dir ausrechnen, wie viel Zeit das kostet? Und wenn die Resultate dann noch immer nicht passen, beginnt die Analyse erneut – wieder äußerst zeitintensiv.
Genau hier setzt die Idee von Automated Machine Learning an.
"Wenn zahlreiche ML-Modelle mit unterschiedlichen Algorithmen und vielfältigen Hyperparameter-Konfigurationen gebaut werden müssen, lässt sich dieser Modellbau automatisieren – ebenso der Vergleich ihrer Leistung und Genauigkeit." - KDNuggets
Jetzt ist klar, warum Automated Machine Learning derzeit so viel Aufmerksamkeit in Data-Science-Communities bekommt. Im nächsten Abschnitt gehen wir tiefer darauf ein.
Einführung in Automated Machine Learning
Das Abstimmen von Hyperparametern über verschiedene Modelle hinweg ist notorisch zeitaufwendig. Informatiksprachlich betrachtet ist es ein Suchprozess, der sehr schnell extrem aufwendig wird. Was, wenn sich dieser Prozess selbst automatisieren ließe? Genau das leistet AutoML. "Automated Machine Learning ist eine direkte Antwort auf den Mangel an Data Scientists, da es deren Leistung und Produktivität drastisch steigern kann – durch kürzere Iterationen, bessere Modellgenauigkeit und möglicherweise sogar die Substitution bestimmter Aufgaben." - Automated Machine Learning for Internet of Things
Du kennst nun die Grundlagen von AutoML und kannst es in Aktion sehen. Zuvor werfen wir einen Blick auf gängige Python-Bibliotheken für AutoML.
Python-Bibliotheken für Automated Machine Learning
Es gibt zahlreiche Python-Bibliotheken für AutoML. Sie verfolgen dasselbe Ziel: den Machine-Learning-Prozess zu automatisieren. Zu den meistgenutzten zählen:
Alle verfolgen eigene Ansätze, um die „Automatisierung des Automatisierens von Automatisierung“ umzusetzen. In diesem Tutorial nutzen wir Auto-Keras. Also los.
Einführung in Auto-Keras
"Auto-Keras ist eine Open-Source-Softwarebibliothek für automatisiertes Machine Learning." (Quelle) Entwickelt wird sie vom DATA Lab der Texas A&M University und Community-Mitwirkenden. Laut der offiziellen Website von auto-keras: "Das Ziel von AutoML ist es, domänenspezifischen Expertinnen und Experten ohne tiefen ML-Hintergrund einfach zugängliche Deep-Learning-Tools bereitzustellen. Auto-Keras sucht automatisch nach Modellarchitekturen und Hyperparametern für Deep Learning."

Quelle: Auto-Keras
So installierst du Auto-Keras:
Hinweis: Aktuell ist Auto-Keras nur mit Python 3.6 kompatibel.
!pip install autokeras
Nach der erfolgreichen Installation folgt eine kurze Implementierung.
Fallstudie: AutoML mit Auto-Keras
Für diese Fallstudie verwenden wir den bekannten MNIST-Datensatz. keras bringt ihn bereits mit – kein separater Download nötig. Zunächst laden wir das Modul ImageClassifier aus auto-keras und den MNIST-Datensatz aus keras.
from keras.datasets import mnist
from autokeras import ImageClassifier
Du hast MNIST aus keras.datasets geladen und ImageClassifier aus auto-keras importiert. Jetzt teilst du den Datensatz in Training und Test auf.
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(x_train.shape + (1,)) # (1,) steht für den Kanal, hier 1
x_test = x_test.reshape(x_test.shape + (1,)) # (1,) steht für den Kanal, hier 1
Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz
11493376/11490434 [==============================] - 1s 0us/step
Nun passt du den ImageClassifier mit x_train und y_train an und prüfst die Performance auf x_test und y_test.
# ImageClassifier instanziieren
clf = ImageClassifier(verbose=True, augment=False)
# Training
clf.fit(x_train, y_train, time_limit=12 * 60 * 60)
clf.final_fit(x_train, y_train, x_test, y_test, retrain=True)
# Ergebnisse zusammenfassen
y = clf.evaluate(x_test, y_test)
print(y * 100)
So einfach kann es sein: 4–5 Zeilen Code für einen schnellen Versuch. Ganz so schnell läuft es aber nicht: Die Ausführung dauert spürbar. Eine solide Hardware-Konfiguration für Deep-Learning-Experimente ist hier hilfreich. Google Colab ist ebenfalls ein guter Startpunkt.
Schauen wir uns die verwendeten Parameter genauer an. Grundlage ist die Dokumentation von auto-keras. Hier die relevanten Auszüge:
- In ImageClassifier():
- verbose: Boolescher Wert, ob der Suchprozess ausgegeben wird.
- augment: Boolescher Wert, ob die Daten augmentiert werden sollen. Wenn nicht gesetzt, wird der Wert von Constant.DATA_AUGMENTATION verwendet (Standard: True).
- In der fit()-Methode:
- time_limit: Zeitlimit für die Suche in Sekunden.
- final_fit(): Abschließendes Training mit der besten gefundenen Architektur.
- retrain: Boolescher Wert, ob die Gewichte des Modells neu initialisiert werden.
Auto-Keras entwickelt sich aktiv weiter und befindet sich noch in der Vorabversion. Laut offizieller Seite werden u. a. folgende Module unterstützt:
- supervised: Basisklasse für alle Supervised-Tasks.
- bayesian: Ein GaussianProcessRegressor für Bayes’sche Optimierung.
- search: Basisklasse aller Such-Komponenten. Jede Suchklasse kann ihre Strategie über eine eigene search-Funktion implementieren.
- graph: Repräsentiert den Architekturgraphen eines Keras-Modells. Knoten sind Zwischentensoren zwischen Layern, Kanten sind Layer. Mehrere Kanten können auf denselben Layer verweisen (z. B. Add-Layer).
- preprocessor: Formatiert Daten, z. B. Umwandlung von Klassifikationslabels in Vektoren.
- model_trainer: Trainiert ein Modell. Kann ein Pytorch-Modell mit gegebenen Dataladern trainieren. Metrik, Loss und Modell müssen zusammenpassen.
Abschließende Hinweise
Geschafft bis zum Ende. In diesem Tutorial hast du den allgemeinen ML-Prozess betrachtet und gesehen, wie sich Teile davon automatisieren lassen. Du hast einen Überblick über gängige AutoML-Bibliotheken bekommen und mit auto-keras ausprobiert, wie viel High-Level-Abstraktion es bietet und wie leicht es sich nutzen lässt.
Vielleicht entsteht der Eindruck, AutoML könnte Data Scientists ersetzen, sobald es „perfekt“ ist. Wirklich? Denk noch einmal nach. AutoML nimmt Data Scientists vor allem den iterativen Auswahlprozess des besten Modells ab. So bleibt mehr Fokus für das Wesentliche: die Daten. Dieses Interview mit Randy Olson liefert dazu spannende Einblicke. Unbedingt lesen – es motiviert. Wenn du je unsicher bist, was ML-Praktiker leisten, wirf einen Blick auf diesen Beitrag.
AutoML macht große Fortschritte. Ein Beispiel ist NAS (Neural Architecture Search) – ein Algorithmus, der automatisch nach optimalen Netzwerkarchitekturen sucht. Hier einige weiterführende Ressourcen mit State-of-the-Art-Anwendungen von AutoML:
- Design by Evolution: How to evolve your neural network with AutoML
- AutoML Challenge: A leap forward for machine learning competitions
- Google’s AI can create better machine-learning code than the researchers who made it
- Auto-Keras, or How You can Create a Deep Learning Model in 4 Lines of Code
Verwendete Referenzen:
- Auto-Keras, or How You can Create a Deep Learning Model in 4 Lines of Code
- AutoKeras: The Killer of Google’s AutoML
Wenn du tiefer in Deep Learning einsteigen willst, mach den DataCamp-Kurs „Deep Learning in Python“ und sieh dir unseren Kurs Introduction to Deep Learning in Python an.