Active Learning Pakete im Vergleichstest<br>

Active Learning Pakete im Vergleichstest

31.03.2020, Autor: Alexandre Abraham

Jedes ML-Projekt beginnt mit dem Erfassen und Importieren von Daten, doch leider findet man nicht immer Daten mit Labeln, die für die anstehende Aufgabe geeignet sind. Es kann sehr mühselig sein, die Daten selbst mit (den richtigen!) Labeln zu versehen – und hier kommt Active Learning ins Spiel.

Statt zufällig Stichproben herauszugreifen und mit Labeln zu versehen, verfolgen aktive Lernstrategien das Ziel, die nützlichsten Stichproben zuerst zu bearbeiten. Dazu gibt es viele Methoden, die auf unterschiedlichen Interpretationen der „Nützlichkeit“ basieren. Beim sogenannten Uncertainty Sampling werden beispielsweise die Stichproben zuerst bearbeitet, über deren Klassifizierung das Modell sich am wenigsten sicher ist. Bei dichtegewichteten Methoden wird zudem die Verteilungsdichte der Stichproben berücksichtigt, um zu verhindern, dass Ausreißer das entstehende Bild verzerren.
Als generelle Einführung in das aktive Lernen findet sich hier

Zum Einstieg in das Feld kann es nützlich sein, einige der bereits vorhandenen Implementierungen zu betrachten. Mit diesem Blogpost möchten wir einen allgemeinen (wenn auch unvollständigen) Überblick über verfügbare Pakete für das aktive Lernen geben, diese miteinander vergleichen und dabei einige Features der Pakete im Detail betrachten. Wir werden die einfachsten Ansätze vorstellen, die in jedem Paket enthalten sind, auf einige Aspekte der Programmierung eingehen und die neuesten Methoden kurz anreißen.


Die Anwärter

modAL ist das kleinste Paket. Es implementiert die gängigsten Samplingverfahren in Python-Funktionen und enthält zudem ein Wrapper-Objekt, das sie als Scikit-learn Estimator zugänglich macht. Ansätze, bei denen mehrere Klassifizierungsmethoden gemeinsam genutzt werden (Query by Committee) sind in modAL besonders stark vertreten.
Der größte Vorteil von libact ist die Strategie „Active Learning erlernen“. Dazu werden mehrere verfügbare Samplingstrategien in einem mehrarmigen Banditen kombiniert, um dynamisch den jeweils besten Ansatz zu finden. Libact wurde für eine hohe Leistung konzipiert und nutzt daher C als Programmiersprache. Infolgedessen kann die Installation kompliziert sein.

ALiPy ist vermutlich das Paket mit der größten Auswahl an Samplingverfahren, von denen die meisten in den Labs der wichtigsten Beteiligten entwickelt wurden.


Testprotokoll

Für die in diesem Beitrag vorgestellten Tests wurden zwei Datensätze verwendet:

1.    Ein synthetischer Datensatz erstellt mit sklearn.datasets.make_classification

  • 10 Klassen
  • 1.000 Stichproben
  • 20 aktiven Lernschritten
  • 20 Mustern pro Gruppe

2. Der unter sklearn.datasets.load_digits verfügbare MNIST-Datensatz mit

  • 10 Klassen
  • 1.797 Stichproben
  • 16 aktiven Lernschritten
  • 50 Mustern pro Gruppe

Beide Datensätze wurden in einen Training- und einen Testdatensatz aufgeteilt, die jeweils 50 % der Stichproben enthielten. Die im Folgenden aufgeführten Bewertungen sind Genauigkeitsbewertungen, die nur mit diesen Testdatensätzen gemessen wurden. Bei den Experimenten wurde das folgende Protokoll verwendet:

  • Jedes Experiment wurde 20 Mal (mit unterschiedlichen Startwerten oder Seeds) durchgeführt.
  • Der Startwert wurde zum Generieren der Daten in dem synthetischen Datensatz und zur Auswahl der ersten Mustergruppe in dem MNIST-Experiment genutzt.
  • Jede Kurve zeigt den Durchschnitt der Ergebnisse aller 20 Testläufe. Die Konfidenzintervalle sind 10 %- und 90 %-Quantile.
  • Das Modell nutzt ein scikit-learn SVC mit den Standardparametern: RBF kernel, C=1.0. Um sicherzustellen, dass unsere Ergebnisse Classifier-unabhängig sind, haben wir die Tests mit anderen Parametern und Classifiern wiederholt, wobei die Ergebnisse sich nicht signifikant voneinander unterschieden.

Unsicherheitsbasierte Methoden

Die Modellunsicherheit ist die naheliegendste Strategie für das aktive Lernen. Sie basiert auf dem intuitiven Verständnis, dass wir die meisten neuen Informationen für unser Modell aus den Mustern gewinnen können, über deren Klassifizierung wir uns am wenigsten sicher sind. Um diese Muster zu identifizieren, sehen wir uns die Klassifizierungswahrscheinlichkeit an.

Da es sich hierbei um gängige Strategien handelt und alle Pakete dieselben Definitionen nutzen, haben wir sie nicht näher untersucht, sondern nur für eine grundlegende Prüfung unserer Pipelines und unseres Protokolls genutzt.

Bei beiden Aufgaben (siehe Abbildung 1) schnitten die getesteten aktiven Lernstrategien besser ab als die zufällige Musterauswahl. Der Unterschied ist bei den synthetischen Daten größer; vermutlich weil die Aufgabe in diesem Experiment schwieriger war (doppelt so viele Klassen und doppelt so viele Muster).

Abbildung 1: Active Learning mit Smallest-Margin-Sampling-Auswahl für synthetische Daten und MNIST

Berücksichtigung der Datenverteilung durch Dichtegewichtung

Beim Active Learning geht es darum, mit Labeln versehene Daten bestmöglich zu nutzen. Doch auch Daten ohne Label enthalten Informationen (wie zum Beispiel die Verteilung der Stichproben). Diese Informationen werden typischerweise mit Methoden des unüberwachten oder teilüberwachten Lernens genutzt.

Eine häufig genutzte Annahme beim unüberwachten Lernen ist, dass die Wahrscheinlichkeit, dass zwei Stichproben zur selben Klasse gehören, zu ihrer Ähnlichkeit in Bezug auf eine bestimmte Distanzmessgröße proportional ist. Wenn das zutrifft, würden alle Stichproben in einem Cluster wahrscheinlich dasselbe Label erhalten und das ganze Cluster könnte durch eine der Stichproben repräsentiert werden.

Ziel des Active Learning ist es, eine Teilmenge der Trainingsdaten auszuwählen, die den ganzen Datensatz so gut wie möglich repräsentiert. Aus der oben erwähnten Annahme könnten wir schlussfolgern, dass Daten aus Bereichen mit hoher Datendichte den Datensatz besser repräsentieren.

Da es keine generelle mathematische Definition der Datendichte gibt, wurde für jedes Paket eine eigene Methode zu ihrer Berechnung ausgewählt:

  • ModAL definiert die Dichte einer Stichprobe als die Summe der Distanzen zu allen anderen Stichproben. Wir haben uns bei unseren Test allerdings an [2] orientiert, wo die Dichte als Summe der Distanzen zu Stichproben ohne Label definiert wird. Eine kleinere Distanz wird als höhere Dichte interpretiert. Wir haben in unseren Beispielen die Kosinus-Ähnlichkeit und den euklidischen Abstand genutzt.

  • ALiPy definiert die Dichte als durchschnittliche Distanz zu den 10 nächsten Nachbarn basierend auf [1]. Wir nehmen an, dass dieser Ansatz robuster ist als der von modAL, doch die Auswahl der 10 genutzten Nachbarn erscheint eher zufällig und ist für den Nutzer nicht einsehbar.

  • Libact schlägt einen ersten, auf K-Means und Cosinus-Ähnlichkeit basierten Ansatz vor, der dem von modAL ähnelt. In der Dokumentation von libact heißt es, der Ansatz basiere auf [2], doch die genutzte Formel weicht leicht von der in [2] ab (und die Dokumentation erklärt nicht, warum).

  • Libact bietet zudem eine zweite Methode, die auf [6] basiert. Bei dieser Methode werden die Daten geclustert und dann ein  Gaußsches Mischmodell (GMM) auf die Cluster aufgesetzt, um die globale Dichte durch eine Mischung aus Wahrscheinlichkeit und einer Bewertung jedes Punkts im Cluster mithilfe von pdf abzuschätzen. (Eine vollständige Beschreibung der Methode ist im Originaldokument enthalten.) Hinweis: Im ursprünglichen Ansatz wurden hierfür K-medoids verwendet, doch libact nutzt bislang ein K-Means.

Für uns wurde schnell deutlich, dass modAL die natürlichste und einfachste Definition nutzt. Dieser Ansatz ist allerdings nicht skalierbar. Libact und ALiPy nutzen anspruchsvollere, clusterbasierte Ansätze, die wahrscheinlich besser skalierbar sind. Die hardkodierten Parameter lassen allerdings Zweifel an der Generalisierbarkeit der Ansätze aufkommen.

Abbildung 2: Aktives Lernen mit dichtebasierter Samplingauswahl für synthetische Daten und MNIST

Als Erstes fällt auf, dass die zufällige Auswahl mindestens ebenso gut abschneidet wie jede der dichtebasierten Strategien. Da fragt man sich natürlich, ob wir es hier überhaupt mit guten Strategien zu tun haben! Tatsächlich kann die Konzentration auf Bereiche mit hoher Dichte ein System dazu zwingen, alle Datencluster zu betrachten. Gleichzeitig werden Stichproben aus der Mitte der Cluster als repräsentativ ausgewählt, doch Entscheidungsgrenzen verlaufen meist nicht durch die Clustermitte. Damit wird die auf Unsicherheit basierte Auswahl in gewisser Weise ausgebremst.

Bei dieser Aufgabe kam der GMM-Ansatz von libact der Leistung der zufälligen Auswahl am nächsten. Das könnte daran liegen, dass diese Methode robuster ist als die anderen – oder es könnte sein, dass ihr Verhalten dem der zufälligen Auswahl am ähnlichsten ist. (Letzteres würde bedeuten, dass die Methode möglicherweise nicht sehr nützlich ist.) Für eine definitive Antwort wären mehr Experimente mit anderen Aufgaben erforderlich.

Der euklidische Ansatz von modAL erscheint in beiden Experimenten als guter Kompromiss. ModALs cosinusbasierter Ansatz und der Ansatz von ALiPy sind bei den Tests mit dem synthetischen Datensatz weniger überzeugend, doch das kann an der Art liegen, auf die die Daten generiert wurden. Die anderen Ansätze schneiden schlechter ab und letztendlich muss man sagen, dass der Ansatz von ALiPy und der K-Means-basierte-Ansatz von libact bei keiner der beiden Aufgaben überzeugt haben. Es ist allerdings nicht auszuschließen, dass die Leistung durch eine Anpassung der hartkodierten Parameter verbessert werden könnte.

Außerdem ist erwähnenswert, dass die Leistung von modAL verdächtig niedrig ist, wenn weniger als 20 % des Datensatzes mit Labeln versehen sind. Das könnte darauf zurückzuführen sein, dass die Ansätze von libact und ALiPy clusterbasiert sind und daher dazu neigen, den ganzen Musterbereich zu erkunden, während die Methode von modAL sich auf die Bereiche mit der größten Dichte konzentriert.

Batch-Sampling-Prozesse

Mit der zunehmenden Nutzung von Deep Learning nahm das Trainieren von Modellen immer mehr Zeit und Rechenleistung in Anspruch. Infolgedessen gewinnt die Entwicklung von Methoden für Active Learning in Batchverarbeitung (statt wie bislang online) an Bedeutung.

Dazu sind jedoch Gruppen von Stichproben erforderlich und Untersuchungen haben gezeigt, dass Strategien, die die Stichproben für eine solche Gruppe einzeln und unabhängig voneinander auswählen, mitunter schlechtere Ergebnisse liefern als eine zufällige Auswahl. Stellen Sie sich beispielsweise vor, dass Sie Obst klassifizieren wollen und bereits zufällig einige Stichproben ausgewählt und mit Labeln versehen haben. Dabei ist Ihnen möglicherweise aufgefallen, dass es Ihrem Modell schwer fällt, Aprikosen von Pfirsichen oder Kokosnüsse von Passionsfrüchten zu unterscheiden. In diesem Fall würde ein unsicherheitsbasierter Auswahlmechanismus gezielt eine Gruppe von Stichproben heraussuchen, bei denen die Einordnung (zum Beispiel als Aprikose oder Pfirsich) besonders schwierig ist.

Wir vermuten, dass eine Batchmethode in dieser Situation einige Stichproben aus jedem der Problembereiche auswählen würde. Batchmethoden nutzen gewöhnlich eine Kombination aus Unsicherheitsbewertung und räumlichen Ansätzen (wie der oben erwähnten Dichtegewichtung):

  • ModAL bietet eine Methode für Active Learning im Batchmodus mit Ranking an, die Stichproben aufgrund einer Unsicherheitsbewertung auswählt, dabei aber auch versucht, die Distanz zu bereits mit Labeln versehenen Datenpunkten zu maximieren. Das „mit Ranking“ bedeutet, dass die Methode auf einem schrittweisen Prozess beruht, der bei jeder Auswahl berücksichtigt, welche Stichproben bereits ausgewählt wurden. Der Algorithmus wählt also zuerst eine Stichprobe aus, über deren Klassifizierung das Modell sich nicht sicher ist und das weit von den bereits mit Labeln versehenen Stichproben entfernt ist. Dann betrachtet es diese Stichprobe als mit einem Label versehen und wählt eine weitere Stichprobe aus. Dieser Prozess wird wiederholt, bis die gewünschte Anzahl von Stichproben ausgewählt wurde. Zuletzt wird eine teilweise Rangordnung der Stichproben etabliert.

  • Für libact haben wir dieselben beiden Methoden benutzt wie bereits im Abschnitt über die Dichtegewichtung hier und hier beschrieben. Genauer gesagt gestattete das Paket uns, den Dichte- und den Unsicherheitsansatz zu kombinieren und eine gewichtete Summe beider Bewertungen zu ermitteln. Das ist zwar streng genommen kein Batchsampling, doch es kommt diesem Ziel von allen mit diesem Paket angebotenen Methoden am nächsten.

  • ALiPy bietet eine Batchmethode an, die wir für diesen Vergleich aber nicht genutzt haben, weil sie nur für binäre Klassifizierungen geeignet ist.

Abbildung 3: Active Learning mit Batchsampling für synthetische Daten und MNIST

ModAL ging aus beiden Experimenten als Sieger hervor, wenn auch mit einem geringeren Abstand für MNIST. Wie schon in Abbildung 2 zeigte libact GMM eine sehr ähnliche Leistung wie eine zufällige Auswahl. Bei dem Test mit MNIST-Daten fiel auf, dass libact K-Means besonders schlecht abschnitt, wenn nur ein kleiner Teil der Daten mit Labeln versehen war. Das zeigt, wie sehr die Ergebnisse eines aktiven Lernverfahrens vom Datensatz abhängig sein können und wie schwierig es ist, die beste Samplingmethode für einen konkreten Anwendungsfall zu finden.

Metaverfahren für Active Learning

Alle drei Pakete enthalten anspruchsvollere Samplingverfahren, darunter auch Verfahren, bei denen Modelle definiert werden, die dann eine effektivere Stichprobenauswahl erlernen sollen. Diese Modelle nutzen jedoch sehr verschiedene Ansätze und lassen sich daher nicht sinnvoll miteinander vergleichen. Ein Benchmarktest würde über den Rahmen dieses Blogposts hinausgehen. Deshalb empfehlen wir Lesern, die mehr wissen möchten, die entsprechende Dokumentation.

Active Learning erlernen [4] (libact)
„Active Learning erlernen“ ist eine Strategie, mit der verschiedene Samplingmethoden bestmöglich genutzt und miteinander kombiniert werden sollen. Hinter den Kulissen wird ein als „mehrarmiger Bandit“ bezeichneter Ansatz genutzt, um die beste Methode für die vorliegende Situation zu finden. Der „Bandit“ nutzt eine nach Wichtigkeit gewichtete Korrektheitsbewertung als Belohnung, um die Testgenauigkeit objektiv zu bewerten. Das ist vor allem deshalb erwähnenswert, weil die meisten Ansätze die Reduzierung der Fehlerrate als Referenzbewertung zur Beurteilung der Leistung verschiedener Samplingmethoden nutzen.

Die größten Kosten entstehen bei diesem Ansatz durch die Bewertung des ganzen Datensatzes in jedem Schritt. In den meisten dokumentierten Experimenten wird mit dieser Methode die effizienteste Samplingstrategie gefunden. Ein offensichtlicher Nachteil ist jedoch, dass die Leistung nur selten besser ist als die der verschiedenen Ausgangsstrategien, die der Bandit miteinander vergleicht.

Abbildung 4: Originalergebnisse aus [4] Die Abbildungsnummern wurden mit den Abbildungen aus dem Originaldokument übernommen.

Active Learning aus Daten [5] (ALiPy)

Beim Active Learning aus Daten geht es darum, vorherzusagen, wie sehr die Fehlerrate eines gegebenen Modells für das aktive Lernen durch jede Stichprobe ohne Label reduziert werden kann. Dabei soll auch der aktuelle Zustand des Modells berücksichtigt werden, also das, was das Modell bereits aus Daten mit Labeln gelernt hat. Zur Einschätzung der Auswirkungen einer Stichprobe auf dieses Modell stützen die Autoren sich auf einige statistische Angaben über den Lerndatensatz, den inneren Zustand des Modells und die Vorhersagen des Modells für die Stichprobe.

Genauer gesagt nutzt die vorgeschlagene Implementierung einen Random Forest als Classifier und sagt die Fehlerreduzierung in Abhängigkeit von den folgenden Faktoren voraus:

  1. Aus dem Trainingsdatensatz extrahiertes Merkmal:
    • Anteil der positiven Label (z. B. >0) Das ist der einzige Indikator, den wir nicht wirklich verstanden haben, da 0 kein spezielles Klassenlabel zu sein scheint.
    • Die Anzahl der bereits mit Labeln versehenen Datenpunkte.

  2. Aus dem Modell extrahierte Merkmale:
    • Erste, grob geschätzte Bewertung
    • Standardabweichung der Wichtigkeit des Merkmals
    • Durchschnittliche Tiefe der Bäume im Random Forest

  3. Die Vorhersagen für jeden Baum in der aktuellen Stichprobe:
    • Die durchschnittliche Wahrscheinlichkeit für jede Klasse
    • Die Standardabweichung für jede Klasse über alle Bäume hinweg
    • Der Durchschnitt der Standardabweichungen aller Klassen für alle Stichproben

Das Modell kann mit Daten trainiert werden, die bereits mit Labeln versehen sind. ALiPy liefert aber auch vorab trainierte Modelle mit, die (laut ALiPy) für verschiedene Aufgaben gute Ergebnisse liefern. Ähnlich wie bei der in libact enthaltenen Methode ist das Ergebnis nur für relativ wenige, sehr spezifische Aufgaben besser als das anderer Methoden.

Abbildung 5: Ergebnisse aus [5] mit synthetischen Daten

Interoperabilität mit Scikit-learn

In den letzten Jahren ist Scikit-learn sowohl für Akademiker als auch für Praktiker in verschiedenen Branchen zur Standardlösung geworden. Ein Grund für diesen Erfolg ist wahrscheinlich das sorgfältig minimalistische Design [3], das ein breites Spektrum an Anwendungsbereichen abdeckt und dem Nutzer gleichzeitig ein hohes Maß an Flexibilität bietet.
Scikit-learn bietet dem Anwender eine Basisschnittstelle für Schätzungen, über die drei Methoden genutzt werden können:

•    __init__
Die Parameter eines Modells werden in einem Constructor definiert. Bei diesem Schritt werden keine datenspezifischen Informationen angegeben.

•    fit
Die Methode fit muss alle Informationen erhalten, die Scikit-learn benötigt, um das Modell zu erlernen. Dazu gehören neben den Trainingsdaten auch Labels (für überwachte Modelle) und andere datenspezifische Parameter.

•    predict
Diese Methode führt die Inferenz aus und gibt eine Labelvorhersage zurück. Alle weiteren Erkenntnisse, die für den Anwender nützlich sein könnten, werden in einem Merkmal in dem Objekt selbst gespeichert. Der Name des Merkmals endet mit einem Unterstrich.

