Ce référentiel contient une nouvelle méthode de formation contradictoire pour notre agent conversationnel génératif (GCA).
De plus amples détails sur cette nouvelle méthode de formation peuvent être trouvés dans l'article Oswaldo Ludwig, « End-to-end Adversarial Learning for Generative Conversational Agents », arXiv:1711.10122 cs.CL, novembre 2017. Dans le cas d'une publication utilisant des idées ou des éléments de code de ce référentiel, veuillez citer cet article.
Notre méthode considère le GCA comme un générateur visant à tromper un discriminateur qui qualifie les dialogues de générés par l'homme ou par la machine. Dans notre approche, le discriminateur effectue une classification au niveau du jeton, c'est-à-dire qu'il indique si le jeton actuel a été généré par des humains ou des machines. Pour ce faire, le discriminateur reçoit également en entrée les énoncés contextuels (l'historique du dialogue) et la réponse incomplète jusqu'au jeton actuel. Cette nouvelle approche rend possible la formation de bout en bout par rétropropagation. Un processus d'auto-conversation permet de produire un ensemble de données générées avec plus de diversité pour l'entraînement contradictoire. Cette approche améliore les performances sur les questions non liées aux données d'entraînement.
Le modèle entraîné disponible ici utilisait un ensemble de données collectées à partir de dialogues de cours d'anglais en ligne, disponibles ici.
Notre modèle GCA peut être expliqué par l’organigramme suivant :
tandis que le pseudocode suivant explique notre algorithme GCA :
Notre nouvelle formation contradictoire de bout en bout peut être expliquée par le modèle Keras suivant (implémenté dans le fichier train_bot_GAN.py), qui est composé du générateur et du discriminateur. Les blocs jaunes appartiennent au GCA (le générateur), tandis que les blocs verts appartiennent au discriminateur. Les blocs blancs sont partagés entre le générateur et le discriminateur :
tandis que le pseudocode suivant explique le nouvel algorithme (voir l'article pour la définition des variables) :
Pour discuter avec les modèles pré-entraînés :
Pour évaluer les lignes de dialogue à l'aide du discriminateur pré-entraîné :
Pour vous entraîner de bout en bout en utilisant la nouvelle méthode contradictoire :
Si vous souhaitez démarrer la formation contradictoire à partir de zéro, créez le fichier de poids my_model_weights.h5 (pré-entraîné à la nouvelle méthode contradictoire) égal à my_model_weights20.h5 (pré-entraîné par le forçage de l'enseignant) et exécutez train_script.py.