На основе репозитория кода TC-Bot и бумажных систем сквозного нейронного диалога для завершения задач. Этот репозиторий представляет собой упрощенную версию TC-Bot, он работает с аналогичным уровнем точности, хотя его нельзя напрямую сравнивать.
Здесь показано, как обучить простого агента DQN с глубоким обучением с подкреплением в качестве целенаправленного чат-бота с помощью простого симулятора пользователя. Код представляет собой упрощенную версию TC-Bot от MiuLab с основным отличием в том, что этот код не включает в себя компоненты NLG или NLU, а просто обучает диспетчер диалогов. Компоненты NL не необходимы для понимания того, как чат-бот GO обучается с помощью DRL, и поэтому не реализуются.
Вот диаграмма из статьи для TC-Bot, она похожа на поток диалога, используемый в этом проекте, за исключением компонентов LU и NLG:
Помимо удаления NL, внесены изменения в условия успеха, оптимизатор агента DQN и несколько других незначительных изменений. Поэтому не следует напрямую сравнивать точность между TC-Bot и этим репозиторием.
База данных билетов в кино, та же самая база данных, которая используется в TC-Bot. Как маринованную, так и текстовую версии данных можно увидеть в каталоге данных.
Серию руководств из 5 частей, в которой подробно описывается и рассматривается этот код, можно найти на носителе здесь!
Вы можете обучить агента с нуля с помощью python train.py
.
В файле Constants.json вы можете изменить гиперпараметры, включая «save_weights_file_path» и «load_weights_file_path» (оба относительные пути), чтобы сохранять и загружать веса соответственно. Например, чтобы использовать предварительно обученные веса в папке Weights, установите для параметра «load_weights_file_path» значение «weights/model.h5». Веса как для целевой (tar), так и для модели поведения (beh) keras сохраняются каждый раз, когда текущий уровень успеха достигает нового максимума.
Вы также можете протестировать агент с помощью python test.py
Но обязательно загрузите веса, установив для параметра «load_weights_file_path» в файле Constants.json относительный путь как с поведением, так и с целевыми весами.
Все константы говорят сами за себя, за исключением «ванильного» слова «агент», что означает DQN (истина) или Double DQN (ложь). По умолчанию используется ванильный DQN.
Примечание. Если вы получаете ошибку распаковки в поезде или тесте, запустите python pickle_converter.py
, и это должно исправить это.
Вы можете протестировать агент, введя свои собственные действия в качестве пользователя (вместо использования пользовательского сима), установив для параметра «usersim» при запуске в файле Constants.json значение false. Вы вводите действие и индикатор успеха на каждом этапе эпизода/разговора в консоли. Формат ввода действия: намерение/слоты информирования/слоты запроса.
Пример входных данных действия:
Кроме того, консоль запросит индикатор того, удалось ли агенту это сделать (кроме случаев, когда действие было введено в эпизоде). Допустимые входные данные: -1 для проигрыша, 0 для отсутствия результата, 1 для успеха.
Использованы гиперпараметры из Constants.json.
Таблица эпизодов (каждые 2000 из 40 000) по максимальной частоте успеха периода/последовательности (каждые 100 эпизодов) до этого эпизода: