Nota: el repositorio no se mantiene. No dudes en enviarme un mensaje privado si deseas encargarte del mantenimiento.
Haga que seq2seq para keras funcione. Y también pruebe algunas otras implementaciones de seq2seq.
El código incluye:
Advertencia
Papeles
Buena foto
Configurar y ejecutar
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
y luego
python bin/test.py
Resultados
Hasta el momento no se han obtenido buenos resultados:
[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]
Mi conjetura es que hay algunos problemas fundamentales en este enfoque:
Dado que los vectores word2vec se utilizan para representaciones de palabras y el modelo devuelve un vector aproximado para cada palabra siguiente, este error se acumula de una palabra a otra y, por lo tanto, a partir de la tercera palabra, el modelo no puede predecir nada significativo... Este problema podría ser Se supera si reemplazamos nuestro vector aproximado de word2vec cada marca de tiempo con un vector "correcto", es decir, el que corresponde a una palabra real del diccionario. ¿Tiene sentido? Sin embargo, es necesario profundizar en el código seq2seq para hacerlo.
El segundo problema se relaciona con el muestreo de palabras: incluso si logras resolver el problema antes mencionado, en caso de que sigas usando argmax() para elegir la palabra más probable en cada marca de tiempo, las respuestas serán demasiado simples y poco interesantes, como:
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 .
No quiero engañarlo: estos resultados se lograron en una arquitectura seq2seq diferente, basada en tensorflow.
Se podría utilizar el muestreo con temperatura para diversificar los resultados de salida; sin embargo, esto nuevamente debe hacerse dentro de la biblioteca seq2seq.