2017-11-07 10 views
2

Angenommen, wir trainieren ein neuronales Netzwerkmodell, um die Zuordnung von der folgenden Eingabe zur Ausgabe zu lernen, wobei die Ausgabe Name Entity (NE) ist.NLP - Einbettungsauswahl von `Anfang` und` Ende` von Satz-Token

Eingabe: EU lehnt deutschen Aufruf ab, britisches Lamm zu boykottieren.

Output: ORG MISC O O O O O O MISC

ein Schiebefenster wird erstellt, um zu erfassen, um die Kontextinformationen, und dessen Ergebnisse in die Trainingsmodell als model_input zugeführt. Das Schiebefenster erzeugt Ergebnisse, wie folgend:

[['<s>', '<s>', 'EU', 'rejects', 'German'],\ 
['<s>', 'EU', 'rejects', 'German', 'call'],\ 
['EU', 'rejects', 'German', 'call', 'to'],\ 
['rejects', 'German', 'call', 'to', 'boycott'],\ 
['German', 'call', 'to', 'boycott', 'British'],\ 
['call', 'to', 'boycott', 'British', 'lamb'],\ 
['to', 'boycott', 'British', 'lamb', '.'],\ 
['boycott', 'British', 'lamb', '.', '</s>'],\ 
['British', 'lamb', '.', '</s>', '</s>']] 

<s> bedeutet Start des Satzes Token und </s> darstellt Satzende-Token und jedes Schiebefenster entspricht einem NE in ausgegeben.

Um diese Tokens, eine vortrainierte Einbettungsmodell verwendet Umwandeln Worte Vektoren (beispielsweise Handschuh), aber jene vortrainierte Modelle enthalten keine Tokens wie <s> und </s> zu verarbeiten. Ich denke, zufällige Initialisierung für <s> und </s> wird hier keine gute Idee sein, da die Skala solcher zufälligen Ergebnisse nicht mit anderen Glove-Einbettungen konsistent sein kann.

Frage: Welche Vorschläge für die Einrichtung Einbettungen für <s> und </s> und warum?

Antwort

2

Im Allgemeinen hängt die Antwort davon ab, wie Sie die Einbettungen in Ihrer Aufgabe verwenden möchten.

Ich vermute, dass die Verwendung von <s> und </s> Tokens von LSTM oder anderen wiederkehrenden neuronalen Netzwerk diktiert wird, die nach dem Einbetten Schicht geht. Wenn Sie Worteinbettungen selbst trainieren würden, würde ich Ihnen empfehlen, diese Token einfach loszuwerden, da sie keinen Mehrwert hinzufügen. Start- und Stopptoken spielen in LSTM eine Rolle (wenn auch nicht immer), aber ihre Worteinbettungen können beliebig sein, kleine Zufallszahlen sind in Ordnung, weil dieser Vektor von allen "normalen" Vektoren gleich weit entfernt wäre.

Wenn Sie nicht mit vortrainierten GloVe-Vektoren herumspielen wollen, würde ich Ihnen empfehlen, die Einbettungsschicht einzufrieren. Zum Beispiel kann dies im Tensorfluss durch tf.stop_gradient direkt nach dem Einbetten erreicht werden. Auf diese Weise wird das Netzwerk keine Beziehung zwischen <s> und anderen Wörtern lernen, aber es ist völlig in Ordnung, und alle bestehenden Beziehungen werden sich nicht ändern.

Verwandte Themen