Zu den Designzielen für Scikit-learn gehörte die maximale Wiederverwendbarkeit des Codes. Deshalb haben beispielsweise alle Methoden in einer Modellfamilie (überwacht, teilüberwacht, Clustering usw.) dieselbe Schnittstelle. Dadurch können die verschiedenen Modelle leicht ausgetauscht und verglichen werden.
Meiner Meinung nach ist modAL mit seiner minimalistischen Schnittstelle die beste Ergänzung zu Scikit-learn unter den drei hier beschriebenen Paketen für Active Learning. Strategien werden durch Funktionen repräsentiert, was akzeptabel ist. Ich würde mir jedoch ein Flag wünschen, das gesetzt werden kann, um mehr Informationen über die Ergebnisse zu erhalten. Ein solches Flag wäre zum Beispiel nützlich, wenn man die Unsicherheitswerte neben dem Sampling noch für etwas anderes (wie die Gewichtung der Stichproben) nutzen möchte. Derzeit ist das leider nicht möglich.
ALiPy-Objekte setzen die Philosophie einer minimalistischen gemeinsamen Schnittstelle um. Einige von ihnen erfordern jedoch, dass Daten über Constructors übergeben werden (was im Paradigma von Scikit-learn nicht verboten ist). Libact nutzt die Schnittstelle von Scikit-learn nicht, bietet aber selbst eine sehr ähnliche an. Libact wird mit eigenen Modellen und einem Wrapper für die Nutzung von Scikit-learn-Modellen geliefert. Erstaunlich ist, dass libact seine Berechnungen mitunter im Constructor einer Methode ausführt. So wird beispielsweise beim Density-weighted Uncertainty Sampling das K-Means direkt im Constructor ausgeführt. Eigenwillig ist auch, dass einige Klassen Bewertungen berechnen, aber das Flag return_scores nicht unterstützen, sodass der Anwender die Bewertungen nicht abrufen kann.


Experimentelle Frameworks

Die wichtigsten Fragen beim Active Learning sind:

  • Wann sollte man von der zufälligen Stichprobenauswahl für das Datenlabelling zum aktiven Lernen übergehen?
  • Wann sollte man damit aufhören?
  • Woher weiß man, ob Active Learning besser ist als die zufällige Stichprobenauswahl?

Bisher haben wir uns auf die Stichprobenauswahl beschränkt. Im Folgenden werden wir einen Blick auf die experimentellen Mechanismen werfen, die jedes der drei Pakete enthält.

Libact bietet kein experimentelles Framework (als solches) an. Es bleibt dem Anwender überlassen, den Kreis zum aktiven Lernen zu schließen. Das Paket enthält lediglich zwei einfache Hilfsmittel, die als Labeler bezeichnet werden: einen ideal Labeler, der eine perfekte Annotation simuliert, und einen manual Labeler, der Merkmale in einer matplotlib-Darstellung abbildet und dann ein Label als Eingabe verlangt. (Dieser Labeler ist also hauptsächlich für die Bilderkennung gedacht.)
ModAL stellt auch keinen Experimentierer bereit, doch das globale Objekt ActiveLearner unterstützt einfache Experimente mit den mitgelieferten Samplingverfahren. Da der richtige Umgang mit Indizes eine der wichtigsten Fehlerquellen beim aktiven Lernen ist, kann es sehr nützlich sein, diese Aufgabe mithilfe eines getesteten Pakets zu erledigen.

ALiPy bietet ein umfassendes experimentelles Framework an. Mit dem Objekt AIExperiment können Nutzer ganze Experimente durchführen. Zudem enthält ALiPy Komponenten, die man zum Aufbau eigener Experimente nutzen kann, darunter:

  • Tools zum Teilen von Datensätzen
  • Orakel verschiedener Art, mit denen die Belastbarkeit von Samplingmethoden ermittelt werden kann
  • Ein Cache-System zum Speichern von Zwischenergebnissen bei einem Experiment
  • Einen ganzen Satz einfacher Stoppkriterien, wie festgelegte Kosten, ein bestimmtes Verhältnis von Stichproben zu Labeln usw.
  • Einen Analysealgorithmus, der Rückschlüsse aus Experimenten zieht und Versuchsergebnisse in Diagrammen darstellt.


