›   Maschinelles Lernen: Konzepte, Methoden, Tools

Durch die verstärkte Internetnutzung und die Digitalisierung in der Industrie sind riesige Datenspeicher entstanden, die als Basis für lernende Systeme verwendet werden können. Der Bedarf, aus den schnelllebigen und semi-strukturierten Daten (Texte, Sprache, Bilder) sinnvolle Informationen zu extrahieren und Prognosen zu erstellen, hat zur Weiterentwicklung der Methoden, Sprachen und Frameworks für Maschinelles Lernen geführt. Im Folgenden geben wir eine vereinfachte Übersicht über die wichtigsten Methoden und Tools des Maschinellen Lernens, sowie Hinweise über die Verwendung der elab2go-Demonstratoren, die diese illustrieren.

Motivation

Maschinelles Lernen erhält dank bahn­brechender Entwicklungen in den letzten Jahren viel Beachtung in Forschung, Lehre und Medien. Doch was steckt hinter dem Hype, inwieweit ist er gerechtfertigt?

Die Anwendungen des Maschinellen Lernens im Internet-Bereich (Suchmaschinen, Soziale Medien, Persönliche Assistenten) sind inzwischen etabliert, die industriellen Anwendungen (Predictive Maintenance, Autonomes Fahren) noch eher in der Anfangsphase und weniger bekannt. Welche Einsatzmöglichkeiten für Maschinelles Lernen gibt es in der Industrie, wie aufwendig ist die Einführung, lohnt sich der Einsatz?

Um diese Fragen zu beantworten, ist ein grundlegendes Verständnis der Konzepte, Methoden und Tools des Maschinellen Lernens erforderlich.

Übersicht

Der Übersichts-Artikel ist in fünf Abschnitte gegliedert, die jeweils auf weiterführende elab2go-Demos verweisen.

  1. Was ist Maschinelles Lernen?

  2. Ziele und Anwendungen

  3. Historische Entwicklung

  4. Methoden und Algorithmen

  5. Sprachen und Frameworks für Maschinelles Lernen

Was ist Maschinelles Lernen?

Maschinelles Lernen (engl. Machine Learning) ist ein Teilgebiet der Künstlichen Intelligenz, das es Systemen ermöglicht, auf Basis von Trainingsdaten automatisch zu lernen und hinzuzulernen. Maschinelles Lernen befasst sich mit der Entwicklung lernfähiger Systeme und Algorithmen, und verwendet dabei Konzepte und Methoden der Statistik und der Informationstheorie. Verwandte Disziplinen sind Pattern Recognition, die Erkennung bestehender Muster in Daten, mit Anwendungen in der Sprach- und Bilderkennung, und Data Mining, die Erkennung neuer Querverbindungen in großen Datenbeständen, mit Anwendungen in Datenbanksystemen, speziell Big Data. Das Maschinelle Lernen bietet eine vereinheitlichte allgemeine Beschreibung existierender Lernverfahren, zu denen unter anderem Entscheidungsbaum-Lernen, Lernen mit Hilfe Künstlicher Neuronaler Netzwerke oder Bayessches Lernen gehören.

Eine formale Definition des Machine Learning lautet: "Eine Maschine lernt aus der Erfahrung E hinsichtlich einer Klasse von Aufgaben T und dem Performance-Maß P, falls die Performance P hinsichtlich T mit E sich verbessert." [Tom Mitchell, Machine Learning, 1997]

Deep Learning ist ein jüngeres Forschungsgebiet des maschinellen Lernens, das sich mit komplexen Algorithmen beschäftigt, insbesondere neuronale Netzwerke mit vielen verdeckten Schichten, die durch ihren Aufbau der Funktionsweise des menschlichen Gehirns ähnlicher sind und dadurch schwierigere Probleme lösen können.

Ziele und Anwendungen

Machine Learning-Modelle und Algorithmen haben im weitesten Sinne das Ziel, aus Input-Daten sinnvolle Zusammenhänge zu erkennen und daraus Regeln abzuleiten. Z.B. Vorhersagen treffen, Trends erkennen, Daten nach bestimmten Kriterien gruppieren.
Anwendungsgebiete sind:

Historische Entwicklung

