Frage

Ich habe aus diesen beiden Quellen etwas über NCE (eine Form der Kandidatenabtastung) gelesen:

Tensorflow -Schreiben

Original Papier

Kann mir jemand mit Folgendem helfen:

  1. Eine einfache Erklärung für die Funktionsweise von NCE (ich fand, dass das oben genannte analysiert und ein Verständnis für das Verständnis für etwas Intuitives ist, das zu der vorgestellten Mathematik führt, die großartig sein würde).
  2. Nach Punkt 1 oben eine natürlich intuitive Beschreibung, wie sich dies von der negativen Stichprobe unterscheidet. Ich kann sehen, dass sich die Formel leicht verändert, aber die Mathematik nicht verstehen konnte. Ich habe ein intuitives Verständnis der negativen Stichproben im Kontext von word2vec - Wir wählen zufällig einige Proben aus dem Wortschatz aus V und aktualisieren nur die, weil |V| ist groß und dies bietet eine Beschleunigung. Bitte korrigieren Sie, wenn Sie falsch sind.
  3. Wann kann man welches und wie entschieden? Es wäre großartig, wenn Sie Beispiele einfügen könnten (möglicherweise leicht zu verstehen Anwendungen)
  4. Ist NCE besser als negative Abtastung? Besser auf welche Weise?

Vielen Dank.

War es hilfreich?

Lösung

Aus diesem Beitrag entnommen:https://stats.stackexchange.com/a/245452/154812

Die Angelegenheit

Es gibt einige Probleme beim Erlernen der Wortvektoren mit einem "Standard" neuronalen Netzwerk. Auf diese Weise werden die Wortvektoren gelernt, während das Netzwerk lernt, das nächste Wort mit einem Wortfenster (die Eingabe des Netzwerks) vorherzusagen.

Das nächste Wort vorherzusagen ist wie die Vorhersage der Klasse. Das heißt, ein solches Netzwerk ist nur ein "Standard" multinomial (Multi-Class-Klassifikator). Und dieses Netzwerk muss so viele Ausgangsneuronen haben wie Klassen. Wenn Klassen tatsächliche Wörter sind, ist die Anzahl der Neuronen gut.

Ein "Standard" neuronales Netzwerk wird normalerweise mit einer Querentropiekostenfunktion trainiert, die die Werte der Ausgangsneuronen erfordert, um Wahrscheinlichkeiten darzustellen - was bedeutet, dass die vom Netzwerk für jede Klasse berechnete Ausgabe "bewertet" ist Tatsächliche Wahrscheinlichkeiten für jede Klasse. Dieser Normalisierungsschritt wird mittels der Softmax -Funktion erreicht. Softmax ist sehr kostspielig, wenn sie auf eine riesige Ausgangsschicht angewendet wird.

Die (a) Lösung

Um dieses Problem zu lösen, dh die teure Berechnung des Softmax, wort2VEC verwendet eine Technik, die als rauschkontrastive Schätzung bezeichnet wird. Diese Technik wurde durch [a] (neu von [b]) eingeführt, dann in [c], [d], [e] verwendet, um Worteinbettungen aus unbeschriebenem natürlichen Sprachtext zu lernen.

Die Grundidee besteht darin, ein multinomiale Klassifizierungsproblem (da es das Problem der Vorhersage des nächsten Wortes) in ein Binärklassifizierungsproblem umzuwandeln. Anstatt Softmax zu verwenden, um eine echte Wahrscheinlichkeitsverteilung des Ausgabeworts zu schätzen, wird stattdessen eine binäre logistische Regression (binäre Klassifizierung) verwendet.

Für jede Trainingsprobe wird dem erweiterten (optimierten) Klassifizierer ein echtes Paar (ein Mittelwort und ein anderes Wort, das in seinem Kontext erscheint) und einer Reihe von KK -Verfolgungspaaren (bestehend aus dem Mittelwort und einem zufällig ausgewählten Wort aus dem Wortschatz). Indem der Klassifikator lernt, die wahren Paare von beschädigten zu unterscheiden, lernt er letztendlich die Wortvektoren.