Fazit

Bei unseren Experimenten mit dem aktiven Lernen sind wir zu den folgenden Ergebnissen gekommen:

  • Es ist noch unklar, wann eine bestimmte Strategie für das Active Learning sich durchsetzen wird. Bislang ist es in vielen Fällen schwer, Strategien zu finden, die eine konsistent bessere Leistung bieten als die einfachsten (zum Beispiel unsicherheitsbasierten) Methoden. Selbst wenn anspruchsvollere Ansätze bessere Ergebnisse liefern, ist der Unterschied nicht immer groß genug, um den zusätzlichen Aufwand zu rechtfertigen.
  • Active Learning scheint von größerem Nutzen zu sein, wenn die Anzahl der Klassen groß ist. Bei der binären Klassifizierung haben wir keine signifikante Verbesserung bemerkt.
  • Wenn zu Testbeginn keine bereits mit Labeln versehenen Daten zur Verfügung standen, schnitt die zufällige Stichprobenauswahl (wie erwartet) am besten ab.
  • Keines der untersuchten Frameworks unterstützt den Nutzer bei der Auswahl der Samplingmethode (die für Einsteiger besonders kompliziert ist).


Aufgrund unserer Testergebnisse lauten unsere Empfehlungen:

  • ModAL bietet einfache Methoden und eine klare, unkomplizierte Schnittstelle. Wir würden dieses Paket Lesern empfehlen, die schnell Experimente mit aktivem Lernen durchführen möchten. Dieses Paket ist auch das einzige, das bayessche Methoden anbietet.
  • ALiPy enthält anspruchsvollere Methoden, doch diese schnitten in unseren Benchmarktests am schlechtesten ab. Wir würden ALiPy nur denjenigen empfehlen, die speziell eine der Methoden testen möchten, die nur in diesem Paket enthalten sind (wie beispielsweise das aktive Lernen im eigenen Tempo) oder die besonderen Wert auf ein funktionsreiches Framework für das aktive Lernen legen. Positiv zu erwähnen ist, dass man mit dem Objekt AIExperiment in wenigen Minuten einen Testaufbau einrichten kann.
  • Bei libact gehörte eine hohe Leistung zu den Designzielen und dieses Ziel wurde erreicht. Von der Nützlichkeit der komplexesten Ansätze in diesem Paket (wie beispielsweise dem GMM-basierten) sind wir allerdings nicht überzeugt.


______________________________________________________________

Quellen

[1] Ebert, Sandra, et al.: „Ralf: A reinforced active learning formulation for object class recognition“, 2012 IEEE Conference on Computer Vision and Pattern Recognition, IEEE, 2012.

[2] Settles, Burr: Active learning literature survey, University of Wisconsin-Madison Department of Computer Sciences, 2009.

[3] Buitinck, Lars, et al.: „API design for machine learning software: experiences from the scikit-learn project“, arXiv preprint arXiv:1309.0238 (2013).

[4] Hsu, Wei-Ning, et al.: „Active learning by learning“, Twenty-Ninth AAAI conference on artificial intelligence, 2015.

[5] Konyushkova, Ksenia et al.: „Learning active learning from data“, Advances in Neural Information Processing Systems, 2017.

[6] Donmez et al.: „Dual strategy active learning“, European Conference on Machine Learning, Springer, Berlin, Heidelberg, 2007.

Ein herzliches Dankeschön auch an Léo Dreyfus-Schmidt.

______________________________________________________________

Über den Autor

Alexandre Abraham ist Senior Research Scientist bei Dataiku

Alexandre got his Ph.D. in machine learning from Inria where he has processed massive unlabeled datasets to infer the underlying functional structure of the brain and used it to diagnose autistic spectrum disorders. Being an engineer as well as a researcher, he has decided to go back to the industry to work on human-in-the-loop machine learning. He spent 3 years at Criteo where he worked on their recommender systems. He has then decided to go back closer to research and is now focusing on active learning solutions at Dataiku.

Kontakt LinkedIn