Maschinelles Lernen hat seit seinen Anfängen um 1950, als die ersten künstlichen neuronalen Netzwerke entwickelt wurden, mehrere Auf-und-ab-Phasen erlebt. Klassisches datenzentrisches Maschinelles Lernen ist seit 1990 eine Disziplin der Datenanalysten und Statistiker. Seit ca. 2010 hat Deep Learning die Forschung beflügelt und zu einem neuen Hype geführt. Heute wird Angewandtes Maschinelles Lernen verstärkt auch von Informatikern und Ingenieuren betrieben. Meilensteine der letzten Jahre sind:

Methoden und Algorithmen

Die Methoden und Algorithmen des Maschinellen Lernens können, wie unten abgebildet, nach Art des Lernens grob in zwei Kategorien, "Überwachtes Lernen" und "Unüberwachtes Lernen" eingeteilt werden (weitere Varianten sind bestärkendes Lernen, semi-überwachtes Lernen etc.), sowie nach Funktionsweise bzw. Art der Modellbildung in:

Die Abbildung "Methoden des Maschinellen Lernens" zeigt eine Übersicht der wichtigsten Methoden, gruppiert nach Art des Lernverfahrens.



Beim überwachten Lernen liegt für jeden Datensatz der Input-Daten eine Bewertung vor, d.h. die Daten sind schon in Kategorien bzw. Klassen unterteilt. Der Ablauf ist wie folgt: Die Input-Daten werden in Trainingsdaten und Testdaten unterteilt. Auf Basis der Trainingsdaten wird mit Hilfe eines passenden Algorithmus ein Vorhersagemodell erstellt, dessen Güte mit Hilfe von Performance-Kennzahlen ermittelt wird. Der Trainingsprozess wird solange wiederholt, bis das Modell eine gewünschte Performance erreicht. Danach kann es für die Vorhersage auf neuen Datensätzen verwendet werden.

Beim unüberwachten Lernen liegen für die Input-Daten keine Bewertungen vor, d.h. das Lernverfahren muss ein Modell ohne Zielvorgaben erstellen, indem es Muster in den Daten erkennt. Ein anschauliches Beispiel sind Clusteranalysen, ein Verfahren, mit dessen Hilfe man in einem Datensatz Gruppen ähnlicher Beobachtungen ("Cluster") identifizieren kann. Die Clusterbildung kann mit unterschiedlichen Algorithmen umgesetzt werden. Zwei der verbreitetsten Verfahren sind K-Means-Clustering und hierarchisches Clustering.

Der Entscheidungsbaum ist ein intuitiv nutzbares Klassifikationsmodell, das für den Einstieg besonders geeignet ist, da es eine Visualisierung der Klassifikation bzw. der hierarchisch aufeinanderfolgenden Entscheidungen ermöglicht. Ein Entscheidungsbaum besteht aus einer Wurzel, Kindknoten und Blättern, wobei jeder Knoten eine Entscheidungsregel und jedes Blatt eine Antwort auf die Fragestellung darstellt. Um eine Klassifikation eines einzelnen Datenobjektes abzulesen, geht man vom Wurzelknoten entlang des Baumes abwärts. Bei jedem Knoten wird ein Merkmal abgefragt und eine Entscheidung über die Auswahl des folgenden Knoten getroffen. Dies wird so lange fortgesetzt, bis man ein Blatt erreicht. Das Blatt entspricht der Klassifikation.

Beispiel: Entscheidungsbaum

Der Entscheidungsbaum für unser Mini-Beispiel gibt z.B. eine Antwort auf die Frage, bei welcher Kombination von Werten für die Merkmale temp und druck das das Gerät ausfallen wird.

Baum aus dem ID3

Interpretation

Als Eingabe benötigt der Baum eine Beobachtung, d.h. eine Kombination von Merkmalen, z.B. {temp=hoch, druck=hoch}.

Wir fangen bei der Wurzel an und wenden die Regeln des Baumes an, wobei an jedem Knoten ein Attribut des Baumes abgefragt wird. Erste Frage: ist temp hoch oder normal? temp ist hoch, also gehen wir nach links. Zweite Frage: Ist druck hoch oder normal? druck ist hoch also gehen wir nach links. Hier haben wir die Eingabe abgearbeitet und sind an einem Blatt angekommen. Die Antwort lautet: ja, d.h. bei dieser Eingabe tritt ein Ausfall ein.



Mehr zu Entscheidungsbäumen: Demo2 ... Demo-PY4

