Hinweis: Das Repository wird nicht gepflegt. Wenn Sie die Wartung übernehmen möchten, schreiben Sie mir gerne eine PN.
Sorgen Sie dafür, dass seq2seq für Keras funktioniert. Probieren Sie auch einige andere Implementierungen von seq2seq aus.
Der Code beinhaltet:
Warnung
Papiere
Ein tolles Bild
Einrichten und ausführen
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
und dann
python bin/test.py
Ergebnisse
Bisher wurden keine guten Ergebnisse erzielt:
[why ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[who ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[yeah ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[what is it ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as as i]
[why not ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[really ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
Ich vermute, dass es bei diesem Ansatz einige grundlegende Probleme gibt:
Da für Wortdarstellungen word2vec-Vektoren verwendet werden und das Modell für jedes nächste Wort einen ungefähren Vektor zurückgibt, akkumuliert sich dieser Fehler von einem Wort zum anderen und somit kann das Modell ab dem dritten Wort nichts Sinnvolles vorhersagen ... Dieses Problem könnte sein überwinden, wenn wir unseren ungefähren word2vec-Vektor bei jedem Thimstempel durch einen „richtigen“ Vektor ersetzen, dh denjenigen, der einem tatsächlichen Wort aus dem Wörterbuch entspricht. Macht es Sinn? Dazu müssen Sie jedoch in den seq2seq-Code eintauchen.
Das zweite Problem betrifft die Wortstichprobe: Selbst wenn es Ihnen gelingt, das oben genannte Problem zu lösen, werden die Antworten zu einfach und uninteressant sein, wenn Sie weiterhin argmax() verwenden, um bei jedem Zeitstempel das wahrscheinlichste Wort auszuwählen:
are you a human? -- no .
are you a robot or human? -- no .
are you a robot? -- no .
are you better than siri? -- yes .
are you here ? -- yes .
are you human? -- no .
are you really better than siri? -- yes .
are you there -- you ' re not going to be
are you there?!?! -- yes .
Um Sie nicht in die Irre zu führen: Diese Ergebnisse wurden auf einer anderen seq2seq-Architektur erzielt, die auf Tensorflow basiert.
Um die Ausgabeergebnisse zu diversifizieren, könnte eine Probenahme mit Temperatur verwendet werden, dies sollte jedoch wiederum innerhalb der seq2seq-Bibliothek erfolgen.