© jesadaphorn/shutterstock.com, © bsd/shutterstock.com
Machine Learning 101 mit ML.NET - Teil 1

Erste Schritte in ML.NET


Diese Artikelserie bietet einen vollständigen Leitfaden für .NET-Entwickler, um Machine Learning (ML) in einem .NET-Ökosystem zu nutzen. Wir verfolgen das Ziel, mit Hilfe von Microsoft ML.NET und Jupyter Notebooks von reinen Daten zu Vorhersagen zu gelangen. Im ersten Teil geht es um den Einstieg in ML.NET und Jupyter Notebooks. Wir werden sehen, dass man kein Data Scientist sein muss, um Machine Learning zu betreiben.

Wir beginnen mit der Frage: Was ist Machine Learning (ML) eigentlich genau? Zunächst ist es wichtig festzuhalten, dass durch ML die traditionelle Art und Weise der Programmierung, bei der Entwickler die einzelnen Schritte der Algorithmen entwerfen, keineswegs in Frage gestellt wird. Die alten Paradigmen behalten ihre Gültigkeit, doch gibt es wie immer Raum für Weiterentwicklung. ML ist auch alles andere als neu, doch ist dank des technologischen Fortschritts in Bezug auf schnellere CPUs und GPUs, Speicher und dezidierte Hardware sowie aufgrund des exponentiellen Wachstums der verfügbaren Daten nun die Zeit reif, ML auf breiter Basis in Softwareprojekten einzusetzen.

Schauen wir uns einige Fakten zum Thema Machine Learning an: Die traditionelle Programmierung gleicht einem Rezept zum Kuchenbacken, in dem alle Abläufe (Algorithmen) Schritt für Schritt festgelegt sind. ML hingegen funktioniert eher wie Kuchenbacken auf Basis einer Trial-and-Error-Methode. Anstatt zuvor die Schritte zu kennen, wie die Zutaten vermischt werden, werden viele Kuchenrezepte zusammen mit ihren Zutaten analysiert, klassifiziert, bewertet usw. Der menschliche Verstand macht übrigens genau dasselbe. Entweder nutzen wir ein zuvor erfundenes Rezept oder wir lernen während der Arbeit on the fly ein neues. Natürlich dürfen wir im Fall eines bereits existierenden Rezepts nicht vergessen, dass jemand das Rezept zuerst auf natürliche Weise on the fly erfinden musste.

Nehmen wir nun an, das Kuchenrezept sei ein Algorithmus. Auf der einen Seite ist die traditionelle Programmierung so, als würde man der Maschine beibringen, wie ein vom menschlichen Verstand erfundener Algorithmus auf Eingabedaten angewendet wird, um Ausgabedaten zu erhalten. Auf der anderen Seite ist ML das Erlernen eines künstlichen Algorithmus, der nur Eingabe- und Ausgabedaten verwendet – und dann muss der neu geschaffene Algorithmus mit den Eingabedaten ausgeführt werden, um Ausgabedaten zu erhalten.

Machine Learning ist kein Universalheilmittel für alle Arten von Problemen. Vielmehr müssen wir sehr sorgfältig auswählen, in welchen Szenarien wir ML sinnvoll einsetzen können. Allerdings gibt es viele Probleme, die auf traditionelle Weise nur sehr schwer oder auch völlig unmöglich zu lösen sind.

ML unter der Lupe

Entmystifizieren wir zunächst einmal Machine Learning ein wenig. Wie bereits erwähnt, ist maschinelles Lernen im Grunde genommen ein Algorithmus bzw. Programmcode, der aus Entscheidungen (if/else) besteht. Je mehr Entscheidungen wir haben, desto komplexer wird der Code. Während das für eine Maschine, die mit Dutzenden oder Hunderten von Variablen arbeitet, kein Problem darstellt, wird es für den menschlichen Verstand schnell schwer, die Kontrolle zu behalten, d. h., den Programmcode zu entwerfen oder zu warten. Zusammenfassend lässt sich sagen, dass Machine Learning ein Algorithmus ist, der von einer Maschine geschrieben und nicht vom menschlichen Verstand erfunden wurde.

Das ist keine triviale Angelegenheit. Der von der Maschine entworfene Algorithmus ist eher eine Annäherung zur Lösung eines Problems, weshalb seine Genauigkeit mehr oder weniger präzise ist. Mit der menschlichen Intuition verhält es sich genauso. Sieht man im Dschungel einen Schatten, der auf einen zugelaufen kommt, gibt man sich mit einer 80-prozentigen Wahrscheinlichkeit zufrieden, dass der Schatten ein Tiger oder ein Feind ist, und rennt um sein Leben. Später kann man immer noch überprüfen, ob das der Wahrheit entsprach oder nicht. Bei der traditionellen Programmierung ist das für gewöhnlich nicht der Fall.

ML ist nicht einmal schnell, weil der Lernprozess viel Zeit in Anspruch nimmt. Je mehr Daten man für das Training verwendet, desto länger dauert der Trainingsprozess. Lassen Sie sich hier nicht verwirren, denn das Training des Modells ist etwas völlig anderes als die Nutzung des Modells. Das Konsumieren des Modells ist viel schneller, genau wie das Ausführen eines regulären Algorithmus. Andererseits ist ein Modell für maschinelles Lernen agil: Denken Sie nur an den Aufwand, der bei der traditionellen Programmierung für das Neuschreiben komplexer Algorithmen betrieben wird. Ein Machine-Learning-Modell – und sein Algorithmus – wird durch erneutes Trainieren neu geschrieben.

Machine Learning ist so gut wie die verwendeten Daten, d. h. ein schlechter Datensatz führt zu einem schlechten Machine-Learning-Modell. Nun könnte man sich fragen, weshalb wir dann ML brauchen. Die Antwort ist, dass ML eine Möglichkeit darstellt, den auf dem Lernen basierenden Teil unserer menschlichen Intelligenz zu modellieren, die Erfahrungen, die Intuition usw. zu übertragen. Deshalb hilft uns ML, Maschinen „menschlicher“ zu machen.

Ist Microsoft ML.NET nur ein weiteres ML-Framework?

Wenn man an Data Science und Machine Learning denkt, führt die Programmiersprache Python das Feld an. Viele der bestehenden Frameworks wie T...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang