ML in der Cloud? Teil 1: Machine Learning Basics
Machine Learning in der Cloud - in dieser Blogserie demonstriere ich, wie ein Modell zur Ziffernklassifizierung mithilfe von Azure Machine Learning trainiert und produktiv eingesetzt werden kann. Im ersten Beitrag widmen wir uns Machine Learning Grundlagen.
Mit Ziffernklassifizierung ist hier gemeint, dass ein ML-Modell handgeschriebenen Ziffern in einem Bild erkennen können soll. Die Blogartikel richten sich hauptsächlich an Anfänger:innen sowie fortgeschrittene Anfänger:innen. Die folgenden Blog-Artikel könnten aber auch für fortgeschrittene Machine Learning Engineers lesenswert sein, um im speziellen Azure Machine Learning kennenzulernen.
Die Blogserie ist in drei Teile gegliedert:
- ML in der Cloud? Teil 1: Machine Learning Basics
- ML in der Cloud? Teil 2: Azure ML Konzepte
- ML in der Cloud? Teil 3: Ziffernklassifizierung
Was ist Machine Learning?
Computer können Problemstellungen mithilfe von Algorithmen lösen. Für Probleme wie das Sortieren existieren Algorithmen, die garantiert immer eine korrekt sortierte Menge zurückliefern. Es gibt aber auch Problemstellungen, für die keine Algorithmen bekannt sind um immer das korrekte Ergebnis liefern zu können. Zum Beispiel, wenn man seriöse E-Mails von Spam oder Phishing Nachrichten zu unterscheiden versucht.
Was wir aber anstatt eines Algorithmus besitzen sind viele Stichproben von seriösen und unseriösen E-Mails. Auf Basis derer können die Unterschiede gelernt werden, um zukünftig erhaltene E-Mails klassifizieren zu können. Eine perfekte Unterscheidung ist zwar zugegebenermaßen weiterhin nicht möglich, aber eine ausreichend gute Annäherung reicht oft bereits aus. Diese Methode, von bekannten Stichproben auf unbekannte Stichproben zu schließen, wird Machine Learning genannt.
Learning Tasks
Aber was genau wollen wir überhaupt von den bekannten Stichproben lernen? Anhand von Learning Tasks lässt sich Machine Learning weiter in mehrere Untergruppen gliedern: Supervised, Unsupervised (und weitere). Bei Supervised Machine Learning besitzt man zusätzlich zu jeder Stichprobe einen erwarteten Output. Hier wird die Beziehung zwischen Stichproben und erwartetem Output gelernt, um bei neuen Stichproben diesen Output bestimmen zu können. Dieser Learning Task gilt als supervised, weil der erwartete Output bekannt ist. Je nach Output-Art wird zwischen Regression und Klassifizierung unterschieden. Bei Regression werden skalare Werte und bei Klassifizierung Klassen abgebildet. Ein Klassifizierungsproblem ist die zuvor diskutierte E-Mail-Unterscheidung, bei der wir neue E-Mails als Seriöse-E-Mail (Klasse 1) oder Unseriöse-E-Mail (Klasse 2) erkennen möchten. Ein Regressionsproblem wäre beispielsweise, wenn wir den Preis eines Autos auf Basis verschiedener Eigenschaften (Reichweite, durchschnittlicher Verbrauch, Treibstoffart, usw.) bestimmen möchten. Was Unsupervised Machine Learning davon unterscheidet ist, dass es hier keinen erwarteten Output in den Trainingsdaten mehr gibt. Das Ziel ist hier Gemeinsamkeiten und/oder Ausreißer unter den Stichproben zu finden. Neben Supervised und Unsupervised Machine Learning existieren zwar auch noch weitere Learning Tasks (z.B. Reinforcement Learning), da die Blogserie sich aber ausschließlich mit Klassifizerung beschäftigen wird, werden weitere Themen nicht näher behandelt.
Was sind Modelle und wieso ist Generalisierung wichtig?
Angenommen, wir möchten jetzt unser E-Mail-Klassifizierungsproblem lösen: was genau ist unser Ergebnis? Das Ziel ist es ja, ein Modell zu erhalten, dass die Unterschiede zwischen den E-Mail-Klassen kennt und basierend auf diesem Wissen neue E-Mails unterscheiden kann. Über die Jahre hinweg wurden mithilfe von verschiedensten mathematischen Konzepten viele allgemein anwendbare Machine Learning Modelle (z.B. neuronale Netze, Entscheidungsbäume, …) entwickelt, die für beliebige Datensets anwendbar sind. Jedoch performen diese Modelle je nach Datenset unterschiedlich gut. Wenn wir also dieses Klassifizierungsproblem lösen möchten, muss daher nur das Modell gewählt werden, das die Stichproben perfekt vorhersagen kann - oder?
So einfach ist es leider nicht, denn meistens beinhaltet das Datenset Rauschen und nur einen Teil der Einflussfaktoren des erwarteten Outputs, oder vielleicht sogar fehlerhafte Daten. Wenn wir einfach ohne weitere Vorkehrungen das Modell wählen würden, das die bekannten Stichproben perfekt vorhersagt, lernt unser Modell sehr wahrscheinlich auch das zufällige Rauschen und Fehler und kann dadurch nicht mit neuen Stichproben umgehen. Das Ziel ist daher nicht das Datenset zu interpolieren/extrapolieren, sondern ein Modell zu erhalten, das gut genug mit den verfügbaren Stichproben umgeht und generalisieren kann. Generalisieren können bedeutet hier, dass das Modell auch mit ungesehenen Stichproben gut genug funktioniert.
Train-Test Set Split
Aber ungesehene Stichproben - wie soll man die testen? Ganz einfach, in dem ein Teil des Datensets nicht beim Training und nur zum Testen verwendet wird. Dadurch können ungesehene Stichproben simuliert werden, da das Modell diese Daten noch nicht kennt. Dafür werden die Stichproben in zwei Datensets aufgeteilt - in das Train- und Test-Set. Das Train-Set wird beim Modell-Training verwendet, während das Test-Set der Bestimmung des tatsächlichen Fehlers dient.
Cross-Validation
Wir können nun zwar ungesehene Stichproben simulieren, jedoch reicht das Test-Set alleine noch nicht aus, um ein einzelnes Modell unter vielen wählen zu können. Denn je öfter ein Modell mit dem gleichen Trainings- und Test-Set evaluiert wird, desto wahrscheinlicher ist es, dass ein Modell nur durch Zufall gute Test-Set Ergebnisse liefert, aber eigentlich nicht auf weitere ungesehene Stichproben generalisieren kann.
In der Praxis wird daher oft Cross-Validation (CV) in Kombination mit Train-Test Set Split eingesetzt. Mit CV kann dann zuerst die beste Modell-Variante pro Modellart gewählt werden, wodurch die Gesamtanzahl der Modelle stark reduziert wid. Anschließend kann für diese besten Modelle der tatsächliche Fehler mithilfe des Test-Sets berechnet werden. Durch die Modell-Vorauswahl mit CV wird es wieder wahrscheinlicher, ein generalisierendes Modell zu erhalten - was mit dem Test-Set auch verifiziert werden kann. Wichtig dafür ist jedoch, dass das Test-Set dem CV-Schritt vorenthalten wird und nur das Train-Set für CV eingesetzt wird. Konzeptionell lassen sich daher mit CV und dem Test-Set unterschiedliche Fragen beantworten:
- CV: Welche neuronale Netzwerkarchitektur performt am Besten bei E-Mail-Klassifizierung?
- Test-Set: Wie geht mein neuronales Netzwerk mit ungesehenen Stichproben um und kann es auf diese generalisieren?
Aber wie genau funktioniert Cross-Validation? Zuerst werden aus der Ausgangsmenge mehrere neue CV Trainings- und Validierungs-Sets gebildet. Diese Transformation wird oft auch als k-fold bzw. k-fache CV bezeichnet, wobei k die gewählte Anzahl von Trainings- und Validierungs-Sets festlegt. Im folgenden Bild ist eine 3-fache CV illustriert, bei der zuerst die Ausgangsmenge auf drei disjunkte CV Validierungs-Sets aufgeteilt wird. Die zugehörigen CV Train-Sets werden dann aus den Elementen der Ausgangsmenge gebildet, die sich nicht im jeweiligen Validierungs-Set befinden. Achtung: Die CV Train-Sets sind nicht zu verwechseln mit dem zuvor diskutierten Train-Set bei Train-Test Set Split. Angenommen, wir wollen nun eine von vielen möglichen neuronalen Netzwerk-Architekturen mit 3-facher CV evaluieren, würden drei neuronale Netze mit dieser Architektur trainiert werden, eines pro CV Train-Set. Anschließend wird die Vorhersage-Leistung der Modelle auf dem zugehörigen CV Validierungs-Set ermittelt, wodurch wir für diese eine mögliche Netzwerkarchitektur drei Ergebnisse erhalten. Schlussendlich wird das neuronale Netz gewählt, welches im Durschnitt die besten Ergebnisse erziehlte.
Disjunkt: Zwei oder mehrere Mengen sind disjunkt, wenn diese keine gemeinsamen Elemente besitzen.
Als kleine Randnotiz: Oft werden in Machine Learning Anwendungen zusätzlich zu Train-Test Set Split und Cross-Validation noch zwei weitere Schritte angewendet: Pre-processing und Feature-Engineering. Bei Pre-processing geht es darum, die Datenqualität des Datensets durch Weiterverarbeitung zu erhöhen - z.B. durch das Entfernen fehlerhafter Daten oder Rauschreduktion. Bei Feature Engineering werden Teile der Daten verworfen und/oder neues Wissen aus den Daten erzeugt. Beide Maßnahmen haben zwar einen großen Einfluss auf die schlussendliche Modell-Leistung, eine gründlichere Diskussion würde jedoch hier den Rahmen sprengen. Außerdem sind beide Maßnahmen nicht unbedingt notwendig für unsere später umgesetzte Machine Learning Anwendung.
Zusammenfassung
Machine Learning ist ein Verfahren, bei dem etwas von bekannten Stichproben gelernt wird, um damit auf neue Stichproben schließen zu können. Was genau gelernt werden soll gibt der jeweilige Learning Task vor. Bei der Klassifizierung, einem Supervised Machine Learning Problem, soll ein Modell den Zusammenhang zwischen Stichproben und mehreren Klassen erlernen, um bei neuen Stichproben eine Klasse zuordnen zu können. Ein Klassifizierungsproblem ist zum Beispiel: Ist diese E-Mail seriös oder unseriös?
Da Datensets leider Rauschen und/oder nicht alle wichtigen Einflussfaktoren beinhalten, sind Modelle notwendig, die auf ungesehene Stichproben generalisieren können, anstatt die bekannten Daten einfach zu interpolieren. Damit ein solch generalisierendes Modell gefunden werden kann, können zwei Verfahren miteinander eingesetzt werden: Cross-Validation (CV) und Train-Test Set Split. Dabei wird zuerst ein Train- und Test-Set aus dem bekannten Datenset erstellt. Anschließend werden mithilfe von CV die besten Modelle pro Modellart ausgewählt. Schlussendlich kann für die bei CV gewählten Modelle der tatsächliche Fehler mithilfe des Test-Sets erhoben werden. Wichtig dabei ist, das für CV ausschließlich das Train-Set verwendet wird. Denn mit dem Test-Set wird simuliert, wie das Modell sich im Einsatz mit unbekannten Stichproben verhält.
Nachdem wir nun die notwendigen theoretischen Machine Learning Grundlagen besitzen, können wir uns im nächsten Blogeintrag mit den ersten Schritten in Azure Machine Learning beschäftigen.
Quellen:
- Ethem Alpaydin. Introduction to Machine Learning. 2nd ed. Adaptive Computation and Machine Learning Series. The MIT press, Dec. 4, 2009. 584 pp.