Wir verwenden als Anwendungsfall für die Klassifikation mit Hilfe eines Entscheidungsbaum-Modells einen Automobildatensatz, der in allen Demos des Predictive Maintenance-Zyklus verwendet wird: eine csv-Datei automotive_data.csv mit 136 Beobachtungen. Jede Beobachtung bzw. Zeile hat insgesamt 24 Spalten, von denen 22 Spalten Sensorwerte enthalten und die Merkmale der Datenanalyse darstellen. Zielvariable ist die Spalte "Ausfall". Die Fragestellung lautet: "Bei welcher Kombination von Merkmalen tritt ein Ausfall ein?". Dies entspricht einem Klassifikationsproblem mit zwei Klassen, nämlich der Klasse "Ausfall=ja" und der Klasse "Ausfall=nein".

Die Ausfall-Prognose für den Automotive-Datensatz mit Hilfe des Entscheidungsbaum-Verfahrens wird mit Hilfe verschiedener Sprachen und Tools veranschaulicht:



Künstliche Neuronale Netze sind Machine Learning-Algorithmen bzw. Systeme, die den neuronalen Prozessen des Gehirns nachempfunden sind und für Klassifikations-, Prognose- und Optimierungsaufgaben verwendet werden. Ein Künstliches Neuronales Netz besteht aus Neuronen, d.h. Knoten bzw. Verarbeitungseinheiten, die durch gerichtete und gewichtete Kanten verbunden und in Schichten angeordnet sind (Eingabeschicht, versteckte Schichten und Ausgabeschicht). Eine Kante von Neuron i zu Neuron j hat das Gewicht wi,j, die die Stärke der Verbindung zwischen den Neuronen angibt. Die Eingabedaten werden innerhalb des Netzes von den Neuronen über Aktivierungsfunktionen verarbeitet und das Ergebnis wird bei Überschreiten eines Schwellwertes an die Neuronen der nächsten Schicht weitergegeben.
Die Eingangsgrößen und die Gewichte einer Schicht werden als Matrizen dargestellt. Die Berechung der Ausgangsgröße eines Neurons ist die Anwendung der Aktivierungsfunktion F auf das Produkt der Eingangsgrößen-Matrix mit der Gewichts-Matrix Y = F(X · W).

Der Aufbau bzw. die Topologie eines künstlichen neuronalen Netzes wird bestimmt durch die Anzahl der Schichten, durch die Richtung, in der das Netz durchlaufen werden kann, durch die Anzahl der Neuronen in jeder Schicht, und durch die verwendeten Aktivierungsfunktionen.

Beispiel: Feedforward-Netz für Ziffernerkennung

Das abgebildete neuronale Netz ist ein Feedforward-Netz mit drei Schichten, das häufig in Lehre und Forschung als erstes Beispiel zum Erlernen und Testen von künstlichen neuronalen Netzwerken verwendet wird. Mit Hilfe dieses neuronalen Netzes können Probleme aus dem Bereich der Bilderkennung (Ziffernerkennung in handgeschriebenen Texten) gelöst werden. Es ist in der Lage, aus Grauton-Bildern der Größe 28x28 Pixel, die handschriftliche Ziffern darstellen, die korrekte Ziffer zu erkennen.

Feedforward-Netz

Interpretation

Ein Bild der Größe 28x28 Pixel wird durch insgesamt 784 Pixel beschrieben. Die 784 Pixel bzw. ihre Grautöne (angegeben durch einen Wert zwischen 0=schwarz und 255=weiß) bilden die Eingangswerte des künstlichen neuronalen Netzes. Die Anzahl der Ausgangsknoten ist gleich der Anzahl der möglichen Ziffern von 0 bis 9, also 10. Das neuronale Netz löst ein Klassifikationsproblem, nämlich die Zuordung der Eingabe zu einer der Klassen 0, 1, 2, ... oder 9.

Als Trainingsdaten werden die ca. 60.000 Bilder der MNIST-Datenbank verwendet, die man in Frameworks wie Keras und Tensorflow auch direkt laden kann.



Mehr zu Neuronalen Netzwerken: Demo-PY5

Demo-PY5 zeigt, wie ein "tiefes" Künstliches Neuronales Netz mit mehreren versteckten Long Short-Term Memory (LSTM)-Schichten trainiert, validiert und damit eine Prognose über die zukünftige Entwicklung der Stromverbrauchsdaten erstellt wird. Die Daten werden in der interaktiven, webbasierten Anwendungsumgebung Jupyter Notebook analysiert.