Dies ist wichtig: Anstatt das nächste Wort (die "Standard -Trainingstechnik) vorherzusagen, sagt der optimierte Klassifizierer einfach voraus, ob ein Paar Wörter gut oder schlecht ist.

Word2VEC passt den Prozess geringfügig an und nennt ihn negative Abtastungen. In Word2VEC werden die Wörter für die negativen Proben (für die beschädigten Paare verwendet) aus einer speziell entwickelten Verteilung gezogen, die weniger häufige Wörter bevorzugt, die häufiger gezeichnet werden sollen.

Verweise

A] (2005) - Kontrastive Schätzung: Trainingsprotokoll -lineare Modelle für unbezeichnete Daten

B] (2010) - Rauschkontrastive Schätzung: Ein neues Schätzungsprinzip für nicht operalisierte statistische Modelle

C] (2008) - Eine einheitliche Architektur für die Verarbeitung natürlicher Sprache: Tiefe neuronale Netze mit Multitasking -Lernen

D] (2012) - Ein schneller und einfacher Algorithmus für die Schulung neuronaler probabilistischer Sprachmodelle.

E] (2013) - Lernwort Einbettung effizient mit rauschkontrastiver Schätzung.

Andere Tipps

Ehrlich gesagt gibt es keinen intuitiven Weg zu verstehen, warum NCE -Verlust funktionieren wird, ohne seine Mathematik tief zu verstehen. Um die Mathematik zu verstehen, sollten Sie das Originalpapier lesen.

Der Grund, warum der NCE -Verlust funktionieren wird, liegt darin, dass NCE die maximale Wahrscheinlichkeitsschätzung (MLE) annähert $ k $ steigt.

Die Tensorflow -Implementierung funktioniert in der Praxis. Grundsätzlich für jede Daten $ (x, y) $, $ y $ ist die markierte Klasse aus den Daten, Tensorflow NCE -Verlustproben $ k $ Klassen aus Rauschverteilungen. Wir berechnen eine spezielle Version der Ziffern für jeden der Klassen (1 aus Daten + $ k $ aus Rauschverteilungen) unter Verwendung der Gleichung

Acht

Wo $ P_n (w) $ ist die Rauschverteilung. Mit den Ziffern für jede berechnete Klassen verwenden TensorFlow die Ziffern, um den Softmax -Verlust für die Binärklassifizierung (logistische Logistikregression) für jeden der Klassen zu berechnen und diese Verluste als endgültigen NCE -Verlust zusammen zu fügen.

Die Implementierung ist jedoch konzeptionell falsch, da das Verhältnis von Rauschen zu realen Daten $ k $ unterscheidet sich von der Anzahl der Klassen $ n $ Abgetastet aus Rauschverteilungen. TensorFlow NCE liefert keine Variable für das Rauschen zu Datenverhältnis und nimmt implizit an $ n = k $ was ich denke, ist konzeptionell falsch.

Die ursprünglichen NCE -Papiere haben die Ableitungen des Beweises viel übersprungen, so dass es wirklich schwer zu verstehen ist. Um die Mathematik über NCE leichter zu verstehen, habe ich einen Blog -Beitrag zu dieser Annotation der Mathematik aus den NCE -Papieren:

https://leimao.github.io/article/noise-contrastive-estimation/.

College im zweiten Jahr oder höher sollte in der Lage sein, es zu verstehen.

Grundsätzlich wählt dies eine Probe aus der wahren Verteilung aus, die aus der wahren Klasse und einigen anderen lauten Klassenetiketten besteht. Dann den Softmax darüber nehmen.

Dies basiert auf Stichprobenwörtern aus der wahren Verteilung und der Rauschverteilung.

Hier besteht die Grundidee darin, den logistischen Regressionsklassifizierer zu trainieren, der die Proben trennen kann, die aus der echten Verteilung und der Probe aus der Rauschverteilung erhalten wurden. Denken Sie daran, wenn wir über die Proben sprechen, die aus der wahren Verteilung erhalten wurden, sprechen wir nur über eine Probe, die die wahre Klasse ist, die aus der Modellverteilung erhalten wird.

Hier habe ich über den NCE -Verlust und darüber erklärt, wie es sich vom NCE -Verlust unterscheidet.

Rauschenkontrastive Schätzung: Lösung für teure Softmax.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit datascience.stackexchange
scroll top