2017-12-22 11 views
2

Ich habe einen großen Textkorpus von etwa ~ 7M Zeichen, die ich ein LSTM-Netzwerk auf. Jedoch sehe ich durchweg, dass nach etwa der 5. Epoche, anstatt der erzeugten Sätze, sie zu völligem Müll werden. Ich habe ein Beispiel unten eingefügt:LSTM-Netzwerk beginnt nach ein paar Iterationen zu erzeugen Junk

Generating with seed: "n who is in possession of the biggest ro" 
n who is in possession of the biggest ro to tato ton ant an to o 
ona toon t o o taon an s to ao t tan t tout att tj ton an o t an $ 

Ich habe mit anderen Temperaturen auch versucht. Das oben aufgeführte Beispiel war das konservativste. Hier ist eine andere Generation:

Generating with seed: 'to sin, and most of the known world is n' 
to sin, and most of the known world is na ararea t tarre a araa arae 
tor tae a a aaa aaata ater tje aea arare ar araererrt tmaear araae 

Zum Debuggen, ich landete Kopie der LSTM example from keras einfügen und trainiert es auf meinem Korpus. Um Iteration 5 herum beginnt es, Müll zu erzeugen.

Irgendwelche Ideen, wie man dies debuggt oder was das eine Abzeichnung sein könnte? Es beginnt mit viel kohärenteren Vorhersagen, fällt aber plötzlich ab.

Antwort

1

Normalerweise sind 5 Epochen oft zu früh, um voreilige Schlüsse zu ziehen. RNN kann Text erzeugen, der weniger nach Müll aussieht, obwohl er noch nichts gelernt hat. Sie sollten also anfangen, sich Sorgen zu machen, wenn der gesampelte Text bei jeder Iteration offensichtlich abnimmt, andernfalls lassen Sie es einfach lernen.

Wenn dies passiert, sollten Sie zuerst prüfen, wie sich die Wahrscheinlichkeitsverteilung mit der Zeit entwickelt. Zum Beispiel diese Probe

a ararea t tarre a araa arae 
tor tae a a aaa aaata ater tje aea arare ar araererrt tmaear araae 

... zeigt deutlich, dass a Wahrscheinlichkeit zu hoch ist. Ich glaube nicht, dass es eine Menge aa Wiederholungen in Ihren Trainingsdaten gibt, daher sollte die Subsequenz aaata sehr unwahrscheinlich sein. Um dies zu überprüfen, drucken Sie den maximalen Wahrscheinlichkeitswert zusammen mit dem Zeichen, dem er entspricht (die Verteilungszusammenfassung wird ebenfalls funktionieren). Wenn Sie diese Wahrscheinlichkeitszunahme sehen, ist das mit ziemlicher Sicherheit das Problem.

Es kann verschiedene Gründe dafür geben, angefangen bei Datenverarbeitungs- oder Eingabe-Pipeline-Fehlern bis hin zu fehlerhaften Netzwerkverdrahtungen. Zum Beispiel war ein bestimmter Fehler, den ich sah, mit dem Index 0 verwandt, der einem unbekannten Zeichen oder einem Auffüllen entsprach, aber tatsächlich von LSTM als ein gültiges Zeichen gesehen wurde. Da es viele von ihnen gab, erfuhr das Netzwerk genau das, daher stieg seine Wahrscheinlichkeit.

+0

danke für die Antwort. Also habe ich es tatsächlich über 21 Stunden, ~ 100 Epochen trainieren lassen, aber es gab keine Verbesserung in seiner Ausgabe. Ich werde versuchen, den Wahrscheinlichkeitswert zu überprüfen und zu sehen, was es ergibt. Dies war die Ausgabe von der letzten Iteration mit der höchsten Temperatur: um jeden einzelnen Rick zu töten und um zu töten oder um die Ohnmacht zu überwinden – shekit

Verwandte Themen