Voici ma tentative de recréer Meena, un chatbot de pointe développé par Google Research et décrit dans l'article Towards a Human-like Open-Domain Chatbot.
Pour cette implémentation, j'ai utilisé la bibliothèque d'apprentissage en profondeur tensor2tensor, en utilisant un modèle de transformateur évolué comme décrit dans l'article.
L'ensemble de formation utilisé est le corpus OpenSubtitles en langue italienne. De nombreuses autres langues sont disponibles ici.
À l'instar du travail effectué dans l'article, ce modèle se compose de 1 bloc codeur et de 12 blocs décodeurs pour un total de 108 millions de paramètres. L'optimiseur utilisé est Adafactor avec le même programme de taux de formation que celui décrit dans l'article.
Voici les résultats après avoir entraîné le modèle sur 40 millions de phrases de l'ensemble de données OpenSubtitles en langue italienne. Le taux d'apprentissage commence à 0,01 et reste constant pendant 10 000 pas, puis décroît avec la racine carrée inverse du nombre de pas.
Voici le tracé de la perte d'évaluation pendant l'entraînement.
Le score de perplexité final est de 10,4, ce qui est très proche du score de perplexité obtenu par meena chatbot 10,2 de Google.
L'article montre une corrélation entre le score de perplexité et la moyenne de sensibilité et de spécificité qui est corrélée à la « ressemblance humaine » du chatbot. Notre score de perplexité montre que notre bot est meilleur que les autres chatbots tels que Cleverbot et DialoGPT :
L’ensemble de données utilisé ne représente cependant pas bien les conversations normales entre humains. Cependant, Opensubtitles fournit de très grands ensembles de données dans de nombreuses langues.
Exécutez simplement le notebook meena_chatbot_inference.ipynb
.
Sinon téléchargez le modèle suivant et extrayez-le. Définissez MODEL_DIR et CHECKPOINT_NAME appropriés dans predict.py
et exécutez main.py
Pour la formation, exécutez simplement le notebook ipython sur Google Colab, le modèle sera enregistré sur Google Drive. A la fin de l'exécution, vous pouvez interagir avec le chatbot.
Le modèle peut être exporté en copiant les fichiers suivants dans un dossier :
et exécutez main.py
après avoir défini le répertoire de modèle approprié.
server.py
fournit une API HTTP simple pour servir le chatbot.