In dieser Geschichte führen wir das Thema der schwachen Überwachung im maschinellen Lernen ein und untersuchen es ausführlich. Schwache Überwachung ist ein Lernparadigma im maschinellen Lernen, das in den letzten Jahren erhebliche Aufmerksamkeit erlangt hat. Um es kurz zusammenzufassen: Vollständige Überwachung erfordert, dass wir einen Trainingssatz haben (x,y) Wo j ist die richtige Bezeichnung für X; inzwischen nimmt eine schwache Aufsicht eine allgemeine Stellung ein (x, y‘) Wo ja muss nicht korrekt sein (d. h. es ist möglicherweise falsch; ein schwaches Label). Darüber hinaus können wir bei schwacher Aufsicht mehrere schwache Aufsichten haben, sodass einer (x, y’1, y’2, …, y’F) für jedes Beispiel wobei jeder ja stammt aus einer anderen Quelle und ist möglicherweise falsch.
Inhaltsverzeichnis
∘ Problemstellung
∘ Rahmenbedingungen
∘ Allgemeine Architektur
∘ Schnorchel
∘ Beispiel für schwache Aufsicht
Problemstellung
Praktischer ausgedrückt trägt schwache Überwachung dazu bei, das zu lösen, was ich gerne das Dilemma des überwachten maschinellen Lernens nenne. Wenn Sie ein Unternehmen oder eine Individual mit einer neuen Idee im Bereich des maschinellen Lernens sind, benötigen Sie Daten. Es ist oft nicht so schwer, viele Proben zu sammeln (x1, x2, …, xm) und manchmal kann es sogar programmgesteuert durchgeführt werden; das eigentliche Dilemma ist jedoch, dass Sie menschliche Annotatoren einstellen müssen, um diese Daten zu kennzeichnen, und professional Kennzeichnung etwa $Z zahlen müssen. Das Downside ist nicht nur, dass Sie möglicherweise nicht wissen, ob das Projekt so viel wert ist, sondern auch, dass Sie es sich möglicherweise gar nicht leisten können, Annotatoren einzustellen, da dieser Prozess insbesondere in Bereichen wie Recht und Medizin recht kostspielig sein kann.
Sie fragen sich vielleicht, wie eine schwache Überwachung dieses Downside lösen kann. Einfach ausgedrückt: Anstatt Kommentatoren dafür zu bezahlen, Ihnen Beschriftungen zu geben, bitten Sie sie, Ihnen einige allgemeine Regeln zu geben, die bei der Beschriftung der Daten manchmal ungenau sein können (was viel weniger Zeit und Geld kostet). In einigen Fällen kann es für Ihr Entwicklungsteam sogar trivial sein, diese Regeln selbst herauszufinden (z. B. wenn für die Aufgabe keine Expertenkommentatoren erforderlich sind).
Betrachten wir nun einen Anwendungsbeispiel. Sie versuchen, ein NLP-System zu erstellen, das Wörter maskiert, die vertraulichen Informationen wie Telefonnummern, Namen und Adressen entsprechen. Anstatt Leute einzustellen, die Wörter in einem Korpus von Sätzen, die Sie gesammelt haben, kennzeichnen, schreiben Sie einige Funktionen, die alle Daten automatisch kennzeichnen, basierend darauf, ob das Wort nur aus Zahlen besteht (wahrscheinlich, aber nicht sicher eine Telefonnummer), ob das Wort mit einem Großbuchstaben beginnt, aber nicht am Satzanfang steht (wahrscheinlich, aber nicht sicher ein Identify) usw. Anschließend trainieren Sie Ihr System anhand der schwach gekennzeichneten Daten. Sie denken vielleicht, dass das trainierte Modell nicht besser sein wird als solche Kennzeichnungsquellen, aber das ist falsch; schwache Überwachungsmodelle sind von Natur aus so konzipiert, dass sie über die Kennzeichnungsquellen hinaus verallgemeinern, indem sie wissen, dass Unsicherheit besteht, und diese oft auf die eine oder andere Weise berücksichtigen.
Rahmenbedingungen
Sehen wir uns nun das Framework der schwachen Überwachung, wie es bei der Verarbeitung natürlicher Sprache eingesetzt wird, genauer an.
✦ Gegeben
Eine Menge von F Beschriftungsfunktionen {L1 L2,…,LF} Wo Lj weist einer Eingabe ein schwaches (d. h. möglicherweise falsches) Label zu X wobei jede Beschriftungsfunktion Lj kann eines der folgenden sein:
- Crowdsource-Annotator (manchmal sind sie nicht so genau)
- Bezeichnung aufgrund von Distanzüberwachung (d. h. aus einer anderen Wissensbasis extrahiert)
- Schwaches Modell (z. B. von Natur aus schwach oder für eine andere Aufgabe trainiert)
- Heuristische Funktion (z. B. Beobachtung von Labels basierend auf der Existenz eines Schlüsselworts oder Musters oder definiert durch einen Fachexperten)
- Gazetteers (z. B. Beobachtung von Etiketten basierend auf ihrem Vorkommen in einer bestimmten Liste)
- LLM-Aufruf unter einer bestimmten Eingabeaufforderung P (aktuelle Arbeit)
- Jede Funktion im Allgemeinen, die (vorzugsweise) beim Erraten der Bezeichnung von x eine bessere Leistung erzielt als ein zufälliges Raten.
Man geht allgemein davon aus, dass Li kann auf die Angabe einer Bezeichnung verzichten (z. B. eine heuristische Funktion wie „Wenn das Wort Zahlen enthält, beschriften Sie es mit der Telefonnummer, andernfalls nicht.“).
Angenommen, der Trainingssatz enthält N Beispiele. Dann entspricht dies im Fall der Sequenzklassifizierung einer (N,F)-Matrix schwacher Labels. Bei der Tokenklassifizierung mit einer Sequenz der Länge T handelt es sich um eine (N,T,F)-Matrix schwacher Labels.
✦ Gesucht
Ziel ist es, ein Modell M zu trainieren, das die schwach gekennzeichneten Daten sowie alle starken Daten (sofern vorhanden) effektiv nutzt.
✦ Häufige NLP-Aufgaben
- Sequenzklassifizierung (z. B. Sentimentanalyse) oder Token-Klassifizierung (z. B. Erkennung benannter Entitäten), wobei es sich bei den Kennzeichnungsfunktionen üblicherweise um heuristische Funktionen oder Ortsverzeichnisse handelt.
- Ressourcenarme Übersetzung (x→y) wobei die Beschriftungsfunktion(en) normalerweise ein schwächeres Übersetzungsmodell ist (z. B. ein Übersetzungsmodell in umgekehrter Richtung (y→x) mehr hinzufügen (x,y) Übersetzungspaare.
Allgemeine Architektur
Für Sequenz- oder Token-Klassifizierungsaufgaben nimmt die in der Literatur am häufigsten verwendete Architektur plausibel diese Kind an:
Der Label-Modell lernt, die Ausgaben der Label-Funktionen auf probabilistische oder deterministische Labels abzubilden, die zum Trainieren des Endmodells verwendet werden. Mit anderen Worten, es nimmt die oben besprochene (N,F)- oder (N,T,F)-Labelmatrix und gibt eine (N)- oder (N,T)-Matrix von Labels zurück (bei denen es sich häufig um probabilistische (d. h. weiche) Labels handelt).
Der Endmodell wird nach diesem Schritt separat verwendet und ist lediglich ein gewöhnlicher Klassifikator, der mit Softlabels arbeitet (Cross-Entropy-Loss ermöglicht dies), die vom Label-Modell erzeugt werden. Einige Architekturen verwenden Deep Studying, um Label- und Endmodelle zusammenzuführen.
Beachten Sie, dass wir das Labelmodell, nachdem wir es trainiert haben, zum Generieren der Labels für das Endmodell verwenden und danach das Labelmodell nicht mehr verwenden. In diesem Sinne unterscheidet sich dies deutlich vom Staking, auch wenn die Labelfunktionen andere Machine-Studying-Modelle sind.
Eine andere Architekturwas bei Übersetzungen die Standardeinstellung ist (und bei der Sequenz-/Token-Klassifizierung weniger üblich ist), besteht darin, die schwachen Beispiele (src, trg) anhand ihrer Qualität zu gewichten (normalerweise nur eine Kennzeichnungsfunktion für Übersetzungen, die, wie bereits besprochen, ein schwaches Modell in umgekehrter Richtung ist). Eine solche Gewichtung kann dann in der Verlustfunktion verwendet werden, sodass das Modell aus Beispielen besserer Qualität mehr und aus solchen minderer Qualität weniger lernt. Ansätze in diesem Fall versuchen, Methoden zur Bewertung der Qualität eines bestimmten Beispiels zu entwickeln. Ein Ansatz verwendet beispielsweise den Roundtrip-BLEU-Rating (d. h. übersetzt den Satz ins Ziel und dann zurück in die Quelle), um eine solche Gewichtung abzuschätzen.
Schnorchel
Um ein Beispiel dafür zu sehen, wie das Etikettenmodell funktionieren kann, können wir uns ansehen: Schnorchel Dies ist wohl die grundlegendste Arbeit im Bereich der schwachen Überwachung zur Sequenzklassifizierung.
In Snorkel wollten die Autoren herausfinden, P(yi|Λ(xi)) Wo Λ(xi) ist der schwache Labelvektor des i-ten Beispiels. Sobald diese Wahrscheinlichkeit gefunden ist, können wir sie eindeutig als weiches Label für das Endmodell verwenden (da, wie gesagt, Cross Entropy Loss weiche Labels verarbeiten kann). Es ist auch klar, dass, wenn wir P(y, Λ(x)) dann können wir leicht verwenden, um zu finden P(y|Λ(x)).
Aus der obigen Gleichung sehen wir, dass sie die gleiche Hypothese wie die logistische Regression zur Modellierung verwendeten P(y, Λ(x)) (Z steht für Normalisierung wie bei Sigmoid/Softmax). Der Unterschied besteht darin, dass statt wx wir haben Die Differenz zwischen der yi- und der xi-Achse beträgt 0,1 dpt. Insbesondere, φ(Λ(xi),yi) ist ein Vektor der Dimensionalität 2F+|C|. F ist die Anzahl der Beschriftungsfunktionen, wie bereits erwähnt; C ist die Menge der korrelierten Beschriftungsfunktionspaare (additionally ist |C| die Anzahl der korrelierten Paare). Die Autoren verweisen in einem anderen Artikel auf eine Methode zur Automatisierung der Erstellung von C, auf die wir hier der Kürze halber nicht näher eingehen.
Der Vektor φ(Λ(xi),yi) enthält:
- F binäre Elemente, um anzugeben, ob jede der Beschriftungsfunktionen für das gegebene Beispiel enthalten ist
- F binäre Elemente, um anzugeben, ob jede der Beschriftungsfunktionen dem wahren Label y entspricht (hier wird y als Variable belassen; es ist eine Eingabe für die Verteilung), wenn man dieses Beispiel betrachtet
- C binäre Elemente, um anzugeben, ob jedes korrelierte Paar in diesem Beispiel die gleiche Stimme abgegeben hat
Sie trainieren dann diese Labelmodelle (d. h. schätzen den Gewichtsvektor der Länge 2F+|C|) durch Lösen des folgenden Ziels (Minimierung der negativen Log-Randwahrscheinlichkeit):
Beachten Sie, dass sie keine Informationen über y benötigen, da dieses Ziel unabhängig von einem bestimmten Wert, wie durch die Summe angegeben, gelöst wird. Wenn Sie genau hinsehen (das Negativ und den Logarithmus rückgängig machen), stellen Sie möglicherweise fest, dass dies dem Finden der Gewichte entspricht, die die Wahrscheinlichkeit für eine der wahren Bezeichnungen maximieren.
Sobald das Label-Modell trainiert ist, verwenden sie es zur Erstellung N weiche Etiketten P(y1|Λ(x1)), P(y2|Λ(x2)),…,P(yN|Λ(xN)) und verwenden Sie dies normalerweise, um ein diskriminierendes Modell (d. h. einen Klassifikator) zu trainieren.
Beispiel für schwache Aufsicht
Snorkel bietet ein hervorragendes Tutorial zur Spam-Klassifizierung Hier. Skweak ist ein weiteres Paket (und Dokument), das für die schwache Überwachung der Token-Klassifizierung von grundlegender Bedeutung ist. Dies ist ein Beispiel für den Einstieg in Skweak, wie auf gezeigt ihr Github:
Definieren Sie zunächst die Beschriftungsfunktionen:
import spacy, re
from skweak import heuristics, gazetteers, generative, utils### LF 1: heuristic to detect occurrences of MONEY entities
def money_detector(doc):
for tok in doc(1:):
if tok.textual content(0).isdigit() and tok.nbor(-1).is_currency:
yield tok.i-1, tok.i+1, "MONEY"
lf1 = heuristics.FunctionAnnotator("cash", money_detector)
### LF 2: detection of years with a regex
lf2= heuristics.TokenConstraintAnnotator("years", lambda tok: re.match("(19|20)d{2}$",
tok.textual content), "DATE")
### LF 3: a gazetteer with a number of names
NAMES = (("Barack", "Obama"), ("Donald", "Trump"), ("Joe", "Biden"))
trie = gazetteers.Trie(NAMES)
lf3 = gazetteers.GazetteerAnnotator("presidents", {"PERSON":trie})
Wenden Sie sie auf den Korpus an
# We create a corpus (right here with a single textual content)
nlp = spacy.load("en_core_web_sm")
doc = nlp("Donald Trump paid $750 in federal earnings taxes in 2016")# apply the labelling capabilities
doc = lf3(lf2(lf1(doc)))
Etikettenmodell erstellen und anpassen
# create and match the HMM aggregation mannequin
hmm = generative.HMM("hmm", ("PERSON", "DATE", "MONEY"))
hmm.match((doc)*10)# as soon as fitted, we merely apply the mannequin to mixture all capabilities
doc = hmm(doc)
# we will then visualise the ultimate outcome (in Jupyter)
utils.display_entities(doc, "hmm")
Dann können Sie natürlich zusätzlich einen Klassifikator trainieren, indem Sie die geschätzten Smooth Labels verwenden.
In diesem Artikel haben wir das Downside der schwachen Überwachung untersucht, eine formale Definition bereitgestellt und die allgemeine Architektur skizziert, die in diesem Zusammenhang typischerweise verwendet wird. Wir haben uns auch mit Snorkel befasst, einem der grundlegenden Modelle der schwachen Überwachung, und zum Abschluss ein praktisches Beispiel zur Veranschaulichung der Anwendung schwacher Überwachung gegeben.
Ich hoffe, Sie fanden den Artikel nützlich. Bis zum nächsten Mal, au revoir.
Verweise
(1) Zhang, J. et al. (2021) Wrench: Ein umfassender Maßstab für schwache Aufsicht, arXiv.org. Verfügbar um: https://arxiv.org/abs/2109.11377 .
(2) Ratner, A. et al. (2017) Schnorchel: Schnelle Trainingsdatenerstellung mit schwacher Überwachung, arXiv.org. Verfügbar um: https://arxiv.org/abs/1711.10160.
(3) NorskRegnesentral (2021) NorskRegnesentral/skweak: Skweak: Ein Software program-Toolkit für schwache Überwachung, angewendet auf NLP-Aufgaben, GitHub. Verfügbar um: https://github.com/NorskRegnesentral/skweak.