Kapitel 4. Trainingsdaten
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
In Kapitel 3 haben wir den Umgang mit Daten aus der Systemperspektive behandelt. In diesem Kapitel gehen wir darauf ein, wie man Daten aus der Perspektive der Datenwissenschaft behandelt. Trotz der Bedeutung von Trainingsdaten für die Entwicklung und Verbesserung von ML-Modellen sind die ML-Lehrpläne stark auf die Modellierung ausgerichtet, die von vielen Praktikern als der "spaßige" Teil des Prozesses angesehen wird. Ein modernes Modell zu erstellen ist interessant. Sich tagelang mit einer riesigen Menge schlecht formatierter Daten herumzuschlagen, die nicht einmal in den Speicher deines Computers passen, ist frustrierend.
Daten sind unübersichtlich, komplex, unberechenbar und potenziell tückisch. Wenn sie nicht richtig gehandhabt werden, können sie leicht deine gesamte ML-Operation untergehen lassen. Aber genau aus diesem Grund sollten Datenwissenschaftler/innen und ML-Ingenieure/innen lernen, wie man gut mit Daten umgeht, um uns später Zeit und Kopfschmerzen zu ersparen.
In diesem Kapitel gehen wir auf Techniken ein, um gute Trainingsdaten zu erhalten oder zu erstellen. Unter Trainingsdaten werden in diesem Kapitel alle Daten verstanden, die in der Entwicklungsphase von ML-Modellen verwendet werden, einschließlich der verschiedenen Splits, die für Training, Validierung und Test verwendet werden (Train-, Validierungs- und Test-Splits). Dieses Kapitel beginnt mit verschiedenen Stichprobenverfahren zur Auswahl von Daten für das Training. Anschließend werden wir uns mit den üblichen Herausforderungen bei der Erstellung von Trainingsdaten befassen, darunter das Problem der Labelvielfalt, das Problem der fehlenden Labels, das Problem des Klassenungleichgewichts und Techniken zur Datenerweiterung, um das Problem der fehlenden Daten zu lösen.
Wir verwenden den Begriff "Trainingsdaten" anstelle von "Trainingsdatensatz", weil "Datensatz" eine Menge bezeichnet, die endlich und stationär ist. Die Daten in der Produktion sind weder endlich noch stationär, ein Phänomen, das wir im Abschnitt "Verschiebung der Datenverteilung" behandeln werden . Wie andere Schritte beim Aufbau von ML-Systemen ist auch die Erstellung von Trainingsdaten ein iterativer Prozess. Wenn sich dein Modell im Laufe des Projektlebenszyklus weiterentwickelt, werden sich wahrscheinlich auch deine Trainingsdaten verändern.
Bevor wir weitermachen, möchte ich ein Wort der Warnung wiederholen, das schon oft gesagt wurde, aber immer noch nicht ausreicht. Daten sind voller potenzieller Verzerrungen. Diese Verzerrungen haben viele mögliche Ursachen. Es gibt Verzerrungen, die beim Sammeln, bei der Probenahme oder bei der Kennzeichnung entstehen. Historische Daten können mit menschlichen Verzerrungen behaftet sein, und ML-Modelle, die auf diesen Daten trainiert wurden, können diese noch verstärken. Nutze Daten, aber vertraue ihnen nicht zu sehr!
Probenahme
Sampling ist ein integraler Bestandteil des ML-Workflows, der in typischen ML-Kursen leider oft übersehen wird. Sampling findet in vielen Schritten des Lebenszyklus eines ML-Projekts statt, z. B. beim Sampling von aus allen möglichen realen Daten, um Trainingsdaten zu erstellen, beim Sampling aus einem bestimmten Datensatz, um Splits für Training, Validierung und Tests zu erstellen, oder beim Sampling aus allen möglichen Ereignissen, die innerhalb deines ML-Systems zu Überwachungszwecken auftreten. In diesem Abschnitt konzentrieren wir uns auf Sampling-Methoden zur Erstellung von Trainingsdaten, aber diese Sampling-Methoden können auch für andere Schritte im Lebenszyklus eines ML-Projekts verwendet werden.
In vielen Fällen ist das Sampling notwendig. Die Daten, die du zum Trainieren deines Modells verwendest, sind eine Teilmenge der realen Daten, die mit der einen oder anderen Stichprobenmethode erstellt wurde. Ein anderer Fall ist, dass es nicht möglich ist, alle Daten, auf die du Zugriff hast, zu verarbeiten - weil es zu viel Zeit oder Ressourcen erfordert -, so dass du eine Stichprobe der Daten ziehen musst, um eine Teilmenge zu erstellen, die sich verarbeiten lässt. In vielen anderen Fällen sind Stichproben hilfreich, weil sie es dir ermöglichen, eine Aufgabe schneller und kostengünstiger zu erledigen. Wenn du z. B. ein neues Modell in Erwägung ziehst, möchtest du vielleicht erst einmal ein kleines Experiment mit einer kleinen Teilmenge deiner Daten durchführen, um zu sehen, ob das neue Modell vielversprechend ist, bevor du es mit deinen gesamten Daten trainierst.1
Wenn wir die verschiedenen Stichprobenmethoden und ihre Anwendung in unserem Arbeitsablauf verstehen, können wir erstens potenzielle Stichprobenfehler vermeiden und zweitens die Methoden auswählen, die die Effizienz der von uns erhobenen Daten verbessern.
Es gibt zwei Arten von Stichproben: Nichtwahrscheinlichkeitsstichproben und Zufallsstichproben. Wir beginnen mit den Methoden der Nichtwahrscheinlichkeitsstichproben, gefolgt von einigen gängigen Methoden der Zufallsstichproben.
Nichtwahrscheinlichkeitsstichproben
Von einer Nichtwahrscheinlichkeitsstichprobe spricht man, wenn die Auswahl der Daten nicht auf Wahrscheinlichkeitskriterien beruht. Hier sind einige der Kriterien für Nicht-Wahrscheinlichkeitsstichproben:
- Convenience Sampling
Stichproben von Daten werden auf der Grundlage ihrer Verfügbarkeit ausgewählt. Diese Stichprobenmethode ist beliebt, weil sie einfach bequem ist.
- Schneeball-Probenahme
Künftige Stichproben werden auf der Grundlage bestehender Stichproben ausgewählt. Um zum Beispiel legitime Twitter-Konten zu scrapen, ohne Zugang zu Twitter-Datenbanken zu haben, fängst du mit einer kleinen Anzahl von Konten an, dann scrappst du alle Konten, denen sie folgen, und so weiter.
- Urteilsstichproben
- Quotenstichproben
Du wählst Stichproben auf der Grundlage von Quoten für bestimmte Teile der Daten aus, ohne dass eine Zufallsauswahl erfolgt. Wenn du zum Beispiel eine Umfrage durchführst, möchtest du vielleicht 100 Antworten aus jeder der folgenden Altersgruppen: unter 30 Jahre, zwischen 30 und 60 Jahre und über 60 Jahre, unabhängig von der tatsächlichen Altersverteilung.
Die Stichproben, die nach Nicht-Wahrscheinlichkeitskriterien ausgewählt werden, sind nicht repräsentativ für die realen Daten und daher mit Auswahlfehlern behaftet.2 Aufgrund dieser Verzerrungen könntest du denken, dass es eine schlechte Idee ist, Daten für das Training von ML-Modellen mit dieser Familie von Stichprobenmethoden auszuwählen. Da hast du recht. Leider wird die Auswahl der Daten für ML-Modelle in vielen Fällen immer noch durch Bequemlichkeit bestimmt.
Ein Beispiel für diese Fälle ist die Sprachmodellierung. Sprachmodelle werden oft nicht mit Daten trainiert, die repräsentativ für alle möglichen Texte sind, sondern mit Daten, die leicht zu sammeln sind - Wikipedia, Common Crawl, Reddit.
Ein weiteres Beispiel sind die Daten für die Stimmungsanalyse von allgemeinen Texten. Ein Großteil dieser Daten wird aus Quellen mit natürlichen Kennzeichnungen (Bewertungen) wie IMDB-Rezensionen und Amazon-Rezensionen gesammelt. Diese Datensätze werden dann für andere Aufgaben der Stimmungsanalyse verwendet. IMDB-Rezensionen und Amazon-Rezensionen sind auf Nutzer ausgerichtet, die bereit sind, Rezensionen online zu hinterlassen, und nicht unbedingt repräsentativ für Menschen, die keinen Zugang zum Internet haben oder die nicht bereit sind, Rezensionen online zu stellen.
Ein drittes Beispiel sind Daten für das Training selbstfahrender Autos. Ursprünglich wurden die Daten für selbstfahrende Autos hauptsächlich in zwei Gebieten gesammelt: Phoenix, Arizona (wegen seiner laxen Vorschriften), und die Bay Area in Kalifornien (weil hier viele Unternehmen ansässig sind, die selbstfahrende Autos bauen). In beiden Gebieten ist das Wetter in der Regel sonnig. Im Jahr 2016 erweiterte Waymo seinen Betrieb nach Kirkland, Washington, speziell wegen des regnerischen Wetters in Kirkland,3 aber es gibt immer noch viel mehr Daten über selbstfahrende Autos bei sonnigem Wetter als bei Regen oder Schnee.
Nichtwahrscheinlichkeitsstichproben können eine schnelle und einfache Methode sein, um die ersten Daten für dein Projekt zu sammeln. Für verlässliche Modelle solltest du jedoch wahrscheinlichkeitsbasierte Stichproben verwenden, die wir als Nächstes behandeln werden.
Einfache Zufallsstichprobe
Bei der einfachsten Form der Zufallsauswahl gibst du allen Stichproben in der Grundgesamtheit die gleiche Wahrscheinlichkeit, ausgewählt zu werden.4 Du wählst zum Beispiel 10 % der Grundgesamtheit nach dem Zufallsprinzip aus und gibst allen Mitgliedern dieser Grundgesamtheit die gleiche 10 %ige Chance, ausgewählt zu werden.
Der Vorteil dieser Methode ist, dass sie einfach zu implementieren ist. Der Nachteil ist, dass seltene Datenkategorien möglicherweise nicht in deiner Auswahl erscheinen. Nimm den Fall an, dass eine Klasse nur in 0,01 % deiner Datenpopulation vorkommt. Wenn du 1 % deiner Daten zufällig auswählst, ist es unwahrscheinlich, dass Proben dieser seltenen Klasse ausgewählt werden. Modelle, die auf diese Auswahl trainiert wurden, könnten denken, dass es diese seltene Klasse nicht gibt.
Stratifizierte Stichproben
Um den Nachteil der einfachen Zufallsstichprobe zu vermeiden, kannst du deine Grundgesamtheit zunächst in die Gruppen aufteilen, die dich interessieren, und aus jeder Gruppe eine eigene Stichprobe ziehen. Wenn du zum Beispiel eine Stichprobe von 1 % der Daten ziehen willst, die aus zwei Klassen, A und B, besteht, kannst du 1 % der Klasse A und 1 % der Klasse B ziehen. Auf diese Weise stellst du sicher, dass Stichproben aus der Klasse A oder B in die Auswahl einbezogen werden, egal wie selten sie ist. Jede Gruppe wird als Schicht bezeichnet und diese Methode wird als geschichtete Stichprobe bezeichnet.
Ein Nachteil dieser Stichprobenmethode ist, dass sie nicht immer möglich ist, z. B. wenn es unmöglich ist, alle Stichproben in Gruppen aufzuteilen. Das ist besonders schwierig, wenn eine Stichprobe zu mehreren Gruppen gehören kann, wie bei Multilabel-Aufgaben.5 Eine Stichprobe kann zum Beispiel sowohl zu Klasse A als auch zu Klasse B gehören.
Gewichtetes Sampling
Bei einer gewichteten Stichprobe erhält jede Stichprobe ein Gewicht, das die Wahrscheinlichkeit bestimmt, mit der sie ausgewählt wird. Wenn du zum Beispiel drei Stichproben A, B und C hast und möchtest, dass sie mit einer Wahrscheinlichkeit von 50 %, 30 % bzw. 20 % ausgewählt werden, kannst du ihnen die Gewichte 0,5, 0,3 und 0,2 geben.
Diese Methode ermöglicht es dir, dein Fachwissen zu nutzen. Wenn du z. B. weißt, dass eine bestimmte Untergruppe von Daten, z. B. neuere Daten, für dein Modell wertvoller ist und du willst, dass sie eine höhere Chance hat, ausgewählt zu werden, kannst du ihr ein höheres Gewicht geben.
Das ist auch dann hilfreich, wenn die Daten, die du hast, anders verteilt sind als die echten Daten. Wenn deine Daten zum Beispiel zu 25 % aus roten und zu 75 % aus blauen Stichproben bestehen, du aber weißt, dass in der realen Welt die Wahrscheinlichkeit, dass Rot und Blau vorkommen, gleich groß ist, kannst du die roten Stichproben dreimal höher gewichten als die blauen.
In Python kannst du gewichtete Stichproben mit random.choices
wie folgt durchführen:
# Choose two items from the list such that 1, 2, 3, 4 each has
# 20% chance of being selected, while 100 and 1000 each have only 10% chance.
import
random
random
.
choices
(
population
=
[
1
,
2
,
3
,
4
,
100
,
1000
],
weights
=
[
0.2
,
0.2
,
0.2
,
0.2
,
0.1
,
0.1
],
k
=
2
)
# This is equivalent to the following
random
.
choices
(
population
=
[
1
,
1
,
2
,
2
,
3
,
3
,
4
,
4
,
100
,
1000
],
k
=
2
)
Ein gängiges Konzept in ML, das eng mit dem gewichteten Sampling verwandt ist, sind die Stichprobengewichte. Gewichtetes Sampling wird verwendet, um Stichproben für das Training deines Modells auszuwählen, während Stichprobengewichte verwendet werden, um den Trainingsproben "Gewichte" oder "Wichtigkeit" zuzuweisen. Stichproben mit höheren Gewichten wirken sich stärker auf die Verlustfunktion aus. Eine Änderung der Stichprobengewichte kann die Entscheidungsgrenzen deines Modells erheblich verändern, wie in Abbildung 4-1 dargestellt.
Probenahme im Stausee
Reservoir Sampling ist ein faszinierender Algorithmus, der vor allem dann nützlich ist, wenn du mit Streaming-Daten umgehen musst, was in der Produktion normalerweise der Fall ist.
Stell dir vor, du hast einen Strom von Tweets und möchtest eine bestimmte Anzahl k von Tweets auswählen, um eine Analyse durchzuführen oder ein Modell zu trainieren. Du weißt nicht, wie viele Tweets es sind, aber du weißt, dass du sie nicht alle im Speicher unterbringen kannst, was bedeutet, dass du die Wahrscheinlichkeit, mit der ein Tweet ausgewählt werden soll, nicht im Voraus kennst. Das willst du sicherstellen:
Jeder Tweet hat die gleiche Wahrscheinlichkeit, ausgewählt zu werden.
Du kannst den Algorithmus jederzeit stoppen und die Tweets werden mit der richtigen Wahrscheinlichkeit gesampelt.
Eine Lösung für dieses Problem ist das Reservoir Sampling. Der Algorithmus beinhaltet ein Reservoir, das ein Array sein kann, und besteht aus drei Schritten:
Lege die ersten k Elemente in das Reservoir.
Erstelle für jedes eingehende n-te Element eine Zufallszahl i, so dass 1 ≤ i ≤ n ist.
Wenn 1 ≤ i ≤ k: Ersetze das i-te Element im Reservoir durch das n-te Element. Andernfalls: nichts tun.
Das bedeutet, dass jedes eingehende n-te Element Wahrscheinlichkeit hat, im Reservoir zu sein. Du kannst auch beweisen, dass jedes Element im Reservoir eine Wahrscheinlichkeit hat, dort zu sein. Das bedeutet, dass alle Proben die gleiche Chance haben, ausgewählt zu werden. Wenn wir den Algorithmus zu einem beliebigen Zeitpunkt anhalten, sind alle Proben im Reservoir mit der richtigen Wahrscheinlichkeit gezogen worden. Abbildung 4-2 zeigt ein anschauliches Beispiel auf , wie das Reservoir Sampling funktioniert.
Wichtigkeitsstichproben
Importance Sampling ist eine der wichtigsten Stichprobenmethoden, nicht nur in der ML. Sie ermöglicht es uns, Stichproben aus einer Verteilung zu ziehen, wenn wir nur Zugang zu einer anderen Verteilung haben.
Stell dir vor, du musst eine Stichprobe von x aus einer Verteilung P(x) ziehen, aber P(x) ist sehr teuer, langsam oder undurchführbar in der Stichprobenziehung. Du hast aber eine Verteilung Q(x), die viel einfacher zu beproben ist. Also ziehst du eine Stichprobe von x aus Q(x) und gewichtest diese Stichprobe mit . Q(x) wird die Vorschlagsverteilung oder die Wichtigkeitsverteilung genannt. Q(x) kann eine beliebige Verteilung sein, solange Q(x) > 0 ist, wenn P(x) ≠ 0 ist. Die folgende Gleichung zeigt, dass erwartungsgemäß x aus P(x) gleich x aus Q(x) ist, gewichtet mit :
Ein Beispiel für den Einsatz von Wichtigkeitssampling in ML ist das richtlinienbasierte Reinforcement Learning. Stell dir vor, du möchtest deine Strategie aktualisieren. Du möchtest die Wertfunktionen der neuen Strategie schätzen, aber die Berechnung der Gesamtbelohnungen für eine Aktion kann kostspielig sein, weil dafür alle möglichen Ergebnisse bis zum Ende des Zeithorizonts nach dieser Aktion berücksichtigt werden müssen. Wenn die neue Politik jedoch relativ nahe an der alten Politik liegt, kannst du die Gesamtbelohnungen stattdessen auf der Grundlage der alten Politik berechnen und sie entsprechend der neuen Politik neu gewichten. Die Belohnungen aus der alten Strategie bilden die Vorschlagsverteilung.
Kennzeichnung
Trotz der vielversprechenden Möglichkeiten der unüberwachten ML sind die meisten ML-Modelle , die heute in der Produktion eingesetzt werden, überwacht, d.h. sie benötigen markierte Daten, um daraus zu lernen. Die Leistung eines ML-Modells hängt immer noch stark von der Qualität und Quantität der gelabelten Daten ab, auf denen es trainiert wurde.
In einem Vortrag vor meinen Studierenden erzählte Andrej Karpathy, Direktor für KI bei Tesla, eine Anekdote darüber, wie er, als er beschloss, ein internes Beschriftungsteam zu gründen, seinen Personalvermittler fragte, wie lange er dieses Team brauchen würde. Er antwortete: "Wie lange brauchen wir ein Ingenieurteam?" Die Datenbeschriftung hat sich von einer Hilfsaufgabe zu einer Kernfunktion vieler ML-Teams in der Produktion entwickelt.
In diesem Abschnitt werden wir uns mit der Herausforderung befassen, Beschriftungen für deine Daten zu erhalten. Zunächst werden wir die Beschriftungsmethode besprechen, die Datenwissenschaftlern in der Regel zuerst in den Sinn kommt, wenn sie über Beschriftung sprechen: die Handbeschriftung. Anschließend werden wir uns mit Aufgaben befassen, bei denen natürliche Beschriftungen vorliegen, d. h. Aufgaben, bei denen die Beschriftungen vom System abgeleitet werden können, ohne dass menschliche Anmerkungen erforderlich sind, und was zu tun ist, wenn natürliche und manuelle Beschriftungen fehlen.
Handetiketten
Jeder, der schon einmal mit Daten in der Produktion gearbeitet hat, kennt das wahrscheinlich aus dem Effeff: Die Beschaffung von Handetiketten für deine Daten ist aus vielen, vielen Gründen schwierig. Erstens kann die manuelle Kennzeichnung von Daten teuer sein, vor allem wenn Fachwissen erforderlich ist. Um zu bestimmen, ob ein Kommentar Spam ist, kannst du vielleicht 20 Kommentatoren auf einer Crowdsourcing-Plattform finden und sie in 15 Minuten trainieren, deine Daten zu kennzeichnen. Wenn du jedoch Röntgenbilder von Brustkörpern beschriften willst, musst du dafür ausgebildete Radiologen finden, deren Zeit begrenzt und teuer ist.
Zweitens stellt die Handbeschriftung eine Gefahr für den Datenschutz dar. Handbeschriftung bedeutet, dass jemand einen Blick auf deine Daten werfen muss, was nicht immer möglich ist, wenn deine Daten strengen Datenschutzanforderungen unterliegen. Du kannst zum Beispiel nicht einfach die Krankenakten deiner Patienten oder die vertraulichen Finanzdaten deines Unternehmens zum Etikettieren an einen Drittanbieter schicken. In vielen Fällen dürfen deine Daten nicht einmal dein Unternehmen verlassen, und du musst möglicherweise Kommentatoren einstellen oder beauftragen, deine Daten vor Ort zu kennzeichnen.
Drittens ist die manuelle Beschriftung langsam. Die genaue Transkription einer sprachlichen Äußerung auf phonetischer Ebene kann zum Beispiel 400 Mal länger dauern als die Dauer der Äußerung.7 Wenn du also 1 Stunde Sprache annotieren willst, braucht eine Person 400 Stunden oder fast 3 Monate dafür. In einer Studie, in der ML zur Klassifizierung von Lungenkrebs anhand von Röntgenbildern eingesetzt wurde, mussten meine Kollegen fast ein Jahr warten, bis sie genügend Beschriftungen erhielten.
Eine langsame Beschriftung führt zu einer langsamen Iterationsgeschwindigkeit und macht dein Modell weniger anpassungsfähig an sich ändernde Umgebungen und Anforderungen. Wenn sich die Aufgabe oder die Daten ändern, musst du warten, bis deine Daten neu beschriftet sind, bevor du dein Modell aktualisieren kannst. Stell dir vor, du hast ein Sentiment-Analyse-Modell, das die Stimmung jedes Tweets analysiert, in dem deine Marke erwähnt wird. Es hat nur zwei Klassen: NEGATIV und POSITIV. Nach der Einführung stellt dein PR-Team jedoch fest, dass der meiste Schaden durch verärgerte Tweets entsteht, und es möchte sich schneller um verärgerte Nachrichten kümmern. Also musst du dein Stimmungsanalysemodell aktualisieren, damit es drei Klassen hat: NEGATIV, POSITIV und WÜTEND. Dazu musst du dir deine Daten noch einmal ansehen, um herauszufinden, welche bestehenden Trainingsbeispiele in ANGRY umbenannt werden sollten. Wenn du nicht genügend ANGRY-Beispiele hast, musst du mehr Daten sammeln. Je länger dieser Prozess dauert, desto mehr verschlechtert sich die Leistung deines bestehenden Modells.
Label-Multiplikation
Um genügend beschriftete Daten zu erhalten, müssen Unternehmen oft Daten aus verschiedenen Quellen verwenden und sich auf mehrere Annotatoren mit unterschiedlichem Fachwissen verlassen. Diese verschiedenen Datenquellen und Kommentatoren haben auch unterschiedliche Genauigkeitsstufen. Daraus ergibt sich das Problem der Mehrdeutigkeit von Bezeichnungen oder der Bezeichnungsvielfalt: Was ist zu tun, wenn es mehrere widersprüchliche Bezeichnungen für eine Dateninstanz gibt?
Betrachte diese einfache Aufgabe der Entitätserkennung. Du gibst drei Annotatoren das folgende Beispiel und bittest sie, alle Entitäten, die sie finden können, zu annotieren:
Darth Sidious, auch bekannt als der Imperator, war ein Dunkler Lord der Sith, der als Galaktischer Imperator des Ersten Galaktischen Imperiums über die Galaxis herrschte.
Du erhältst drei verschiedene Lösungen zurück, wie in Tabelle 4-1 dargestellt. Drei Annotatoren haben unterschiedliche Entitäten identifiziert. Auf welche sollte dein Modell trainiert werden? Ein Modell, das auf den Daten von Annotator 1 trainiert wurde, wird ganz anders abschneiden als ein Modell, das auf den Daten von Annotator 2 trainiert wurde.
Annotator | # Entitäten | Anmerkung |
---|---|---|
1 | 3 | [Darth Sidious], einfach der Imperator genannt, war ein[Dunkler Lord der Sith], der als[Galaktischer Imperator des Ersten Galaktischen Imperiums] über die Galaxis herrschte. |
2 | 6 | [Darth Sidious], einfach der[Imperator] genannt, war ein[Dunkler Lord] der[Sith], der als[Galaktischer Imperator] des[Ersten Galaktischen Imperiums] über die Galaxis herrschte. |
3 | 4 | [Darth Sidious], einfach der[Imperator] genannt, war ein[Dunkler Lord der Sith], der als[Galaktischer Imperator des Ersten Galaktischen Imperiums] über die Galaxis herrschte. |
Unstimmigkeiten zwischen Annotatoren sind extrem häufig. Je höher das erforderliche Fachwissen ist, desto größer ist das Potenzial für Unstimmigkeiten bei der Annotation.8 Wenn ein Experte der Meinung ist, dass das Label A sein sollte, während ein anderer glaubt, dass es B sein sollte, wie lösen wir diesen Konflikt, um eine einzige Grundwahrheit zu erhalten? Wenn sich menschliche Experten nicht auf eine Bezeichnung einigen können, was bedeutet dann überhaupt Leistung auf menschlicher Ebene?
Um die Unstimmigkeiten zwischen den Kommentatoren zu minimieren, ist es wichtig, eine klare Problemdefinition zu haben. In der vorangegangenen Aufgabe zur Erkennung von Entitäten hätten zum Beispiel einige Unstimmigkeiten vermieden werden können, wenn wir klargestellt hätten, dass bei mehreren möglichen Entitäten diejenige ausgewählt wird, die die längste Teilzeichenkette enthält. Das bedeutet: Galaktischer Imperator des Ersten Galaktischen Reiches statt Galaktischer Imperator und Erstes Galaktisches Reich. Zweitens musst du diese Definition in die Schulung der Annotatoren einbeziehen, um sicherzustellen, dass alle Annotatoren die Regeln verstehen.
Datenherkunft
Wenn du wahllos Daten aus verschiedenen Quellen verwendest, die von unterschiedlichen Annotatoren erstellt wurden, ohne ihre Qualität zu prüfen, kann dein Modell auf mysteriöse Weise fehlschlagen. Stell dir vor, du hast ein mäßig gutes Modell mit 100.000 Datenproben trainiert. Deine ML-Ingenieure sind zuversichtlich, dass mehr Daten die Leistung des Modells verbessern werden, also gibst du viel Geld aus, um Annotatoren anzuheuern, die eine weitere Million Datenproben beschriften.
Die Leistung des Modells nimmt jedoch ab, nachdem es auf den neuen Daten trainiert wurde. Der Grund dafür ist, dass die neue Million Stichproben von Crowdsourcern beschriftet wurden, die die Daten viel ungenauer beschriftet haben als die ursprünglichen Daten. Es kann besonders schwierig sein, dies zu ändern, wenn du deine Daten bereits gemischt hast und die neuen Daten nicht von den alten Daten unterscheiden kannst.
Es ist eine gute Praxis, den Ursprung jeder deiner Datenproben sowie ihre Beschriftungen zu verfolgen, eine Technik, die als Data Lineage bekannt ist. Die Datenreihenfolge hilft dir dabei, mögliche Verzerrungen in deinen Daten zu erkennen und deine Modelle zu debuggen. Wenn dein Modell z. B. bei den kürzlich erfassten Daten fehlschlägt, solltest du untersuchen, wie die neuen Daten erfasst wurden. Mehr als einmal haben wir festgestellt, dass das Problem nicht an unserem Modell lag, sondern an der ungewöhnlich hohen Anzahl falscher Bezeichnungen in den kürzlich erworbenen Daten .
Natürliche Etiketten
Hand-Labeling ist nicht die einzige Quelle für Labels. Vielleicht hast du das Glück, an Aufgaben mit natürlichen Kennzeichnungen zu arbeiten. Aufgaben mit natürlichen Labels sind Aufgaben, bei denen die Vorhersagen des Modells automatisch oder teilweise vom System ausgewertet werden können. Ein Beispiel ist das Modell, das die Ankunftszeit für eine bestimmte Route auf Google Maps schätzt. Wenn du diese Route nimmst, weiß Google Maps am Ende deiner Reise, wie lange die Reise tatsächlich gedauert hat, und kann so die Genauigkeit der vorhergesagten Ankunftszeit bewerten. Ein anderes Beispiel ist die Vorhersage von Aktienkursen. Wenn dein Modell den Kurs einer Aktie für die nächsten zwei Minuten vorhersagt, kannst du nach zwei Minuten den vorhergesagten Kurs mit dem tatsächlichen Kurs vergleichen.
Ein klassisches Beispiel für Aufgaben mit natürlichen Bezeichnungen sind Empfehlungssysteme. Das Ziel eines Empfehlungssystems ist es, den Nutzern für sie relevante Artikel zu empfehlen. Ob ein Nutzer auf den empfohlenen Artikel klickt oder nicht, kann als Feedback für die Empfehlung angesehen werden. Eine Empfehlung, die angeklickt wird, gilt als gut (d.h. das Label ist POSITIV) und eine Empfehlung, die nach einer gewissen Zeit, z.B. 10 Minuten, nicht angeklickt wird, gilt als schlecht (d.h. das Label ist NEGATIV).
Viele Aufgaben lassen sich als Empfehlungsaufgaben formulieren. So kannst du z. B. die Aufgabe, die Klickraten von Anzeigen vorherzusagen, so formulieren, dass du den Nutzern auf der Grundlage ihrer Aktivitätshistorie und ihrer Profile die relevantesten Anzeigen empfiehlst. Natürliche Labels, die aus dem Verhalten der Nutzer/innen wie Klicks und Bewertungen abgeleitet werden, werden auch als Behavioral Labels bezeichnet.
Auch wenn es für deine Aufgabe keine natürlichen Bezeichnungen gibt, ist es möglich, dein System so einzurichten, dass du Feedback zu deinem Modell einholen kannst. Wenn du zum Beispiel ein maschinelles Übersetzungssystem wie Google Translate aufbaust, kannst du der Community die Möglichkeit geben, alternative Übersetzungen für schlechte Übersetzungen einzureichen - diese alternativen Übersetzungen können dann zum Trainieren der nächsten Iteration deines Modells verwendet werden (obwohl du diese vorgeschlagenen Übersetzungen vielleicht erst überprüfen solltest). Durch das Hinzufügen des Like-Buttons und anderer Reaktionen zu jedem Newsfeed-Beitrag ist Facebook jedoch in der Lage, Feedback zu seinem Ranking-Algorithmus zu sammeln.
Aufgaben mit natürlichen Bezeichnungen sind in der Branche ziemlich verbreitet. Bei einer Umfrage unter 86 Unternehmen in meinem Netzwerk habe ich festgestellt, dass 63 % von ihnen mit Aufgaben mit natürlichen Bezeichnungen arbeiten, wie in Abbildung 4-3 dargestellt. Das bedeutet nicht, dass 63 % der Aufgaben, die von ML-Lösungen profitieren können, natürliche Bezeichnungen haben. Wahrscheinlicher ist, dass es für die Unternehmen einfacher und billiger ist, zuerst mit Aufgaben zu beginnen, die natürliche Bezeichnungen haben.
Im vorherigen Beispiel kann eine Empfehlung, die nach einer gewissen Zeit nicht angeklickt wird, als schlecht eingestuft werden. Dies wird als implizites Label bezeichnet, da das Fehlen eines positiven Labels eine negative Bewertung vermuten lässt. Es unterscheidet sich von expliziten Kennzeichnungen, bei denen die Nutzer/innen ihr Feedback zu einer Empfehlung explizit zum Ausdruck bringen, indem sie ihr eine niedrige Bewertung geben oder sie herabwürdigen.
Länge der Rückkopplungsschleife
Bei Aufgaben mit natürlichen Kennzeichnungen ist die Zeit, die von der Abgabe einer Vorhersage bis zur Rückmeldung an vergeht, die Länge der Rückkopplungsschleife. Aufgaben mit kurzen Feedbackschleifen sind Aufgaben, bei denen die Labels in der Regel innerhalb von Minuten verfügbar sind. Viele Empfehlungssysteme haben kurze Feedback-Schleifen. Wenn es sich bei den empfohlenen Artikeln um verwandte Produkte auf Amazon oder um Personen handelt, denen man auf Twitter folgen sollte, ist die Zeit zwischen der Empfehlung und dem Anklicken des Artikels kurz, wenn er überhaupt angeklickt wird.
Aber nicht alle Empfehlungssysteme haben minutenlange Feedback-Schleifen. Wenn du mit längeren Inhalten wie Blogbeiträgen, Artikeln oder YouTube-Videos arbeitest, kann die Feedbackschleife Stunden dauern. Wenn du ein System entwickelst, das den Nutzern Kleidung empfiehlt, wie das von Stitch Fix, bekommst du erst dann ein Feedback, wenn die Nutzer die Artikel erhalten und anprobiert haben, was Wochen später sein kann.
Die Wahl der richtigen Fensterlänge muss gründlich überlegt werden, da sie einen Kompromiss zwischen Geschwindigkeit und Genauigkeit darstellt. Eine kurze Fensterlänge bedeutet, dass du Kennzeichnungen schneller erfassen kannst. So kannst du diese Kennzeichnungen nutzen, um Probleme mit deinem Modell zu erkennen und sie so schnell wie möglich zu beheben. Eine kurze Fensterlänge bedeutet aber auch, dass du eine Empfehlung vorzeitig als schlecht bezeichnen könntest, bevor sie angeklickt wird.
Egal, wie lang du die Länge deines Zeitfensters einstellst, es kann immer noch zu vorzeitigen negativen Kennzeichnungen kommen. Anfang 2021 fand eine Studie des Ads-Teams bei Twitter heraus, dass die meisten Klicks auf Anzeigen zwar innerhalb der ersten fünf Minuten erfolgen, einige Klicks aber auch noch Stunden nach der Anzeige erfolgen.10 Das bedeutet, dass diese Art der Kennzeichnung die tatsächliche Klickrate tendenziell unterschätzt. Wenn du nur 1.000 POSITIVE Kennzeichnungen aufzeichnest, könnte die tatsächliche Anzahl der Klicks etwas über 1.000 liegen.
Bei Aufgaben mit langen Rückkopplungsschleifen kann es sein, dass natürliche Kennzeichnungen erst nach Wochen oder sogar Monaten eintreffen. Die Betrugserkennung ist ein Beispiel für eine Aufgabe mit langen Feedbackschleifen. Für eine bestimmte Zeit nach einer Transaktion können die Nutzer/innen anfechten, ob die Transaktion betrügerisch ist oder nicht. Wenn ein Kunde zum Beispiel seine Kreditkartenabrechnung liest und eine Transaktion sieht, die er nicht erkennt, kann er sie bei seiner Bank anfechten und der Bank das Feedback geben, die Transaktion als betrügerisch zu bezeichnen. Ein typisches Zeitfenster für die Beanstandung beträgt ein bis drei Monate. Wenn der Kunde nach Ablauf der Frist keine Einwände erhebt, kannst du davon ausgehen, dass die Transaktion rechtmäßig ist.
Etiketten mit langen Rückkopplungsschleifen sind hilfreich, um die Leistung eines Modells in vierteljährlichen oder jährlichen Geschäftsberichten darzustellen. Sie sind jedoch nicht sehr hilfreich, wenn du Probleme mit deinen Modellen so schnell wie möglich erkennen willst. Wenn es ein Problem mit deinem Betrugserkennungsmodell gibt und du Monate brauchst, um es zu erkennen, kann es sein, dass bis zur Behebung des Problems alle betrügerischen Transaktionen, die dein fehlerhaftes Modell durchgelassen hat, ein kleines Unternehmen in den Bankrott getrieben haben.
Umgang mit dem Mangel an Etiketten
Da es schwierig ist, ausreichend hochwertige Kennzeichnungen zu erhalten, wurden viele Techniken entwickelt, um die daraus resultierenden Probleme zu lösen. In diesem Abschnitt stellen wir vier davon vor: schwache Überwachung, Semi-Supervision, Transferlernen und aktives Lernen. Eine Übersicht über diese Methoden ist in Tabelle 4-2 zu finden.
Methode | Wie | Grundwahrheiten erforderlich? |
---|---|---|
Schwache Aufsicht | Nutzt (oft verrauschte) Heuristiken, um Labels zu generieren | Nein, aber eine kleine Anzahl von Labels wird empfohlen, um die Entwicklung von Heuristiken anzuleiten |
Semi-Aufsicht | Nutzt strukturelle Annahmen zur Erstellung von Labels | Ja, eine kleine Anzahl von Anfangskennzeichnungen als Saatgut, um weitere Kennzeichnungen zu erzeugen |
Lernen übertragen | Nutzt Modelle, die für eine andere Aufgabe trainiert wurden, für deine neue Aufgabe | Nein für Zero-Shot-Lernen Ja für die Feinabstimmung, obwohl die Anzahl der benötigten Ground Truths oft viel geringer ist als die, die benötigt würde, wenn du das Modell von Grund auf trainierst |
Aktives Lernen | Kennzeichnet Datenproben, die für dein Modell am nützlichsten sind | Ja |
Schwache Aufsicht
Wenn die Handbeschriftung so problematisch ist, was wäre dann, wenn wir gar keine Handbeschriftung verwenden? Ein Ansatz, der an Popularität gewonnen hat, ist die schwache Überwachung. Eines der beliebtesten Open-Source-Tools für schwache Überwachung ist Snorkel, das am Stanford AI Lab entwickelt wurde.11 Die Erkenntnis hinter der schwachen Überwachung ist, dass Menschen sich auf Heuristiken verlassen, die mit Fachwissen entwickelt werden können, um Daten zu kennzeichnen. Ein Arzt könnte zum Beispiel die folgenden Heuristiken verwenden, um zu entscheiden, ob der Fall eines Patienten als dringlich eingestuft werden sollte:
Wenn in der Krankenschwesternotiz eine ernste Erkrankung wie eine Lungenentzündung erwähnt wird, sollte der Fall des Patienten vorrangig behandelt werden.
Bibliotheken wie Snorkel basieren auf dem Konzept einer Beschriftungsfunktion (LF): eine Funktion, die Heuristiken kodiert. Die vorangegangenen Heuristiken können durch die folgende Funktion ausgedrückt werden:
def
labeling_function
(
note
):
if
"pneumonia"
in
note
:
return
"EMERGENT"
LFs können viele verschiedene Arten von Heuristiken kodieren. Hier sind einige von ihnen:
- Schlüsselwort Heuristik
Wie im vorangegangenen Beispiel
- Reguläre Ausdrücke
Zum Beispiel, wenn die Notiz mit einem bestimmten regulären Ausdruck übereinstimmt oder nicht übereinstimmt
- Datenbankabfrage
Zum Beispiel, wenn die Notiz eine Krankheit enthält, die in der Liste der gefährlichen Krankheiten aufgeführt ist
- Die Ergebnisse der anderen Modelle
Zum Beispiel, wenn ein bestehendes System dies klassifiziert als
EMERGENT
Nachdem du LFs geschrieben hast, kannst du sie auf die Proben anwenden, die du beschriften willst.
Da LFs Heuristiken kodieren und Heuristiken verrauscht sind, sind auch die von LFs erzeugten Kennzeichnungen verrauscht. Mehrere LFs können auf dieselben Datenbeispiele anwenden und dabei widersprüchliche Bezeichnungen vergeben. Eine Funktion könnte denken, dass die Notiz einer Krankenschwester EMERGENT
ist, aber eine andere Funktion könnte denken, dass sie es nicht ist. Eine Heuristik könnte viel genauer sein als eine andere Heuristik, was du aber nicht wissen kannst, weil du keine echten Kennzeichnungen hast, mit denen du sie vergleichen kannst. Es ist wichtig, alle LFs zu kombinieren, zu entrauschen und neu zu gewichten, um eine Gruppe von höchstwahrscheinlich richtigen Bezeichnungen zu erhalten. Abbildung 4-4 zeigt in groben Zügen, wie LFs funktionieren.
Theoretisch brauchst du für eine schwache Überwachung keine Handzettel. Um jedoch ein Gefühl dafür zu bekommen, wie genau deine LFs sind, wird eine kleine Anzahl von Hand Labels empfohlen. Diese Hand Labels können dir helfen, Muster in deinen Daten zu entdecken und bessere LFs zu schreiben.
Schwache Überwachung kann besonders nützlich sein, wenn deine Daten strengen Datenschutzanforderungen unterliegen. Du musst nur eine kleine, freigegebene Teilmenge der Daten sehen, um LFs zu schreiben, die dann auf den Rest deiner Daten angewendet werden können, ohne dass jemand sie sieht.
Mit LFs kann Fachwissen versioniert, wiederverwendet und gemeinsam genutzt werden. Das Fachwissen eines Teams kann kodiert und von einem anderen Team genutzt werden. Wenn sich deine Daten oder deine Anforderungen ändern, kannst du die LFs einfach erneut auf deine Datenproben anwenden. Der Ansatz, LFs zur Erstellung von Labels für deine Daten zu verwenden, wird auch als programmatisches Labeling bezeichnet. Tabelle 4-3 zeigt einige der Vorteile der programmatischen Beschriftung gegenüber der manuellen Beschriftung.
Handbeschriftung | Programmatische Kennzeichnung |
---|---|
Teuer: Besonders wenn Fachwissen erforderlich ist | Kosteneinsparung: Fachwissen kann versioniert, geteilt und innerhalb einer Organisation wiederverwendet werden |
Mangelnder Datenschutz: Notwendigkeit, Daten an menschliche Kommentatoren zu übermitteln | Privatsphäre: Erstelle LFs anhand einer freigegebenen Datenunterstichprobe und wende sie dann auf andere Daten an, ohne einzelne Stichproben zu betrachten. |
Langsam: Die benötigte Zeit skaliert linear mit der Anzahl der benötigten Etiketten | Schnell: Einfaches Skalieren von 1K bis 1M Proben |
Nicht anpassungsfähig: Jede Änderung erfordert eine Neuetikettierung der Daten | Anpassungsfähig: Wenn sich etwas ändert, wende die LFs einfach neu an! |
Hier ist eine Fallstudie, die zeigt, wie gut eine schwache Aufsicht in der Praxis funktioniert. In einer Studie mit Stanford Medicine,13 Modelle, die mit schwach überwachten Beschriftungen trainiert wurden, die ein einzelner Radiologe nach acht Stunden Schreiben von LFs erhalten hatte, zeigten eine vergleichbare Leistung wie Modelle, die mit Daten trainiert wurden, die fast ein Jahr lang von Hand beschriftet wurden, wie in Abbildung 4-5 dargestellt. Es gibt zwei interessante Fakten zu den Ergebnissen des Experiments. Erstens verbesserten sich die Modelle mit immer mehr unbeschrifteten Daten auch ohne weitere LFs. Zweitens wurden die LFs aufgabenübergreifend wiederverwendet. Die Forscher konnten sechs LFs zwischen der CXR-Aufgabe (Röntgenaufnahmen des Brustkorbs) und der EXR-Aufgabe (Röntgenaufnahmen der Extremitäten) wiederverwenden.14
Meine Schülerinnen und Schüler fragen oft, warum wir ML-Modelle brauchen, wenn Heuristiken so gut funktionieren, um Daten zu kennzeichnen? Ein Grund dafür ist, dass LFs möglicherweise nicht alle Datenproben abdecken. Deshalb können wir ML-Modelle auf Daten trainieren, die programmatisch mit LFs beschriftet wurden, und dieses trainierte Modell verwenden, um Vorhersagen für Proben zu erstellen, die von keiner LF abgedeckt werden.
Schwache Aufsicht ist ein einfaches, aber wirkungsvolles Paradigma. Es ist jedoch nicht perfekt. In manchen Fällen können die durch schwache Überwachung erhaltenen Kennzeichnungen zu verrauscht sein, um nützlich zu sein. Aber auch in diesen Fällen kann die schwache Überwachung ein guter Einstieg sein, wenn du die Effektivität von ML erforschen willst, ohne von vornherein zu viel in die manuelle Beschriftung investieren zu wollen.
Semi-Supervision
Während die schwache Überwachung Heuristiken nutzt, um verrauschte Kennzeichnungen zu erhalten, nutzt die Semi-Supervision strukturelle Annahmen, um neue Kennzeichnungen auf der Grundlage einer kleinen Menge von Anfangskennzeichnungen zu erzeugen. Im Gegensatz zur schwachen Überwachung erfordert die Semi-Supervision eine anfängliche Menge an Kennzeichnungen.
Semi-Überwachtes Lernen ist eine Technik, die bereits in den 90er Jahren eingesetzt wurde,16 und seither wurden viele Semi-Supervision-Methoden entwickelt. Eine umfassende Übersicht über semi-supervised learning würde den Rahmen dieses Buches sprengen. Wir gehen auf eine kleine Auswahl dieser Methoden ein, um den Lesern einen Eindruck davon zu vermitteln, wie sie eingesetzt werden. Für einen umfassenden Überblick empfehle ich "Semi-Supervised Learning Literature Survey" (Xiaojin Zhu, 2008) und "A Survey on Semi-Supervised Learning" (Engelen und Hoos, 2018).
Eine klassische Semi-Supervision-Methode ist das Selbsttraining. Du beginnst mit dem Training eines Modells auf deinem bestehenden Satz von beschrifteten Daten und verwendest dieses Modell, um Vorhersagen für unbeschriftete Proben zu treffen. Wenn du davon ausgehst, dass die Vorhersagen mit hoher Wahrscheinlichkeit richtig sind, fügst du die mit hoher Wahrscheinlichkeit vorhergesagten Bezeichnungen zu deiner Trainingsmenge hinzu und trainierst ein neues Modell auf dieser erweiterten Trainingsmenge. Das machst du so lange, bis du mit der Leistung deines Modells zufrieden bist.
Eine andere Semi-Supervision-Methode geht davon aus, dass Datenproben, die ähnliche Merkmale aufweisen, die gleichen Labels erhalten. Die Ähnlichkeit kann offensichtlich sein, wie zum Beispiel bei der Aufgabe, das Thema von Twitter-Hashtags zu klassifizieren. Du kannst damit beginnen, den Hashtag "#AI" als Informatik zu kennzeichnen. Wenn du davon ausgehst, dass Hashtags, die im selben Tweet oder Profil auftauchen, wahrscheinlich dasselbe Thema betreffen, kannst du angesichts des Profils von MIT CSAIL in Abbildung 4-6 auch die Hashtags "#ML" und "#BigData" als Informatik bezeichnen.
In den meisten Fällen kann die Ähnlichkeit nur durch komplexere Methoden festgestellt werden. Du musst zum Beispiel eine Clustermethode oder einen Algorithmus zur Ermittlung der nächstgelegenen Nachbarn (k-nearest neighbors) verwenden, um Proben zu finden, die zum selben Cluster gehören.
Eine Semi-Supervisionsmethode, die in den letzten Jahren an Popularität gewonnen hat, ist die störungsbasierte Methode. Sie basiert auf der Annahme, dass kleine Störungen einer Probe deren Bezeichnung nicht verändern sollten. Du wendest also kleine Störungen auf deine Trainingsinstanzen an, um neue Trainingsinstanzen zu erhalten. Die Störungen können direkt auf die Proben (z. B. weißes Rauschen bei Bildern) oder auf ihre Repräsentationen (z. B. kleine Zufallswerte bei der Einbettung von Wörtern) angewendet werden. Die gestörten Proben haben die gleichen Bezeichnungen wie die ungestörten Proben. Mehr darüber erfahren wir im Abschnitt "Störung".
In einigen Fällen haben Semi-Supervision-Ansätze die Leistung des rein überwachten Lernens erreicht, selbst wenn ein erheblicher Teil der Labels in einem bestimmten Datensatz verworfen wurde.17
Semi-Supervision ist am nützlichsten, wenn die Anzahl der Trainingsbezeichnungen begrenzt ist. Bei der Semi-Supervision mit begrenzten Daten ist zu überlegen, wie viele dieser begrenzten Daten verwendet werden sollten, um mehrere Modellkandidaten zu bewerten und das beste auszuwählen. Wenn du nur eine kleine Menge verwendest, könnte das Modell mit der besten Leistung auf dieser kleinen Auswertungsmenge dasjenige sein, das am meisten auf diese Menge passt. Wenn du hingegen eine große Menge an Daten für die Auswertung verwendest, kann der Leistungszuwachs, der durch die Auswahl des besten Modells auf der Grundlage dieser Auswertungsmenge erzielt wird, geringer sein als der Zuwachs, der durch die Hinzufügung der Auswertungsmenge zur begrenzten Trainingsmenge erzielt wird. Viele Unternehmen überwinden diesen Kompromiss, indem sie eine ausreichend große Auswertungsmenge verwenden, um das beste Modell auszuwählen, und dann das Champion-Modell anhand der Auswertungsmenge weiter trainieren.
Lernen übertragen
Transferlernen bezieht sich auf die Familie der Methoden, bei denen ein für eine Aufgabe entwickeltes Modell als Ausgangspunkt für ein Modell für eine zweite Aufgabe wiederverwendet wird. Zunächst wird das Basismodell für eine Basisaufgabe trainiert. Bei der Basisaufgabe handelt es sich in der Regel um eine Aufgabe, für die es billige und reichlich Trainingsdaten gibt. Die Sprachmodellierung ist ein guter Kandidat, weil sie keine beschrifteten Daten benötigt. Sprachmodelle können für jeden beliebigen Text trainiert werden - Bücher, Wikipedia-Artikel, Chatverläufe - und die Aufgabe lautet: Gib eine Folge von Token vor,18 das nächste Zeichen vorhersagen. Bei der Sequenz "Ich habe NVIDIA-Aktien gekauft, weil ich an die Bedeutung von glaube", könnte ein Sprachmodell "Hardware" oder "GPU" als nächstes Token ausgeben.
Das trainierte Modell kann dann für die Aufgabe verwendet werden, an der du interessiert bist - eine nachgelagerte Aufgabe - wie z. B. Sentimentanalyse, Absichtserkennung oder Beantwortung von Fragen. In einigen Fällen, z. B. bei Zero-Shot-Learning-Szenarien, kannst du das Basismodell direkt für eine nachgelagerte Aufgabe verwenden. In vielen Fällen ist eine Feinabstimmung des Basismodells erforderlich. Feinabstimmung bedeutet, dass du kleine Änderungen am Basismodell vornimmst, z. B. indem du das Basismodell oder einen Teil des Basismodells weiterhin mit den Daten einer bestimmten nachgelagerten Aufgabe trainierst.19
Manchmal musst du die Eingaben mithilfe eines Templates ändern, um das Basismodell aufzufordern, die gewünschten Ergebnisse zu erzeugen.20 Wenn du zum Beispiel ein Sprachmodell als Basismodell für eine Aufgabe zur Beantwortung von Fragen verwenden möchtest, kannst du diese Eingabeaufforderung verwenden:
F: Wann wurden die Vereinigten Staaten gegründet?
A: 4. Juli 1776.
F: Wer hat die Unabhängigkeitserklärung geschrieben?
A: Thomas Jefferson.
F: In welchem Jahr wurde Alexander Hamilton geboren?
A:
Wenn du diese Eingabeaufforderung in ein Sprachmodell wie GPT-3 eingibst, könnte es das Geburtsjahr von Alexander Hamilton ausgeben.
Transferlernen ist besonders attraktiv für Aufgaben, die nicht viele beschriftete Daten enthalten. Aber auch bei Aufgaben mit vielen beschrifteten Daten kann die Verwendung eines vortrainierten Modells als Ausgangspunkt die Leistung im Vergleich zum Training von Grund auf erheblich steigern.
Das Transferlernen hat in den letzten Jahren aus den richtigen Gründen viel Aufmerksamkeit erregt. Es hat viele Anwendungen ermöglicht, die früher aufgrund des Mangels an Trainingsbeispielen unmöglich waren. Ein nicht unerheblicher Teil der ML-Modelle, die heute in Produktion sind, ist das Ergebnis von Transfer Learning, darunter Modelle zur Objekterkennung, die auf ImageNet trainierte Modelle nutzen, und Modelle zur Textklassifizierung, die auf vortrainierte Sprachmodelle wie BERT oder GPT-3 zurückgreifen.21 Transferlernen senkt auch die Einstiegshürden in ML, da es dazu beiträgt, die Vorlaufkosten für die Beschriftung von Daten zur Erstellung von ML-Anwendungen zu senken.
In den letzten fünf Jahren hat sich ein Trend herauskristallisiert: Je größer das trainierte Basismodell ist, desto besser ist seine Leistung bei nachgelagerten Aufgaben. Große Modelle sind teuer in der Ausbildung. Ausgehend von der Konfiguration des GPT-3 wird geschätzt, dass die Kosten für das Training dieses Modells im zweistelligen Millionenbereich liegen. Viele gehen davon aus, dass es sich in Zukunft nur noch eine Handvoll Unternehmen leisten kann, große vortrainierte Modelle zu trainieren. Der Rest der Branche wird diese vortrainierten Modelle direkt verwenden oder sie für ihre spezifischen Bedürfnisse feinabstimmen.
Aktives Lernen
Aktives Lernen ist eine Methode zur Verbesserung der Effizienz von Datenkennzeichnungen. Die Hoffnung dabei ist, dass ML-Modelle mit weniger Trainingsetiketten eine höhere Genauigkeit erreichen können, wenn sie wählen können, aus welchen Datenproben sie lernen. Aktives Lernen wird manchmal auch als Query Learning bezeichnet - obwohl dieser Begriff zunehmend unpopulär wird -, weil ein Modell (aktiver Lerner) Anfragen in Form von unmarkierten Proben zurückschickt, die von Annotatoren (in der Regel Menschen) markiert werden.
Anstatt Datenproben willkürlich zu kennzeichnen, kennzeichnest du die Proben, die für deine Modelle am hilfreichsten sind, nach bestimmten Maßstäben oder Heuristiken. Die einfachste Metrik ist die Unsicherheitsmessung: Kennzeichne die Beispiele, bei denen dein Modell am wenigsten sicher ist, in der Hoffnung, dass sie deinem Modell helfen, die Entscheidungsgrenze besser zu lernen. Bei Klassifizierungsproblemen, bei denen dein Modell rohe Wahrscheinlichkeiten für verschiedene Klassen ausgibt, könnte es zum Beispiel die Datenbeispiele mit den niedrigsten Wahrscheinlichkeiten für die vorhergesagte Klasse auswählen. Abbildung 4-7 veranschaulicht, wie gut diese Methode bei einem Spielzeugbeispiel funktioniert.
Eine andere gängige Heuristik basiert auf der Uneinigkeit zwischen mehreren Kandidatenmodellen. Diese Methode wird Query-by-Committee genannt und ist ein Beispiel für eine Ensemble-Methode.23 In der Regel handelt es sich dabei um dasselbe Modell, das mit unterschiedlichen Hyperparametern trainiert wurde, oder um dasselbe Modell, das für verschiedene Datenabschnitte trainiert wurde. Jedes Modell kann einmal darüber abstimmen, welche Proben als Nächstes gekennzeichnet werden sollen. Du kennzeichnest dann die Stichproben, bei denen sich der Ausschuss am meisten uneinig ist.
Es gibt noch andere Heuristiken, wie z. B. die Auswahl von Stichproben, die, wenn sie trainiert werden, die höchsten Gradientenaktualisierungen ergeben oder den Verlust am meisten reduzieren. Einen umfassenden Überblick über aktive Lernmethoden findest du in "Active Learning Literature Survey" (Settles 2010).
Die zu beschriftenden Stichproben können aus verschiedenen Datenbereichen stammen. Sie können synthetisiert werden, indem dein Modell Stichproben in dem Bereich des Eingaberaums erzeugt, in dem es am unsichersten ist.24 Sie können aus einer stationären Verteilung stammen, bei der du bereits viele unmarkierte Daten gesammelt hast und dein Modell aus diesem Pool Stichproben für die Markierung auswählt. Sie können aus einer realen Verteilung stammen, bei der du wie in der Produktion einen Strom von Daten erhältst, aus dem dein Modell Stichproben zur Kennzeichnung auswählt.
Am meisten begeistert mich das aktive Lernen, wenn ein System mit Echtzeitdaten arbeitet. Daten ändern sich ständig, ein Phänomen, das wir in Kapitel 1 kurz angeschnitten haben und in Kapitel 8 näher erläutern werden. Aktives Lernen in diesem Datenregime ermöglicht es deinem Modell, in Echtzeit effektiver zu lernen und sich schneller an veränderte Umgebungen anzupassen.
Ungleichgewicht der Klassen
Klassenungleichheit bezieht sich in der Regel auf ein Problem bei Klassifizierungsaufgaben, bei dem es einen erheblichen Unterschied in der Anzahl der Proben in jeder Klasse der Trainingsdaten gibt. In einem Trainingsdatensatz für die Erkennung von Lungenkrebs anhand von Röntgenbildern könnten zum Beispiel 99,99 % der Röntgenbilder normale Lungen enthalten und nur 0,01 % Krebszellen.
Ein Klassenungleichgewicht kann auch bei Regressionsaufgaben auftreten, bei denen die Bezeichnungen kontinuierlich sind. Nehmen wir die Aufgabe , die Rechnungen für die Gesundheitsversorgung zu schätzen.25 Arztrechnungen sind sehr schief - der Medianwert ist niedrig, aber der 95. Bei der Vorhersage von Krankenhausrechnungen kann es wichtiger sein, die Rechnungen am 95. Perzentil genau vorherzusagen als den Median. Eine 100%ige Abweichung bei einer Rechnung von 250 USD ist akzeptabel (tatsächliche 500 USD, vorhergesagte 250 USD), aber eine 100%ige Abweichung bei einer Rechnung von 10.000 USD ist es nicht (tatsächliche 20.000 USD, vorhergesagte 10.000 USD). Deshalb müssen wir das Modell so trainieren, dass es die Rechnungen des 95. Perzentils besser vorhersagen kann, auch wenn dadurch die Gesamtkennzahlen sinken.
Herausforderungen des Klassenungleichgewichts
ML, insbesondere Deep Learning, funktioniert gut in Situationen, in denen die Datenverteilung ausgeglichener ist, und normalerweise nicht so gut, wenn die Klassen stark unausgewogen sind, wie in Abbildung 4-8 dargestellt. Ein Ungleichgewicht der Klassen kann das Lernen aus den folgenden drei Gründen erschweren.
Der erste Grund ist, dass ein Klassenungleichgewicht oft bedeutet, dass es für dein Modell nicht genügend Signale gibt, um zu lernen, die Minderheitenklassen zu erkennen. Wenn es nur wenige Instanzen der Minderheitenklasse gibt, wird das Problem zu einem "few-shot"-Lernproblem, bei dem dein Modell die Minderheitenklasse nur ein paar Mal zu sehen bekommt, bevor es eine Entscheidung treffen muss. Wenn die seltenen Klassen in deinem Trainingsset nicht vorkommen, könnte dein Modell davon ausgehen, dass es diese seltenen Klassen nicht gibt.
Der zweite Grund ist, dass ein Klassenungleichgewicht es deinem Modell leichter macht, in einer nicht optimalen Lösung stecken zu bleiben, indem es eine einfache Heuristik ausnutzt, anstatt etwas Nützliches über das zugrunde liegende Muster der Daten zu lernen. Nehmen wir das Beispiel der Lungenkrebserkennung. Wenn dein Modell lernt, immer die Mehrheitsklasse auszugeben, liegt seine Genauigkeit bereits bei 99,99 %.27 Diese Heuristik ist für Gradientenabstiegsalgorithmen sehr schwer zu schlagen, da eine kleine Menge an Zufälligkeit, die zu dieser Heuristik hinzugefügt wird, zu einer schlechteren Genauigkeit führen kann.
Der dritte Grund ist, dass das Klassenungleichgewicht zu asymmetrischen Fehlerkosten führt - die Kosten einer falschen Vorhersage bei einer Stichprobe der seltenen Klasse können viel höher sein als die einer falschen Vorhersage bei einer Stichprobe der Mehrheitsklasse.
Zum Beispiel ist eine Fehlklassifizierung auf einem Röntgenbild mit Krebszellen viel gefährlicher als eine Fehlklassifizierung auf einem Röntgenbild einer normalen Lunge. Wenn deine Verlustfunktion nicht so konfiguriert ist, dass sie diese Asymmetrie berücksichtigt, wird dein Modell alle Proben gleich behandeln. Das kann dazu führen, dass du ein Modell erhältst, das sowohl in der Mehrheitsklasse als auch in der Minderheitsklasse gleich gut abschneidet, während du ein Modell bevorzugst, das in der Mehrheitsklasse weniger gut, in der Minderheitsklasse aber viel besser abschneidet.
Als ich in der Schule war, hatten die meisten Datensätze, die ich bekam, mehr oder weniger ausgeglichene Klassen.28 Es war ein Schock für mich, als ich anfing zu arbeiten und feststellte, dass ein Ungleichgewicht der Klassen die Norm ist. In der realen Welt sind seltene Ereignisse oft interessanter (oder gefährlicher) als regelmäßige Ereignisse, und viele Aufgaben konzentrieren sich darauf, diese seltenen Ereignisse zu erkennen.
Das klassische Beispiel für Aufgaben mit Klassenungleichgewicht ist die Betrugserkennung. Die meisten Kreditkartentransaktionen sind nicht betrügerisch. Im Jahr 2018 sind 6,8¢ pro 100 $ an Ausgaben der Karteninhaber betrügerisch.29 Eine weitere Aufgabe ist die Abwanderung Vorhersage. Die meisten deiner Kunden haben wahrscheinlich nicht vor, ihr Abonnement zu kündigen. Wenn doch, muss sich dein Unternehmen mehr Sorgen machen als Algorithmen zur Abwanderungsvorhersage. Andere Beispiele sind Krankheitsscreenings (die meisten Menschen sind zum Glück nicht unheilbar krank) und Lebenslaufscreenings (98% der Arbeitssuchenden werden beim ersten Lebenslaufscreening aussortiert30).
Ein weniger offensichtliches Beispiel für eine Aufgabe mit unausgewogenen Klassen ist die Objekterkennung. Algorithmen zur Objekterkennung erzeugen derzeit eine große Anzahl von Bounding Boxes über einem Bild und sagen dann voraus, in welchen Boxen sich mit hoher Wahrscheinlichkeit Objekte befinden. Die meisten Bounding Boxes enthalten kein relevantes Objekt.
Abgesehen von den Fällen, in denen ein Klassenungleichgewicht dem Problem inhärent ist, kann ein Klassenungleichgewicht auch durch Verzerrungen während des Stichprobenverfahrens verursacht werden. Nehmen wir an, du möchtest Trainingsdaten erstellen, um zu erkennen, ob eine E-Mail Spam ist oder nicht. Du beschließt, alle anonymisierten E-Mails aus der E-Mail-Datenbank deines Unternehmens zu verwenden. Nach Angaben von Talos Intelligence sind im Mai 2021 fast 85% aller E-Mails Spam.31 Die meisten Spam-E-Mails wurden jedoch herausgefiltert, bevor sie die Datenbank deines Unternehmens erreichten, so dass in deinem Datensatz nur ein kleiner Prozentsatz Spam ist.
Eine weitere, wenn auch weniger häufige Ursache für ein Ungleichgewicht der Klassen sind Beschriftungsfehler. Die Kommentatoren könnten die Anweisungen falsch gelesen oder befolgt haben (weil sie dachten, es gäbe nur zwei Klassen, POSITIV und NEGATIV, während es in Wirklichkeit drei sind), oder sie haben sich einfach geirrt. Wenn du mit dem Problem des Klassenungleichgewichts konfrontiert wirst, ist es wichtig, dass du deine Daten untersuchst, um die Ursachen dafür zu verstehen.
Umgang mit Klassenungleichgewichten
Da sie in der Praxis häufig vorkommt, wurde das Klassenungleichgewicht in den letzten zwei Jahrzehnten gründlich untersucht.32 Das Klassenungleichgewicht wirkt sich je nach Grad des Ungleichgewichts unterschiedlich auf die Aufgaben aus. Manche Aufgaben reagieren empfindlicher auf Klassenungleichgewicht als andere. Japkowicz zeigte, dass die Empfindlichkeit gegenüber Ungleichgewicht mit der Komplexität des Problems zunimmt und dass nicht-komplexe, linear trennbare Probleme nicht von allen Stufen des Klassenungleichgewichts betroffen sind.33 Klassenungleichgewicht bei binären Klassifizierungsproblemen ist ein viel einfacheres Problem als Klassenungleichgewicht bei Multiklassen-Klassifizierungsproblemen. Ding et al. zeigten 2017, dass sehr tiefe neuronale Netze - wobei "sehr tief" mehr als 10 Schichten bedeutet - bei unausgewogenen Daten viel besser abschneiden als flachere neuronale Netze.34
Es wurden viele Techniken vorgeschlagen, um die Auswirkungen des Klassenungleichgewichts abzumildern. Da neuronale Netze jedoch immer größer und tiefer werden und mehr Lernkapazität haben, könnten einige argumentieren, dass man nicht versuchen sollte, das Klassenungleichgewicht zu "beheben", wenn die Daten in der realen Welt so aussehen. Ein gutes Modell sollte lernen, dieses Ungleichgewicht zu modellieren. Ein Modell zu entwickeln, das dafür gut genug ist, kann jedoch eine Herausforderung sein, so dass wir immer noch auf spezielle Trainingstechniken zurückgreifen müssen.
In diesem Abschnitt werden wir drei Ansätze zum Umgang mit Klassenungleichgewicht behandeln: die Auswahl der richtigen Metriken für dein Problem; Methoden auf Datenebene, d. h. die Veränderung der Datenverteilung, um sie weniger unausgewogen zu machen; und Methoden auf Algorithmenebene, d. h. die Veränderung deiner Lernmethode, um sie robuster gegenüber Klassenungleichgewicht zu machen.
Diese Techniken sind zwar notwendig, aber nicht ausreichend. Für einen umfassenden Überblick empfehle ich "Survey on Deep Learning with Class Imbalance" (Johnson und Khoshgoftaar 2019).
Verwendung der richtigen Bewertungsmaßstäbe
Das Wichtigste bei einer Aufgabe mit Klassenungleichgewicht ist die Wahl der geeigneten Bewertungsmetriken. Falsche Metriken geben dir eine falsche Vorstellung davon, wie deine Modelle abschneiden, und können dir folglich nicht helfen, Modelle zu entwickeln oder auszuwählen, die für deine Aufgabe gut genug sind.
Die Gesamtgenauigkeit und die Fehlerrate sind die am häufigsten verwendeten Messgrößen, um die Leistung von ML-Modellen zu bewerten. Für Aufgaben mit einem Klassenungleichgewicht sind diese Kennzahlen jedoch unzureichend, da sie alle Klassen gleich behandeln, was bedeutet, dass die Leistung deines Modells in der Mehrheitsklasse diese Kennzahlen dominieren wird. Das ist besonders schlecht, wenn die Mehrheitsklasse nicht das ist, was dich interessiert.
Betrachten wir eine Aufgabe mit zwei Labels: CANCER (die positive Klasse) und NORMAL (die negative Klasse), wobei 90 % der gelabelten Daten NORMAL sind. Betrachte zwei Modelle, A und B, mit den in den Tabellen 4-4 und 4-5 dargestellten Konfusionsmatrizen.
Modell A | Tatsächlicher KREBS | Tatsächlich NORMAL |
---|---|---|
Vorhersage KREBS | 10 | 10 |
Vorausgesagt NORMAL | 90 | 890 |
Modell B | Tatsächlicher KREBS | Tatsächlich NORMAL |
---|---|---|
Vorhersage KREBS | 90 | 90 |
Vorausgesagt NORMAL | 10 | 810 |
Wenn du wie die meisten Menschen bist, würdest du wahrscheinlich Modell B bevorzugen, da es eine bessere Chance hat, dir zu sagen, ob du tatsächlich Krebs hast. Beide Modelle haben jedoch die gleiche Genauigkeit von 0,9.
Metriken, die dir helfen, die Leistung deines Modells in Bezug auf bestimmte Klassen zu verstehen, sind die bessere Wahl. Die Genauigkeit kann immer noch eine gute Kennzahl sein, wenn du sie für jede Klasse einzeln verwendest. Die Genauigkeit von Modell A für die Klasse KREBS beträgt 10 % und die Genauigkeit von Modell B für die Klasse KREBS beträgt 90 %.
F1, Precision und Recall sind Metriken, die die Leistung deines Modells in Bezug auf die positive Klasse bei binären Klassifizierungsproblemen messen, da sie auf wahres Positiv beruhen - ein Ergebnis, bei dem das Modell die positive Klasse korrekt vorhersagt.35
F1, Präzision und Recall sind asymmetrische Metriken, was bedeutet, dass sich ihre Werte ändern, je nachdem, welche Klasse als die positive Klasse betrachtet wird. In unserem Fall, wenn wir CANCER als positive Klasse betrachten, beträgt der F1-Wert von Modell A 0,17. Wenn wir jedoch NORMAL als positive Klasse betrachten, liegt der F1-Wert von Modell A bei 0,95. Die Genauigkeit, Präzision, Wiedererkennung und F1-Werte von Modell A und Modell B, wenn CANCER die positive Klasse ist, sind in Tabelle 4-7 dargestellt.
KREBS (1) | NORMAL (0) | Genauigkeit | Präzision | Rückruf | F1 | |
---|---|---|---|---|---|---|
Modell A | 10/100 | 890/900 | 0.9 | 0.5 | 0.1 | 0.17 |
Modell B | 90/100 | 810/900 | 0.9 | 0.5 | 0.9 | 0.64 |
Viele Klassifizierungsprobleme können als Regressionsprobleme modelliert werden. Dein Modell kann eine Wahrscheinlichkeit ausgeben, und auf der Grundlage dieser Wahrscheinlichkeit klassifizierst du die Probe. Wenn der Wert zum Beispiel größer als 0,5 ist, wird er als positiv eingestuft, und wenn er kleiner oder gleich 0,5 ist, wird er als negativ eingestuft. Das bedeutet, dass du den Schwellenwert so einstellen kannst, dass die Rate der echten Positiven (auch Recall genannt) steigt und die Rate der falschen Positiven (auch Falschalarmwahrscheinlichkeit genannt) sinkt und umgekehrt. Wir können die wahr-positive Rate gegen die falsch-positive Rate für verschiedene Schwellenwerte auftragen. Diese Darstellung wird als ROC-Kurve (Receiver Operating Characteristics) bezeichnet. Wenn dein Modell perfekt ist, liegt der Recall bei 1,0 und die Kurve ist nur eine Linie an der Spitze. Diese Kurve zeigt dir, wie sich die Leistung deines Modells je nach Schwellenwert verändert, und hilft dir, den für dich besten Schwellenwert zu wählen. Je näher an der perfekten Linie, desto besser ist die Leistung deines Modells.
Die Fläche unter der Kurve (AUC) misst die Fläche unter der ROC-Kurve. Je näher die ROC-Kurve an der perfekten Linie liegt, desto besser. Je größer diese Fläche ist, desto besser, wie in Abbildung 4-9 dargestellt.
Wie F1 und Recall konzentriert sich auch die ROC-Kurve nur auf die positive Klasse und zeigt nicht, wie gut dein Modell in der negativen Klasse abschneidet. Davis und Goadrich schlugen vor, dass wir stattdessen die Präzision gegen den Recall auftragen sollten, was sie als Präzisions-Recall-Kurve bezeichneten. Sie argumentierten, dass diese Kurve ein aussagekräftigeres Bild von der Leistung eines Algorithmus bei Aufgaben mit starkem Klassenungleichgewicht vermittelt.36
Methoden auf Datenebene: Resampling
Methoden auf Datenebene verändern die Verteilung der Trainingsdaten, um den Grad der Unausgewogenheit zu verringern und dem Modell das Lernen zu erleichtern . Eine gängige Methode ist das Resampling. Das Resampling umfasst das Oversampling, bei dem mehr Instanzen aus den Minderheitsklassen hinzugefügt werden, und das Undersampling, bei dem Instanzen aus den Mehrheitsklassen entfernt werden. Die einfachste Art des Undersamplings ist das zufällige Entfernen von Instanzen aus der Mehrheitsklasse, während die einfachste Art des Oversamplings darin besteht, zufällige Kopien der Minderheitsklasse anzufertigen, bis du ein zufriedenstellendes Verhältnis hast. Abbildung 4-10 zeigt eine Visualisierung von Oversampling und Subsampling.
Eine beliebte Methode zur Untererfassung niedrigdimensionaler Daten, die bereits 1976 entwickelt wurde, sind Tomek-Links.38 Mit dieser Technik findest du Paare von Stichproben aus entgegengesetzten Klassen, die nahe beieinander liegen, und entfernst die Stichprobe der Mehrheitsklasse in jedem Paar.
Das macht die Entscheidungsgrenze zwar klarer und hilft den Modellen, die Grenze besser zu lernen, aber es kann das Modell auch weniger robust machen, weil das Modell nicht von den Feinheiten der wahren Entscheidungsgrenze lernen kann.
Eine beliebte Methode für das Oversampling niedrigdimensionaler Daten ist SMOTE (synthetic minority oversampling technique).39 Sie synthetisiert neue Stichproben der Minderheitenklasse durch das Sampling konvexer Kombinationen bestehender Datenpunkte innerhalb der Minderheitenklasse.40
Sowohl SMOTE als auch Tomek Links haben sich nur bei niedrigdimensionalen Daten bewährt. Viele der ausgefeilten Resampling-Techniken, wie Near-Miss und einseitige Auswahl,41 erfordern die Berechnung des Abstands zwischen den Instanzen oder zwischen den Instanzen und den Entscheidungsgrenzen, was bei hochdimensionalen Daten oder in einem hochdimensionalen Merkmalsraum, wie z. B. bei großen neuronalen Netzen, teuer oder nicht durchführbar sein kann.
Wenn du deine Trainingsdaten neu abtastest, darfst du dein Modell niemals auf neu abgetasteten Daten auswerten, da dies zu einer Überanpassung des Modells an die neu abgetastete Verteilung führt.
Beim Undersampling besteht die Gefahr, dass wichtige Daten beim Entfernen von Daten verloren gehen. Bei Oversampling besteht die Gefahr, dass die Trainingsdaten zu stark anpasst, vor allem, wenn die hinzugefügten Kopien der Minderheitenklasse Replikate der vorhandenen Daten sind. Es wurden viele ausgeklügelte Stichprobenverfahren entwickelt, um diese Risiken zu mindern.
Eine dieser Techniken ist das Lernen in zwei Phasen.42 Du trainierst dein Modell zunächst auf den neu gesampelten Daten. Die neu gesampelten Daten können unter durch ein zufälliges Undersampling großer Klassen gewonnen werden, bis jede Klasse nur noch N Instanzen aufweist. Anschließend passt du dein Modell anhand der Originaldaten an.
Eine weitere Technik ist das dynamic sampling: Während des Trainings werden die leistungsschwachen Klassen über- und die leistungsstarken Klassen unterprobt. Sie wurde von Pouyanfar et al. eingeführt,43 Die Methode zielt darauf ab, dem Modell weniger von dem zu zeigen, was es bereits gelernt hat, und mehr von dem, was es nicht gelernt hat.
Methoden auf Algorithmus-Ebene
Während Methoden auf Datenebene das Problem des Klassenungleichgewichts ( ) entschärfen, indem sie die Verteilung deiner Trainingsdaten verändern, behalten Methoden auf Algorithmus-Ebene die Verteilung der Trainingsdaten bei, verändern aber den Algorithmus, um ihn robuster gegenüber dem Klassenungleichgewicht zu machen.
Da die Verlustfunktion (oder die Kostenfunktion) den Lernprozess steuert, beinhalten viele Methoden auf Algorithmenebene eine Anpassung der Verlustfunktion. Der Grundgedanke ist: Wenn es zwei Instanzen gibt, x1 und x2, und der Verlust, der aus einer falschen Vorhersage für x1 resultiert, höher ist als für x2, wird das Modell der richtigen Vorhersage für x1 den Vorzug gegenüber der richtigen Vorhersage für x2 geben. Indem wir den Trainingsinstanzen, die uns wichtig sind, ein höheres Gewicht geben, können wir das Modell dazu bringen, sich mehr auf das Lernen dieser Instanzen zu konzentrieren.
Lass ist der Verlust, der durch die Instanz x für das Modell mit dem Parametersatz . Der Verlust des Modells wird oft als der durchschnittliche Verlust aller Instanzen definiert. N steht für die Gesamtzahl der Trainingsstichproben.
Diese Verlustfunktion bewertet den durch alle Instanzen verursachten Verlust gleich, auch wenn falsche Vorhersagen bei einigen Instanzen viel teurer sein können als falsche Vorhersagen bei anderen Instanzen. Es gibt viele Möglichkeiten, diese Kostenfunktion zu verändern. In diesem Abschnitt werden wir uns auf drei davon konzentrieren und mit dem kostensensitiven Lernen beginnen.
Kostensensitives Lernen
Ausgehend von der Erkenntnis, dass die Fehlklassifizierung verschiedener Klassen unterschiedliche Kosten verursacht, schlug Elkan 2001 das kostensensitive Lernen vor, bei dem die individuelle Verlustfunktion modifiziert wird, um diese unterschiedlichen Kosten zu berücksichtigen.44 Die Methode begann mit der Verwendung einer Kostenmatrix, um Cij festzulegen: die Kosten, wenn Klasse i als Klasse j klassifiziert wird. Wenn i = j, ist es eine korrekte Klassifizierung und die Kosten sind normalerweise 0. Wenn nicht, ist es eine Fehlklassifizierung. Wenn die Klassifizierung von POSITIVEN Beispielen als NEGATIV doppelt so teuer ist wie umgekehrt, kannst du C10 doppelt so hoch ansetzen wie C01.
Wenn du zum Beispiel zwei Klassen hast, POSITIVE und NEGATIVE, kann die Kostenmatrix wie in Tabelle 4-8 aussehen.
Tatsächliches NEGATIV | Tatsächlich POSITIV | |
---|---|---|
Vorausgesagt NEGATIV | C(0, 0) = C00 | C(1, 0) = C10 |
Vorhersage POSITIV | C(0, 1) = C01 | C(1, 1) = C11 |
Der Verlust, der durch den Fall x der Klasse i verursacht wird, wird zum gewichteten Durchschnitt aller möglichen Klassifizierungen von Fall x.
Das Problem bei dieser Verlustfunktion ist, dass du die Kostenmatrix manuell definieren musst, die für verschiedene Aufgaben in verschiedenen Größenordnungen unterschiedlich ist.
Klassengleicher Verlust
Ein Modell, das auf einem unausgewogenen Datensatz ( ) trainiert wurde, könnte die Mehrheitsklassen bevorzugen und falsche Vorhersagen für die Minderheitsklassen machen. Was wäre, wenn wir das Modell dafür bestrafen, dass es falsche Vorhersagen für Minderheitsklassen macht, um diese Verzerrung zu korrigieren?
In der Vanilleform können wir die Gewichtung jeder Klasse umgekehrt proportional zur Anzahl der Proben in dieser Klasse machen, so dass die selteneren Klassen eine höhere Gewichtung haben. In der folgenden Gleichung steht N für die Gesamtzahl der Trainingsproben:
Der Verlust, der durch die Instanz x der Klasse i verursacht wird, wird wie folgt berechnet, wobei Loss(x, j) der Verlust ist, wenn x als Klasse j klassifiziert wird. Es kann die Kreuzentropie oder eine andere Verlustfunktion sein.
Eine ausgefeiltere Version dieses Verlusts kann die Überschneidung zwischen den vorhandenen Stichproben berücksichtigen, z. B. ein klassenbezogener Verlust, der auf der effektiven Anzahl der Stichproben basiert.45
Fokaler Verlust
In unseren Daten sind einige Beispiele leichter zu klassifizieren als andere, und unser Modell könnte lernen, sie schnell zu klassifizieren. Wir wollen unserem Modell einen Anreiz geben, sich auf das Lernen der Beispiele zu konzentrieren, die es noch nicht richtig einordnen kann. Wie wäre es, wenn wir den Verlust so anpassen, dass eine Probe, die eine geringere Wahrscheinlichkeit hat, richtig zu sein, ein höheres Gewicht erhält? Das ist genau das, was der fokale Verlust tut.46 Die Gleichung für den fokalen Verlust und seine Leistung im Vergleich zum Kreuzentropieverlust ist in Abbildung 4-11 dargestellt.
In der Praxis hat sich gezeigt, dass Ensembles bei dem Problem des Klassenungleichgewichts helfen.47 Wir gehen in diesem Abschnitt jedoch nicht auf das Ensembling ein, da das Klassenungleichgewicht normalerweise nicht der Grund für den Einsatz von Ensembles ist. Ensemble-Techniken werden in Kapitel 6 behandelt.
Datenerweiterung
Bei der Datenerweiterung handelt es sich um eine Reihe von Techniken, mit denen die Menge der Trainingsdaten erhöht werden kann. Traditionell werden diese Techniken für Aufgaben eingesetzt, die nur über begrenzte Trainingsdaten verfügen, wie z. B. in der medizinischen Bildgebung. In den letzten Jahren hat sich jedoch gezeigt, dass sie auch dann nützlich sind, wenn wir viele Daten haben - erweiterte Daten können unsere Modelle robuster gegen Rauschen und sogar gegen Angriffe von Angreifern machen.
Die Datenerweiterung ist zu einem Standardschritt bei vielen Computer-Vision-Aufgaben geworden und findet ihren Weg in Aufgaben der natürlichen Sprachverarbeitung (NLP). Die Techniken hängen stark vom Datenformat ab, da sich die Bearbeitung von Bildern von der Bearbeitung von Texten unterscheidet. In diesem Abschnitt befassen wir uns mit drei Hauptarten der Datenerweiterung: einfache beschriftungserhaltende Transformationen, Perturbation, d. h. das Hinzufügen von Störungen, und Datensynthese. Für jede dieser Arten werden wir Beispiele für Computer Vision und NLP besprechen.
Einfache Label-erhaltende Transformationen
In der Computer Vision ist die einfachste Technik zur Datenerweiterung die zufällige Veränderung eines Bildes unter Beibehaltung seiner Beschriftung. Du kannst das Bild zuschneiden, spiegeln, drehen, invertieren (horizontal oder vertikal), Teile des Bildes löschen und vieles mehr. Das macht Sinn, denn ein gedrehtes Bild eines Hundes ist immer noch ein Hund. Gängige ML-Frameworks wie PyTorch, TensorFlow und Keras bieten alle Unterstützung für Bildvergrößerungen. Krizhevsky et al. schreiben in ihrem legendären AlexNet Paper: "Die umgewandelten Bilder werden in Python-Code auf der CPU generiert, während die GPU auf dem vorherigen Stapel von Bildern trainiert. Diese Verfahren zur Datenerweiterung sind also in der Tat rechenfrei.48
Im NLP kannst du ein Wort nach dem Zufallsprinzip durch ein ähnliches Wort ersetzen, vorausgesetzt, diese Ersetzung würde die Bedeutung oder die Stimmung des Satzes nicht verändern, wie in Tabelle 4-9 gezeigt. Ähnliche Wörter können entweder mit einem Wörterbuch mit synonymen Wörtern gefunden werden oder indem man Wörter findet, deren Einbettungen in einem Worteinbettungsraum nahe beieinander liegen.
Ursprünglicher Satz | Ich bin so froh, dich zu sehen. |
Generierte Sätze | Ich bin so froh, euch zu sehen. Ich bin so froh, euch alle zu sehen. Ich bin sehr froh, euch zu sehen. |
Diese Art der Datenerweiterung ist ein schneller Weg, um deine Trainingsdaten zu verdoppeln oder zu verdreifachen.
Perturbation
Perturbation ist auch eine label-erhaltende Operation, aber weil sie manchmal dazu benutzt wird, Modelle zu überlisten, damit sie falsche Vorhersagen machen, dachte ich, sie verdient einen eigenen Abschnitt.
Neuronale Netze sind im Allgemeinen empfindlich gegenüber Rauschen. Im Fall von Computer Vision bedeutet das, dass ein neuronales Netz ein Bild schon bei geringem Rauschen falsch klassifizieren kann. Su et al. haben gezeigt, dass 67,97 % der natürlichen Bilder im Kaggle CIFAR-10 Testdatensatz und 16,04 % der ImageNet Testbilder durch die Veränderung von nur einem Pixel falsch klassifiziert werden können (siehe Abbildung 4-12).49
Die Verwendung betrügerischer Daten, um ein neuronales Netzwerk zu falschen Vorhersagen zu verleiten, wird als adversarialer Angriff bezeichnet. Das Hinzufügen von Rauschen zu Stichproben ist eine gängige Technik, um negative Stichproben zu erzeugen. Der Erfolg dieser Angriffe ist umso größer, je höher die Auflösung der Bilder ist.
Das Hinzufügen von verrauschten Stichproben zu den Trainingsdaten kann den Modellen helfen, die Schwachstellen in ihrer gelernten Entscheidungsgrenze zu erkennen und ihre Leistung zu verbessern.51 Verrauschte Stichproben können entweder durch Hinzufügen von Zufallsrauschen oder durch eine Suchstrategie erzeugt werden. Moosavi-Dezfooli et al. haben einen Algorithmus namens DeepFool vorgeschlagen, der die kleinstmögliche Rauschinjektion findet, die nötig ist, um eine Fehlklassifizierung mit hoher Sicherheit zu verursachen.52 Diese Art der Augmentierung wird als adversarische Augmentierung bezeichnet.53
In der NLP ist die adversarische Augmentation weniger verbreitet (ein Bild eines Bären mit zufällig hinzugefügten Pixeln sieht immer noch wie ein Bär aus, aber wenn man einem zufälligen Satz zufällige Zeichen hinzufügt, wird er wahrscheinlich zu Kauderwelsch), aber Perturbation wurde verwendet, um Modelle robuster zu machen. Eines der bemerkenswertesten Beispiele ist BERT, bei dem das Modell 15 % aller Token in jeder Sequenz zufällig auswählt und 10 % der ausgewählten Token durch zufällige Wörter ersetzt. Wenn das Modell zum Beispiel den Satz "Mein Hund ist haarig" zufällig durch "Apfel" ersetzt, wird der Satz zu "Mein Hund ist Apfel". 1,5 % aller Token könnten also zu einer unsinnigen Bedeutung führen. Ihre Ablationsstudien zeigen, dass ein kleiner Anteil an zufälligen Ersetzungen ihrem Modell einen kleinen Leistungsschub verleiht.54
In Kapitel 6 gehen wir darauf ein, wie du mit Hilfe von Störungen nicht nur die Leistung deines Modells verbessern kannst, sondern auch, wie du seine Leistung bewerten kannst.
Datensynthese
Da das Sammeln von Daten teuer und langwierig ist, und viele potenzielle Datenschutzbedenken mit sich bringt, wäre es ein Traum, wenn wir dies ganz umgehen und unsere Modelle mit synthetischen Daten trainieren könnten. Auch wenn wir noch weit davon entfernt sind, alle Trainingsdaten zu synthetisieren, ist es möglich, einige Trainingsdaten zu synthetisieren, um die Leistung eines Modells zu verbessern.
Im NLP können Templates eine günstige Möglichkeit sein, dein Modell zu booten. Ein Team, mit dem ich zusammengearbeitet habe, nutzte Templates, um Trainingsdaten für seine Chatbot-KI zu erstellen. Eine Vorlage könnte so aussehen: "Finde ein [GESCHMACK] Restaurant im Umkreis von [ANZAHL] Meilen von [ORT]" (siehe Tabelle 4-10). Mit Listen aller möglichen Küchen, vernünftigen Zahlen (du würdest wahrscheinlich nie nach Restaurants suchen wollen, die weiter als 1.000 Meilen entfernt sind) und Standorten (Zuhause, Büro, Sehenswürdigkeiten, genaue Adressen) für jede Stadt kannst du Tausende von Trainingsabfragen aus einer Vorlage generieren.
Template | Finde ein [CUISINE]-Restaurant innerhalb von [ANZAHL] Meilen von [STANDORT]. |
Erstellte Abfragen | Finde ein vietnamesisches Restaurant im Umkreis von 2 Meilen von meinem Büro. Finde ein thailändisches Restaurant im Umkreis von 5 Meilen von meinem Zuhause. Finde ein mexikanisches Restaurant im Umkreis von 3 Meilen um die Google-Zentrale. |
In der Computer Vision besteht eine einfache Möglichkeit, neue Daten zu synthetisieren, darin, bestehende Beispiele mit diskreten Bezeichnungen zu kombinieren, um kontinuierliche Bezeichnungen zu erzeugen. Betrachten wir die Aufgabe, Bilder mit zwei möglichen Labels zu klassifizieren: DOG (kodiert als 0) und CAT (kodiert als 1). Aus dem Beispiel x1 mit dem Label DOG und dem Beispiel x2 mit dem Label CAT kannst du x' wie folgt erzeugen:
Die Bezeichnung von x' ist eine Kombination aus den Bezeichnungen von x1 und x2: . Diese Methode wird Mixup genannt. Die Autoren haben gezeigt, dass Mixup die Generalisierung der Modelle verbessert, die Speicherung fehlerhafter Etiketten reduziert, ihre Robustheit gegenüber negativen Beispielen erhöht und das Training generativer adversarischer Netze stabilisiert.55
Die Verwendung neuronaler Netze zur Synthese von Trainingsdaten ist ein spannender Ansatz, der zwar aktiv erforscht wird, aber in der Produktion noch nicht weit verbreitet ist. Sandfort et al. haben gezeigt, dass sie die Leistung ihres Modells bei der Segmentierung von Computertomografien (CT) erheblich verbessern konnten, indem sie die mit CycleGAN erzeugten Bilder zu ihren ursprünglichen Trainingsdaten hinzufügten.56
Wenn du mehr über Datenerweiterung für Computer Vision erfahren möchtest, ist "A Survey on Image Data Augmentation for Deep Learning" (Shorten und Khoshgoftaar 2019) eine umfassende Übersicht auf .
Zusammenfassung
Trainingsdaten bilden immer noch die Grundlage moderner ML-Algorithmen. Egal wie clever deine Algorithmen auch sein mögen, wenn deine Trainingsdaten schlecht sind, können sie keine gute Leistung erbringen. Es lohnt sich, Zeit und Mühe in die Erstellung von Trainingsdaten zu investieren, damit deine Algorithmen etwas Sinnvolles lernen können.
In diesem Kapitel haben wir die verschiedenen Schritte zur Erstellung von Trainingsdaten besprochen. Zunächst haben wir uns mit verschiedenen Stichprobenmethoden beschäftigt, sowohl mit Nicht-Wahrscheinlichkeitsstichproben als auch mit Zufallsstichproben, mit denen wir die richtigen Daten für unser Problem auswählen können.
Die meisten ML-Algorithmen, die heute eingesetzt werden, sind überwachte ML-Algorithmen, so dass die Beschaffung von Labels ein wesentlicher Bestandteil der Erstellung von Trainingsdaten ist. Viele Aufgaben, wie z. B. die Schätzung von Lieferzeiten oder Empfehlungssysteme, haben natürliche Labels. Natürliche Labels werden in der Regel verzögert vergeben, und die Zeit, die von der Abgabe einer Vorhersage bis zur Rückmeldung vergeht, ist die Länge der Feedbackschleife. Aufgaben mit natürlichen Bezeichnungen sind in der Branche weit verbreitet, was bedeuten kann, dass Unternehmen lieber mit Aufgaben mit natürlichen Bezeichnungen beginnen als mit Aufgaben ohne natürliche Bezeichnungen.
Bei Aufgaben, für die es keine natürlichen Beschriftungen gibt, verlassen sich Unternehmen oft auf menschliche Annotatoren, um ihre Daten zu beschriften. Die manuelle Beschriftung bringt jedoch viele Nachteile mit sich. Zum Beispiel kann die manuelle Beschriftung teuer und langsam sein. Um dem Mangel an Handbeschriftungen entgegenzuwirken, haben wir Alternativen wie schwache Überwachung, Semi-Supervision, Transferlernen und aktives Lernen diskutiert.
ML-Algorithmen funktionieren gut, wenn die Datenverteilung ausgewogen ist, und weniger gut, wenn die Klassen stark unausgewogen sind. Leider sind Probleme mit unausgewogenen Klassen in der realen Welt die Regel. Im folgenden Abschnitt haben wir erörtert, warum das Klassenungleichgewicht das Lernen von ML-Algorithmen erschwert. Außerdem haben wir verschiedene Techniken zum Umgang mit Klassenungleichgewicht erörtert, von der Auswahl der richtigen Metriken über die erneute Auswahl von Daten bis hin zur Änderung der Verlustfunktion, um das Modell dazu zu bringen, bestimmten Stichproben Aufmerksamkeit zu schenken.
Das Kapitel endet mit einer Diskussion über Datenerweiterungstechniken, die zur Verbesserung der Leistung und Generalisierung eines Modells sowohl für Computer Vision als auch für NLP-Aufgaben eingesetzt werden können.
Sobald du deine Trainingsdaten hast, willst du aus ihnen Merkmale extrahieren, um deine ML-Modelle zu trainieren, was wir im nächsten Kapitel behandeln werden.
1 Einige Leser könnten einwenden, dass dieser Ansatz bei großen Modellen nicht funktioniert, da bestimmte große Modelle bei kleinen Datensätzen nicht funktionieren, aber bei viel mehr Daten gut funktionieren. In diesem Fall ist es trotzdem wichtig, mit unterschiedlich großen Datensätzen zu experimentieren, um herauszufinden, wie sich die Größe des Datensatzes auf dein Modell auswirkt.
2 James J. Heckman, "Sample Selection Bias as a Specification Error", Econometrica 47, Nr. 1 (Januar 1979): 153-61, https://oreil.ly/I5AhM.
3 Rachel Lerman, "Google Is Testing Its Self-Driving Car in Kirkland", Seattle Times, 3. Februar 2016, https://oreil.ly/3IA1V.
4 Population bezieht sich hier auf eine "statistische Population", eine (potenziell unendliche) Menge aller möglichen Stichproben, die gezogen werden können.
5 Multilabel-Aufgaben sind Aufgaben, bei denen ein Beispiel mehrere Labels haben kann.
6 "SVM: Weighted Samples," scikit-learn, https://oreil.ly/BDqbk.
7 Xiaojin Zhu, "Semi-Supervised Learning with Graphs" (Dissertation, Carnegie Mellon University, 2005), https://oreil.ly/VYy4C.
8 Wenn etwas so offensichtlich zu beschriften ist, brauchst du kein Fachwissen.
9 Wir werden die programmatischen Etiketten im Abschnitt "Schwache Überwachung" behandeln .
10 Sofia Ira Ktena, Alykhan Tejani, Lucas Theis, Pranay Kumar Myana, Deepak Dilipkumar, Ferenc Huszar, Steven Yoo, and Wenzhe Shi, "Addressing Delayed Feedback for Continuous Training with Neural Networks in CTR Prediction," arXiv, July 15, 2019, https://oreil.ly/5y2WA.
11 Alexander Ratner, Stephen H. Bach, Henry Ehrenberg, Jason Fries, Sen Wu, und Christopher Ré, "Snorkel: Rapid Training Data Creation with Weak Supervision," Proceedings of the VLDB Endowment 11, no. 3 (2017): 269-82, https://oreil.ly/vFPjk.
12 Ratner et al., "Snorkel: Rapid Training Data Creation with Weak Supervision".
13 Jared A. Dunnmon, Alexander J. Ratner, Khaled Saab, Matthew P. Lungren, Daniel L. Rubin und Christopher Ré, "Cross-Modal Data Programming Enables Rapid Medical Machine Learning", Patterns 1, no. 2 (2020): 100019, https://oreil.ly/nKt8E.
14 Für die beiden Aufgaben in dieser Studie werden nur 18 bzw. 20 LFs verwendet. In der Praxis habe ich Teams gesehen, die Hunderte von LFs für jede Aufgabe verwenden.
15 Dummon et al., "Cross-Modal Data Programming".
16 Avrim Blum und Tom Mitchell, "Combining Labeled and Unlabeled Data with Co-Training", in Proceedings of the Eleventh Annual Conference on Computational Learning Theory (Juli 1998): 92-100, https://oreil.ly/T79AE.
17 Avital Oliver, Augustus Odena, Colin Raffel, Ekin D. Cubuk, and Ian J. Goodfellow, "Realistic Evaluation of Deep Semi-Supervised Learning Algorithms," NeurIPS 2018 Proceedings, https://oreil.ly/dRmPV.
18 Ein Token kann ein Wort, ein Zeichen oder ein Teil eines Wortes sein.
19 Jeremy Howard und Sebastian Ruder, "Universal Language Model Fine-tuning for Text Classification," arXiv, January 18, 2018, https://oreil.ly/DBEbw.
20 Pengfei Liu, Weizhe Yuan, Jinlan Fu, Zhengbao Jiang, Hiroaki Hayashi, and Graham Neubig, "Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing," arXiv, July 28, 2021, https://oreil.ly/0lBgn.
21 Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova, "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding," arXiv, October 11, 2018, https://oreil.ly/RdIGU; Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, et al., "Language Models Are Few-Shot Learners," OpenAI, 2020, https://oreil.ly/YVmrr.
22 Burr Settles, Active Learning (Williston, VT: Morgan & Claypool, 2012).
23 Wir werden uns in Kapitel 6 mit Ensembles beschäftigen.
24 Dana Angluin, "Queries and Concept Learning", Machine Learning 2 (1988): 319-42, https://oreil.ly/0uKs4.
25 Danke an Eugene Yan für dieses wunderbare Beispiel!
26 Andrew Ng, "Bridging AI's Proof-of-Concept to Production Gap" (HAI Seminar, 22. September 2020), Video, 1:02:07, https://oreil.ly/FSFWS.
27 Aus diesem Grund ist die Genauigkeit eine schlechte Kennzahl für Aufgaben mit Klassenungleichgewicht, wie wir im Abschnitt "Umgang mit Klassenungleichgewicht" näher erläutern werden .
28 Ich habe mir vorgestellt, dass es einfacher wäre, die ML-Theorie zu lernen, wenn ich nicht herausfinden müsste, wie ich mit dem Klassenungleichgewicht umgehen soll.
29 The Nilson Report, "Payment Card Fraud Losses Reach $27.85 Billion", PR Newswire, November 21, 2019, https://oreil.ly/NM5zo.
30 "Job Market Expert Explains Why Only 2% of Job Seekers Get Interviewed," WebWire, January 7, 2014, https://oreil.ly/UpL8S.
31 "Email and Spam Data", Talos Intelligence, letzter Zugriff Mai 2021, https://oreil.ly/lI5Jr.
32 Nathalie Japkowciz und Shaju Stephen, "The Class Imbalance Problem: A Systematic Study", 2002, https://oreil.ly/d7lVu.
33 Nathalie Japkowicz, "The Class Imbalance Problem: Significance and Strategies", 2000, https://oreil.ly/Ma50Z.
34 Wan Ding, Dong-Yan Huang, Zhuo Chen, Xinguo Yu, and Weisi Lin, "Facial Action Recognition Using Very Deep Networks for Highly Imbalanced Class Distribution," 2017 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA ASC), 2017, https://oreil.ly/WeW6J.
35 Ab Juli 2021 ist pos_label
bei der Verwendung von scikit-learn.metrics.f1_score
standardmäßig auf 1 gesetzt, aber du kannst es auf 0 ändern, wenn du 0 als positive Kennzeichnung haben möchtest.
36 Jesse Davis und Mark Goadrich, "The Relationship Between Precision-Recall and ROC Curves", Proceedings of the 23rd International Conference on Machine Learning, 2006, https://oreil.ly/s40F3.
37 Rafael Alencar, "Resampling Strategies for Imbalanced Datasets", Kaggle, https://oreil.ly/p8Whs.
38 Ivan Tomek, "An Experiment with the Edited Nearest-Neighbor Rule", IEEE Transactions on Systems, Man, and Cybernetics (Juni 1976): 448-52, https://oreil.ly/JCxHZ.
39 N.V. Chawla, K.W. Bowyer, L.O. Hall, und W.P. Kegelmeyer, "SMOTE: Synthetic Minority Over-sampling Technique, Journal of Artificial Intelligence Research 16 (2002): 341-78, https://oreil.ly/f6y46.
40 "Konvex" bedeutet hier ungefähr "linear".
41 Jianping Zhang und Inderjeet Mani, "kNN Approach to Unbalanced Data Distributions: A Case Study involving Information Extraction" (Workshop on Learning from Imbalanced Datasets II, ICML, Washington, DC, 2003), https://oreil.ly/qnpra; Miroslav Kubat und Stan Matwin, "Addressing the Curse of Imbalanced Training Sets: One-Sided Selection", 2000, https://oreil.ly/8pheJ.
42 Hansang Lee, Minseok Park, and Junmo Kim, "Plankton Classification on Imbalanced Large Scale Database via Convolutional Neural Networks with Transfer Learning," 2016 IEEE International Conference on Image Processing (ICIP), 2016, https://oreil.ly/YiA8p.
43 Samira Pouyanfar, Yudong Tao, Anup Mohan, Haiman Tian, Ahmed S. Kaseb, Kent Gauen, Ryan Dailey, et al., "Dynamic Sampling in Convolutional Neural Networks for Imbalanced Data Classification," 2018 IEEE Conference on Multimedia Information Processing and Retrieval (MIPR), 2018, https://oreil.ly/D3Ak5.
44 Charles Elkan, "The Foundations of Cost-Sensitive Learning", Proceedings of the Seventeenth International Joint Conference on Artificial Intelligence (IJCAI'01), 2001, https://oreil.ly/WGq5M.
45 Yin Cui, Menglin Jia, Tsung-Yi Lin, Yang Song, and Serge Belongie, "Class-Balanced Loss Based on Effective Number of Samples," Proceedings of the Conference on Computer Vision and Pattern, 2019, https://oreil.ly/jCzGH.
46 Tsung-Yi Lin, Priya Goyal, Ross Girshick, Kaiming He, and Piotr Dollár, "Focal Loss for Dense Object Detection," arXiv, 7. August 2017, https://oreil.ly/Km2dF.
47 Mikel Galar, Alberto Fernandez, Edurne Barrenechea, Humberto Bustince, and Francisco Herrera, "A Review on Ensembles for the Class Imbalance Problem: Bagging-, Boosting-, and Hybrid-Based Approaches," IEEE Transactions on Systems, Man, and Cybernetics, Part C (Applications and Reviews) 42, no. 4 (July 2012): 463-84, https://oreil.ly/1ND4g.
48 Alex Krizhevsky, Ilya Sutskever, und Geoffrey E. Hinton, "ImageNet Classification with Deep Convolutional Neural Networks, 2012, https://oreil.ly/aphzA.
49 Jiawei Su, Danilo Vasconcellos Vargas, und Sakurai Kouichi, "One Pixel Attack for Fooling Deep Neural Networks," IEEE Transactions on Evolutionary Computation 23, no. 5 (2019): 828-41, https://oreil.ly/LzN9D.
50 Su et al., "One Pixel Attack".
51 Ian J. Goodfellow, Jonathon Shlens und Christian Szegedy, "Explaining and Harnessing Adversarial Examples," arXiv, 20. März 2015, https://oreil.ly/9v2No; Ian J. Goodfellow, David Warde-Farley, Mehdi Mirza, Aaron Courville und Yoshua Bengio, "Maxout Networks, arXiv, 18. Februar 2013, https://oreil.ly/L8mch.
52 Seyed-Mohsen Moosavi-Dezfooli, Alhussein Fawzi, und Pascal Frossard, "DeepFool: A Simple and Accurate Method to Fool Deep Neural Networks," in Proceedings of IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016, https://oreil.ly/dYVL8.
53 Takeru Miyato, Shin-ichi Maeda, Masanori Koyama, and Shin Ishii, "Virtual Adversarial Training: A Regularization Method for Supervised and Semi-Supervised Learning," IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, https://oreil.ly/MBQeu.
54 Devlin et al., "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding".
55 Hongyi Zhang, Moustapha Cisse, Yann N. Dauphin, und David Lopez-Paz, "mixup: Beyond Empirical Risk Minimization", ICLR 2018, https://oreil.ly/lIM5E.
56 Veit Sandfort, Ke Yan, Perry J. Pickhardt, and Ronald M. Summers, "Data Augmentation Using Generative Adversarial Networks (CycleGAN) to Improve Generalizability in CT Segmentation Tasks," Scientific Reports 9, no. 1 (2019): 16884, https://oreil.ly/TDUwm.
Get Maschinelle Lernsysteme entwerfen now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.