Eine Clusteranalyse ist ein Verfahren des maschinellen Lernens, mit dessen Hilfe man in einem Datensatz Gruppen ähnlicher Beobachtungen ("Cluster") identifizieren kann.
Die Clusterbildung kann mit unterschiedlichen Algorithmen umgesetzt werden. Zwei der bekanntesten Verfahren sind K-Means-Clustering und hierarchisches Clustering.

Beispiel: Clusteranalyse

Die Clusteranalyse aus unserem Mini-Beispiel beantwortet die Frage, ob gewisse Kombinationen aus Temperatur und Luftfeuchtigkeit unterschiedlichen Clustern wie z.B. "behaglich", "zu trocken" oder "zu feucht" zugeordnet werden können.

Clusteranalyse

Interpretation

Der Raumklima-Datensatz enthält 15 Beobachtungen / Messungen zur Temperatur (in Grad Celsius) und der Luftfeuchtigkeit (in %). Je nach Kombination aus Temperatur und Luftfeuchtigkeit wird das Raumklima als "behaglich", "zu trocken" oder "zu feucht" empfunden.

Die Anzahl der möglichen Cluster (hier: 3) kann mit Hilfe eines Streudiagramms herausgefunden und visualisiert werden. Mit Hilfe des K-Means-Clustering werden die Zentren der Cluster und die Zuordnungen der einzelnen Beobachtungen zu den Clustern herausgefunden. Die Beobachtung Feuchte = 21, Temperatur = 13 liegt z.B. im Cluster "zu trocken" mit Zentrum (25, 15).



Mehr zu Clusteranalysen: Demo-PY3

Demo-PY3 zeigt, wie eine Clusteranalyse mit Hilfe der Python-Bibliothek scikit-learn für maschinelles Lernen durchgeführt wird. Ein Datensatz zum Raumklima in Abhängigkeit von Luftfeuchtigkeit und Temperatur dient dabei als Anwendungsbeispiel. Die Daten werden in der interaktiven, webbasierten Anwendungsumgebung Jupyter Notebook analysiert. Im letzten Schritt erfolgt die Datenvisualisierung und die Zuordnung zu den Clustern mit Hilfe der Bibliothek Matplotlib.

Sprachen und Frameworks für Maschinelles Lernen

Für die Entwicklung eines Lernenden Systems mit Machine Learning-Algorithmen werden aktuell im Wesentlichen drei Sprachen mit den dazu passenden Entwicklungsumgebungen verwendet, die Programmbibliotheken mit vergleichbarer Funktionalität anbieten: R, Python, MATLAB.
Ein Klassifikationproblem kann mit Hilfe eines Entscheidungsbaum-Modells in jeder der drei Sprachen umgesetzt werden. Die Unterschiede bestehen darin, mit welchem Algorithmus der Entscheidungsbaum in der jeweiligen Sprache umgesetzt ist, welche Konfigurationsparameter eingestellt werden können, wie gut die Visualisierung ist. In R wird das Klassifikationsmodell mit Hilfe der Funktion rpart erstellt und die Vorhersage bzw. Klassifikation mit Hilfe der Funktion predict, die beide zu dem rpart-Packet gehören. In Python werden die Methoden fit und predict der Klasse sklearn.tree.DecisionTreeClassifier verwendet, die Visualisierung des Entscheidungsbaums erfolgt entweder mit Hilfe der sklearn-Funktion plot_tree, oder mit Hilfe von graphviz.

Weitere Tools wie z.B. RapidMiner bieten spezialisierte Oberflächen für Endanwender ohne Programmierkenntnisse, die die Verfahren des maschinellen Lernens einsetzen wollen.

R und RStudio: "Die klassische Lösung"

R ist eine freie Programmiersprache für statistische Berechnungen und Grafiken. Sie wurde 1992 von den Statistikern Ross Ihaka und Robert Gentleman an der Universität Auckland für Anwender mit statistischen Aufgaben neu entwickelt und ist auf UNIX-Plattformen, Windows and MacOS lauffähig. R ist eine Open Source-Lösung und kann somit kostenlos eingesetzt werden.
R wird bevorzugt von Datenanalysten in Offline-Szenarien eingesetzt.

R ist eine Standardsprache für statistische Problemstellungen sowohl in der Wirtschaft als auch in der Wissenschaft. Weshalb wir R als "klassisch" bezeichnen? Weil R einen klaren Fokus auf Statistik und Datenanalyse hat, im Unterschied zu Python, was eine Programmiersprache für den allgemeinen Einsatz ist, oder MATLAB, das allgemeiner auf numerische Verfahren und Simulation ausgerichtet ist.

