Maschinelles Lernen

Algorithmen zur Erkennung nützlicher Muster in Datenmengen

Maschinelles Lernen ist ein Oberbegriff für die „künstliche“ Generierung von Wissen aus Erfahrung: Ein künstliches System lernt aus Beispielen und kann diese nach Beendigung der Lernphase verallgemeinern. Dazu bauen Algorithmen beim maschinellen Lernen ein statistisches Modell auf, das auf Trainingsdaten beruht und welches gegen die Testdaten getestet wird. Das heißt, es werden nicht einfach die Beispiele auswendig gelernt (siehe Überanpassung), sondern Muster und Gesetzmäßigkeiten in den Lerndaten erkannt. So kann das System auch unbekannte Daten beurteilen (Lerntransfer) oder aber am Lernen unbekannter Daten scheitern (Überanpassung; englisch overfitting).[1][2] Aus dem weiten Spektrum möglicher Anwendungen seien hier genannt: automatisierte Diagnose­verfahren, Erkennung von Kreditkartenbetrug, Aktienmarkt­analysen, Klassifikation von Nukleotidsequenzen, Sprach- und Texterkennung sowie autonome Systeme.

Das Thema ist eng verwandt mit „Knowledge Discovery in Databases“ und „Data-Mining“, bei dem es jedoch vorwiegend um das Finden von neuen Mustern und Gesetzmäßigkeiten geht. Viele Algorithmen können für beide Zwecke verwendet werden. Methoden der „Knowledge Discovery in Databases“ können genutzt werden, um Lerndaten für „maschinelles Lernen“ zu produzieren oder vorzuverarbeiten. Im Gegenzug dazu finden Algorithmen aus dem maschinellen Lernen beim Data-Mining Anwendung. Zu unterscheiden ist der Begriff zudem von dem Begriff „Deep Learning“, welches nur eine mögliche Lernvariante mittels künstlicher neuronaler Netze darstellt.

Das Schließen von Daten auf (hypothetische) Modelle wird als Statistische Inferenz bezeichnet.

Symbolische und nicht-symbolische AnsätzeBearbeiten

Beim maschinellen Lernen spielen Art und Mächtigkeit der Wissensrepräsentation eine wichtige Rolle. Man unterscheidet zwischen symbolischen Ansätzen, in denen das Wissen – sowohl die Beispiele als auch die induzierten Regeln – explizit repräsentiert ist, und nicht-symbolischen Ansätzen, wie neuronalen Netzen, denen zwar ein berechenbares Verhalten „antrainiert“ wird, die jedoch keinen Einblick in die erlernten Lösungswege erlauben; hier ist Wissen implizit repräsentiert.[3]

Bei den symbolischen Ansätzen werden aussagenlogische und prädikatenlogische Systeme unterschieden. Vertreter der ersteren sind ID3 und sein Nachfolger C4.5. Letztere werden im Bereich der induktiven logischen Programmierung entwickelt.

Algorithmische AnsätzeBearbeiten

Die praktische Umsetzung geschieht mittels Algorithmen. Verschiedene Algorithmen aus dem Bereich des maschinellen Lernens lassen sich grob in drei Gruppen einteilen:[4] überwachtes Lernen (englisch supervised learning), unüberwachtes Lernen (englisch unsupervised learning) und bestärkendes Lernen (engl. reinforcement learning).

Überwachtes LernenBearbeiten

Der Algorithmus lernt eine Funktion aus gegebenen Paaren von Ein- und Ausgaben. Dabei stellt während des Lernens ein „Lehrer“ den korrekten Funktionswert zu einer Eingabe bereit. Ziel beim überwachten Lernen ist, dass dem Netz nach mehreren Rechengängen mit unterschiedlichen Ein- und Ausgaben die Fähigkeit antrainiert wird, Assoziationen herzustellen. Ein Teilgebiet des überwachten Lernens ist die automatische Klassifizierung. Ein Anwendungsbeispiel wäre die Handschrifterkennung.

