Вот моя попытка воссоздать Мину, современного чат-бота, разработанного Google Research и описанного в статье «На пути к человекоподобному чат-боту с открытым доменом».
Для этой реализации я использовал библиотеку глубокого обучения tensor2tensor, используя развитую модель преобразователя, как описано в статье.
В качестве обучающего набора используется корпус OpenSubtitles на итальянском языке. Здесь доступны многие другие языки.
Подобно работе, проделанной в статье, эта модель состоит из 1 блока кодера и 12 блоков декодера, в общей сложности 108M параметров. В качестве оптимизатора используется Adafactor с тем же графиком обучения, который описан в статье.
Вот результаты после обучения модели на 40 миллионах предложений набора данных OpenSubtitles на итальянском языке. Скорость обучения начинается с 0,01 и остается постоянной в течение 10 тыс. шагов, а затем уменьшается пропорционально обратному квадратному корню из количества шагов.
Вот график потери оценки во время обучения.
Итоговый показатель недоумения составляет 10,4 , что очень близко к показателю недоумения, достигнутому meena chatbot от Google (10,2).
В статье показана корреляция между показателем недоумения и средним показателем разумности и специфичности, который коррелирует с «человеческим подобием» чат-бота. Наш показатель недоумения показывает, что наш бот лучше других чат-ботов, таких как Cleverbot и DialoGPT:
Однако используемый набор данных не совсем отражает нормальные разговоры между людьми. Однако Opensubtitles предоставляет очень большие наборы данных на многих языках.
Просто запустите блокнот meena_chatbot_inference.ipynb
.
В противном случае загрузите следующую модель и распакуйте ее. Установите правильные MODEL_DIR и CHECKPOINT_NAME в predict.py
и запустите main.py
Для обучения просто запустите блокнот ipython в Google Colab, модель сохранится на Google Drive. По окончании выполнения вы сможете взаимодействовать с чат-ботом.
Модель можно экспортировать, скопировав в папку следующие файлы:
и запустите main.py
после установки правильного каталога модели.
server.py
предоставляет простой HTTP API для обслуживания чат-бота.