Da der Quellcode öffentlich ist, bietet R die Möglichkeit, schnell neue Pakete zu entwickeln und zur Verfügung zu stellen. Die kostenlosen und online verfügbaren Pakete erweitern das Anwendungsfeld von R auf viele Fachbereiche. Die internen Dokumentationen und auch die Foren, die sich mit der Anwendung von R befassen, bieten dem Benutzer die Möglichkeit, die Funktionalität von R leicht zu erfassen und anzuwenden.

Python: "Die innovative Lösung"

Python (entwickelt um 1991 von Guido van Rossum) ist aktuell eine der meistgenutzten Programmiersprachen, die wegen ihres einfachen Zugangs zur Programmierung von vielen Einsteigern genutzt wird. Weshalb wir Python als "innovativ" bezeichnen? Weil Python einerseits eine Programmiersprache für den allgemeinen Gebrauch ist, mit der man Desktop-Clients und Webanwendungen oder auch eingebettete Systeme entwickeln kann, andererseits jetzt als spezialisierte Programmiersprache für Datenanalyse bekannt und im Einsatz ist. Das Python-Ökosystem entwickelt sich sehr dynamisch und Python wird in den letzten Jahren verstärkt im Umfeld der Datenanalyse und des Machine Learning verwendet, häufig in Kombination mit der Plattform Anaconda (für Anwendungs- und Paketverwaltung) und Spyder oder VS Code oder Jupyter Notebook als Entwicklungsplattform. Für die Verwendung von Python für Datenanalyse und Softwareentwickung sprechen eine Vielzahl von Gründen:

Die einfache Verwendung der kostenlosen Python-Programmpakete für Datenverwaltung, -Modellierung und -Analyse Numpy, Pandas, Scikit-Learn, Keras und Tensorflow machen Python zu einer attraktiven Alternative für spezialisierte Datenanalyse-Tools wie RStudio oder MATLAB Statistics and Machine Learning Toolbox.

MATLAB: Die "enterprise" Lösung

Die MATLAB Software des US-amerikanischen Unternehmens MathWorks wird in der Industrie und in Forschungseinrichtungen viel für numerische Simulation sowie Datenerfassung, Datenanalyse und -auswertung eingesetzt. Weshalb wir MATLAB als "enterprise" bezeichnen? Weil es eine kommerzielle Lösung ist, die ihren Preis hat, und dementsprechend in Unternehmen (Industrie, z.B. Maschinenbau) eingesetzt wird, die die professionelle Umsetzung und den Support zu schätzen wissen. Für verschiedene Anwendungsgebiete stellt Mathworks Erweiterungspakete bereit, die sogenannten Toolboxen. Für eine Datenanalyse kann z.B. die Statistics and Machine Learning Toolbox eingesetzt werden, sowie der Live Script Editor, um ein benutzerfreundliches und interaktives Skript zu erstellen.

Mit Hilfe der Funktionen und Apps der MATLAB Statistics and Machine Learning Toolbox können viele Standardverfahren des Machine Learning durchgeführt werden, Klassifikation und Regression, mit Entscheidungsbäumen oder Neuronalen Netzwerken, Clusteranalysen etc.

Autoren, Tools und Quellen

Autoren:
 Prof. Dr. Eva Maria Kiss
 M.Sc. Anke Welz

Tools:

  1. Python
  2. Anaconda
  3. Jupyter Notebook
  4. R, RStudio
  5. MATLAB Statistics and Machine Learning Toolbox
  6. RapidMiner

Quellen und weiterführende Links:

  1. Alpaydın E (2019) Maschinelles Lernen, De Gruyter Studium.
  2. Hochreiter, Sepp & Schmidhuber, Jürgen. (1997). Long Short-term Memory. Neural computation. 9. 1735-80.
  3. Goodfellow Ian, Bengio Yoshua, Courville Aaron (2017) Deep Learning. Adaptive Computation and Machine Learning Series. MIT Press Ltd, Cambridge, Mass.
  4. Mitchell, Tom (1997) Machine Learning.
  5. Yann LeCun, Yoshua Bengio, Geoffrey Hinton (2005) Deep Learning. Nature, vol 521.
  6. Russell, Stuart J., Norvig, Peter (2014) Artificial intelligence. A modern approach.