Es lassen sich noch einige Unterkategorien für Überwachtes Lernen identifizieren, die in der Literatur häufiger erwähnt werden:

  • Teilüberwachtes Lernen (englisch semi-supervised learning) Nur für einen Teil der Eingaben sind die dazugehörigen Ausgaben bekannt.[5]
  • Aktives Lernen (englisch active learning) Der Algorithmus hat die Möglichkeit, für einen Teil der Eingaben die korrekten Ausgaben zu erfragen. Dabei muss der Algorithmus die Fragen bestimmen, welche einen hohen Informationsgewinn versprechen, um die Anzahl der Fragen möglichst klein zu halten.[6]
  • Selbständiges Lernen (englisch self-training) Dieser Algorithmus kann in zwei wesentliche Komponenten eingeteilt werden. Die erste Algorithmuskomponente (Lehrer) leitet aus einem bestehenden gelabelten Datensatz weitere Datensätze mit Pseudolabeln her. Die zweite Algorithmuskomponente lernt nun aus dem erweiterten gelabelten Datensatz und wendet gefundene Muster für ihr eigenes Modell an.[7]

Unüberwachtes LernenBearbeiten

Der Algorithmus erzeugt für eine gegebene Menge von Eingaben ein statistisches Modell, das die Eingaben beschreibt und erkannte Kategorien und Zusammenhänge enthält und somit Vorhersagen ermöglicht. Dabei gibt es Clustering-Verfahren, die die Daten in mehrere Kategorien einteilen, die sich durch charakteristische Muster voneinander unterscheiden. Das Netz erstellt somit selbständig Klassifikatoren, nach denen es die Eingabemuster einteilt. Ein wichtiger Algorithmus in diesem Zusammenhang ist der EM-Algorithmus, der iterativ die Parameter eines Modells so festlegt, dass es die gesehenen Daten optimal erklärt. Er legt dabei das Vorhandensein nicht beobachtbarer Kategorien zugrunde und schätzt abwechselnd die Zugehörigkeit der Daten zu einer der Kategorien und die Parameter, die die Kategorien ausmachen. Eine Anwendung des EM-Algorithmus findet sich beispielsweise in den Hidden Markov Models (HMMs). Andere Methoden des unüberwachten Lernens, z. B. Hauptkomponentenanalyse, verzichten auf die Kategorisierung. Sie zielen darauf ab, die beobachteten Daten in eine einfachere Repräsentation zu übersetzen, die sie trotz drastisch reduzierter Information möglichst genau wiedergibt.

Des Weiteren unterscheidet man zwischen Batch-Lernen, bei dem alle Eingabe/Ausgabe-Paare gleichzeitig vorhanden sind, und kontinuierlichem (sequentiellem) Lernen, bei dem sich die Struktur des Netzes zeitlich versetzt entwickelt.

Außerdem unterscheidet man zwischen Off-line-Lernen, bei dem alle Daten gespeichert sind und somit wiederholbar zugreifbar sind, und On-line-Lernen, bei dem die Daten nach einmaligem Ausführen und Anpassen der Gewichte verloren gehen. Batch Training ist immer off-line, On-line-Training ist immer inkrementell. Inkrementelles Lernen kann jedoch on-line oder off-line erfolgen.[8]

Bestärkendes LernenBearbeiten

Das verstärkende Lernen ist ein Bereich des maschinellen Lernens, der sich mit der Frage beschäftigt, wie Agenten in einer Umgebung agieren sollten, um einen bestimmten Wert der kumulierten Belohnung zu maximieren.[9][10] Aufgrund seiner Allgemeingültigkeit wird dieses Gebiet auch in vielen anderen Disziplinen untersucht, z. B. in der Spieltheorie, der Kontrolltheorie, dem Operations Research, der Informationstheorie, der simulationsbasierten Optimierung, den Multiagentensystemen, der Schwarmintelligenz, der Statistik und den genetischen Algorithmen. Beim maschinellen Lernen wird die Umgebung normalerweise als Markov-Entscheidungsprozess (MDP) dargestellt. Viele Algorithmen des Verstärkungslernens verwenden Techniken der dynamischen Programmierung.[11] Verstärkungslernalgorithmen setzen keine Kenntnis eines exakten mathematischen Modells des MDP voraus und werden eingesetzt, wenn exakte Modelle nicht durchführbar sind. Verstärkungslernalgorithmen werden in autonomen Fahrzeugen oder beim Lernen eines Spiels gegen einen menschlichen Gegner eingesetzt.

