Einführung in Machine Learning

Datum der Veröffentlichung

von Iavor Jelev

Künstliche Intelligenz ist zur Zeit ein heißes Thema. Es vergeht keine Woche, in der die Medien nicht von neuen Durchbrüchen oder Anwendungsbereichen berichten: Algorithmen, die Menschen in Spielen schlagen, selbstfahrende Autos, natürlichsprachige Kommunikation mit virtuellen Assistenten. Doch wie wird ein System intelligent? Oder anders gefragt: Wie funktioniert Maschinelles Lernen bzw. Machine Learning (ML)?

Wieso Maschinelles Lernen?

Ein System zu programmieren, das automatisiert Entscheidungen trifft, ist keine triviale Aufgabe. Nehmen wir ein uns allen bekanntes Problem: Spam-E-Mails erkennen. Wie würde man diese Aufgabe intuitiv bewältigen? Wir können uns zum Beispiel die Spam-Mails anschauen und die Wörter oder Phrasen identifizieren, die typischerweise nur in unerwünschten vorkommen. Wenn diese in einer eingehenden E-Mail gefunden werden, soll diese als Spam markiert werden, also der klassische Filter-Ansatz.

So kommt man zwar schnell auf Ergebnisse, doch man muss ständig neue Regeln programmieren, da neue Themen in den Spam-Mails auftauchen. Oder vielleicht haben die Betrüger neue Schreibweisen für bereits geblockte Begriffe benutzt, und unser Filter funktioniert nicht mehr. Auf lange Sicht ist also diese Lösung nicht effizient und mit viel manuellem Aufwand verbunden.

Wir haben also eine Lösung gefunden, doch scheitern langfristig an Details, da alles, was das System gelernt hat, von uns kommen muss. Um eine wirklich tragfähige Lösung zu haben, muss das automatisch passieren. Das System soll selbst besser werden - anhand der vorhandenen Daten. Es soll selbst “lernen”.

Was ist Maschinelles Lernen?

Eine häufig zitierte formelle Definition für maschinelles Lernen wurde von Tom M. Mitchell im Jahr 1997 gegeben:

A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P improves with experience E.

Nehmen wir diese Definition unter die Lupe in Bezug auf unser Spam-Mail-Beispiel. Wir haben Daten, die in zwei Kategorien aufgeteilt sind: Spam und Ham (unerwünscht und erwünscht). Die Aufgabe T wäre für uns, aus den vorgegebenen Daten die Wörter oder Phrasen zu identifizieren, die uns bei der Unterscheidung helfen werden. Das soll jedoch automatisch und nicht manuell geschehen. Wir können an der Stelle statistische Methoden nutzen, die wir hier nicht näher erläutern werden. Das Ergebnis von dieser Aufgabe T ist ein “Modell” - ein Regelwerk, das uns erlaubt, bei einer neuen E-Mail zu entscheiden, in welche Kategorie sie fällt.

Wenn wir eine Untermenge der E-Mails aus beiden Kategorien wählen, auf die das Ergebnis von T getestet werden kann, können wir P messen. Da wir wissen, was dabei herauskommen soll, können wir die Vorschläge des Modells automatisiert auf Korrektheit überprüfen, und wissen dann, ob ein Modell “besser” ist als ein anderes. Jetzt fehlt uns nur noch Erfahrung. Um diese zu sammeln, können wir die Daten für T zum Beispiel jedes Mal zufällig wählen. So können wir unterschiedliche Modelle generieren, die wir miteinander vergleichen können, um P zu optimieren (stets das Modell wählen, das bei den Testdaten die wenigsten Fehler gemacht hat).

Wir haben nun unsere manuelle Lösung in eine Lösung überführt, die mit maschinellem Lernen funktioniert. Unser Aufwand als Benutzer ist dabei darauf reduziert worden, dem Algorithmus jede neue Spam-E-Mail zu melden, die wir in unserem Postfach finden, so dass dieser sich neu trainieren kann.

Überwacht vs. nicht überwacht

In unserer Lösung für das Spam-Problem haben wir von einer bestimmten Kategorie des maschinellen Lernens Gebrauch gemacht: dem überwachten ML. Das bedeutet, dass wir dem Algorithmus geholfen haben - in diesem Fall, indem wir die Daten in zwei vorgegebenen Ergebniskategorien vorbereitet sowie sichergestellt haben, dass die Aufteilung der Dokumente auf die Kategorien korrekt ist.

Eine andere Kategorie des maschinellen Lernens kommt auch ohne Vorarbeit aus. Ein Beispielansatz aus dem unüberwachten maschinellen Lernen ist das Clustering: Gruppen und Struktur in einer vorgegebenen Datenmenge erkennen.

Um das anhand eines Beispiels zu erläutern, stellen wir uns die Kundendatenbank eines Online-Shops vor. Uns liegen Informationen über die Benutzer und deren Käufe vor. Mit Clustering können wir Ähnlichkeiten unter den Benutzern erkennen und Gruppen (Kundensegmente) bilden. Das kann uns zum einen helfen, unseren Kundenstamm besser zu verstehen, zum anderen aber auch Werkzeuge geben, um die Empfehlungen neuer Produkte für unsere Kunden zu optimieren. Wie bereits erwähnt ist bei diesem Ansatz keine Vorarbeit notwendig. Wir müssen allerdings die Ergebnisse manuell überprüfen, da wir erst einmal keinen Automatismus dafür haben.

Alles mit Machine Learning lösen?

Maschinelles Lernen, so toll es auch ist, ist keine magische Lösung für jedes beliebige Probem. Ein wichtiger Grund dafür ist: Fehlerfreies maschinelles Lernen gibt es nicht. Bei dem Prozess des Lernens geht es darum, Fehler zu minimieren. Diese in der Praxis komplett beseitigen zu wollen, ist utopisch.

Wann ist so ein Ansatz dann sinnvoll? Ein Beispiel wäre: Wenn die Aufgabe zu komplex ist. Sei es, dass die Lösung zu schwierig ist (Computer Vision), oder weil die Spezialfälle einer simplen Lösung zu viele sind, um sie manuell abzubilden (so wie in unserem Spam-Beispiel).

In der Praxis findet Maschine Learning oft Einsatz in Big Data. Das hat neben den genannten Gründen einen weiteren: Die Ergebnisse sind (bei gleichem Algorithmus) mit mehr Eingabedaten in der Regel besser. Bei kleineren Datenmengen oder Problemen, die leicht und fehlerfrei von Hand programmiert werden können, wäre maschinelles Lernen also nicht unbedingt der beste Ansatz.

Wir haben das Konzept von Machine Learning und zwei wichtige Kategorien daraus grob umrissen. Wenn man die Erwartungshaltung hat, ML funktioniere vollkommen selbstständig und fehlerfrei mit beliebigen Datenmengen, wird man schnell enttäuscht. Doch wenn man sich die Zeit nimmt, Vorverarbeitung der Daten und Optimierung bzw. Moderation der Ergebnisse zu betreiben, und wenn man geringe Fehlerquoten in Kauf nimmt, können komplexe Probleme, die sich anderweitig nicht (oder schwer) programmatisch lösen, mit überschaubarem Aufwand bewältigt werden.

Anderenfalls, um das Beispiel von oben aufzugreifen, sind zwei bis drei Spam-Mails am Tag mit deutlich weniger Aufwand manuell identifiziert.