SoftwareBearbeiten

  • Caffe ist eine Programmbibliothek für Deep Learning.
  • Deeplearning4j ist eine in Java programmierte Open-Source-Software, die ein künstliches neuronales Netz implementiert.
  • ELKI ist eine in Java programmierte Open-Source-Software mit Schwerpunkt auf unüberwachtem Lernen und mit Indexunterstützung zur Beschleunigung von Algorithmen.
  • GNU R ist eine auf vielen Plattformen verfügbare, freie Statistiksoftware mit Erweiterungen zum maschinellen Lernen (z. B. rpart, randomForest) und Data-Mining.
  • Keras bietet eine einheitliche Schnittstelle für verschiedene Backends, darunter TensorFlow, Microsoft Cognitive Toolkit (vormals CNTK) und Theano.
  • KNIME ist eine Open-Source-Datamining-, Workflow- und Data-Pipelining-Software.
  • Matlab ist eine proprietäre Software mit Bibliotheken und Benutzeroberflächen für maschinelles Lernen.
  • ML.NET ist eine freie Machine-Learning-Bibliothek von Microsoft für .NET-Sprachen. Bestandteil davon ist Infer.NET, das ein plattformübergreifendes Open-Source-Framework für statistische Modellierung und Online-Lernen darstellt.
  • OpenNN ist eine in C++ geschriebene Programmbibliothek, die ein künstliches neuronales Netz implementiert.
  • PHP-ML ist eine Library für maschinelles Lernen in PHP. Sie ist frei verfügbar in GitLab.
  • PyTorch ist eine auf maschinelles Lernen ausgerichtete Open-Source-Programmbibliothek für die Programmiersprache Python. Mit LibTorch steht auch eine native C++ API zur Verfügung.
  • RapidMiner ist eine operatorbasierte graphische Oberfläche für maschinelles Lernen mit kommerziellem Support, aber auch einer Community-Edition.
  • Scikit-learn benutzt die numerischen und wissenschaftlichen Open-Source-Python-Bibliotheken NumPy und SciPy.
  • Shogun ist eine Open-Source-Toolbox für Kernel-Methoden.
  • TensorFlow ist eine von Google entwickelte Open-Source-Software-Bibliothek für maschinelles Lernen.
  • WEKA ist eine auf Java basierende Open-Source-Software mit zahlreichen Lernalgorithmen.

Siehe auchBearbeiten

LiteraturBearbeiten

WeblinksBearbeiten

EinzelnachweiseBearbeiten

  1. Tobias Reitmaier: Aktives Lernen für Klassifikationsprobleme unter der Nutzung von Strukturinformationen. kassel university press, Kassel 2015, ISBN 978-3-86219-999-0, S. 1 (Google books).
  2. Lillian Pierson: Data Science für Dummies. 1. Auflage. Wiley-VCH Verlag, Weinheim 2016, ISBN 978-3-527-80675-1, S. 105 f. (Google books).
  3. Pat Langley: The changing science of machine learning. In: Machine Learning. Band 82, Nr. 3, 18. Februar 2011, S. 275–279, doi:10.1007/s10994-011-5242-y.
  4. ftp://ftp.sas.com/pub/neural/FAQ.html#questions
  5. Ralf Mikut: Data Mining in der Medizin und Medizintechnik. KIT Scientific Publishing, 2008, ISBN 978-3-86644-253-5, S. 34 (Google books).
  6. Paul Fischer: Algorithmisches Lernen. Springer-Verlag, 2013, ISBN 978-3-663-11956-2, S. 6–7 (Google books).
  7. Self-training with Noisy Student improves ImageNet classification. In: Arxiv. Abgerufen am 20. Dezember 2019 (englisch).
  8. ftp://ftp.sas.com/pub/neural/FAQ2.html#A_styles
  9. Richard S. Sutton: Reinforcement learning : an introduction. Second edition Auflage. Cambridge, Massachusetts 2018, ISBN 978-0-262-03924-6.
  10. Machine Learning: Definition, Algorithmen, Methoden und Beispiele. 11. August 2020, abgerufen am 31. Januar 2022.
  11. Marco Wiering, Martijn van Otterlo: Reinforcement learning : state-of-the-art. Springer, Berlin 2012, ISBN 978-3-642-27645-3.