Разговоры с роботом. Можно ли научить чат-бот общаться

Варвара Логачева
Варвара Логачева

Исследователь проекта iPavlov

Расскажите друзьям
Полина Константинова

Siri от Apple, Alexa от Amazon, Алиса от «Яндекса» – сегодня существует много диалоговых систем высокого качества. Считается, что такой виртуальный ассистент должен знать и уметь все: и музыку включить, и узнать прогноз погоды, и найти информацию в интернете, и о жизни поговорить.

Однако систем, которые могли бы вести с человеком полноценный диалог, говорить на свободную тему – так называемых «болталок» – пока все-таки нет. Варвара Логачева, исследователь проекта iPavlov, рассказывает, что нужно для того, чтобы они появились.

В этой статье мы поговорим о диалоговых системах, чья задача – говорить на свободную тему, то есть о чат-ботах. Создать такую систему сложнее, чем систему, выполняющую конкретные задачи – поэтому, наверное, чат-боты привлекают исследователей.

Стоит оговориться, что часто чат-ботом называют любую диалоговую систему – в частности, ту, у которой есть какая-нибудь задача (например, сообщать пользователю расписание поездов). Здесь же речь пойдет исключительно о «болталках».


Нужны ли сценарии для чат-бота

Если диалоговые системы, предназначенные для решения определенной задачи (goal-oriented системы), во многих случаях работают довольно хорошо, о чат-ботах этого пока сказать нельзя. Главная причина их низкого качества – в отсутствии ограничений. Слишком много возможных тем разговора, реакций пользователя и способов ответить на каждую реплику.

В целеориентированных диалоговых системах, в отличие от чат-ботов, есть сценарий диалога. На каждом этапе диалога у системы есть четкая инструкция. Сначала нужно поздороваться с пользователем и спросить, откуда и куда он собирается лететь (представим, что это система заказа авиабилетов). Затем – узнать дату и время полета. Когда вся необходимая информация получена, надо предложить пользователю подходящие рейсы и, если пользователь какой-то из них выбрал, можно заказать билет.

Такая система берет инициативу в диалоге на себя и, если пользователь не пытается ее хакнуть, выглядит довольно разумной. Для чат-бота определить сценарий намного сложнее.

Конечно, чат-бот тоже может действовать по сценарию, но это его сильно ограничит. Например, есть сценарий у системы ELIZA, «бабушки» нынешних диалоговых систем – она имитирует работу психоаналитика. Но что, если пользователь хочет не рассказать о своих проблемах, а поговорить о музыке, кино или моделях велосипедов? Или ждет от чат-бота какого-то нетривиального совета или рассказа о себе? Всех возможных целей пользователя не предусмотреть, а значит, невозможно описать все необходимые сценарии взаимодействия.

Диалог с системой ELIZA.


У системы несколько паттернов, которые она применяет в случайном порядке: «Do you believe it is normal to <user input>?»  , «Does it please you to believe <user input>?», «Would you prefer if <user input>?» и другие.

Такой сценарий подходит, если пользователь рассказывает о своих психологических проблемах, и выглядит странно в любой другой ситуации.


Чат-бот как система машинного перевода

В 2011 году было предложено не определять для чат-бота сценарий всего диалога, а просто обучить систему адекватно отвечать на последнюю реплику. Делается это с помощью системы машинного перевода – реплики пользователя «переводятся» в подходящие ответы на них. Результаты первых экспериментов оставляли желать лучшего, но появившиеся в 2014 году нейросетевые машинные переводчики справились и с этой задачей.

Теперь модель encoder-decoder (представление предложения как вектора фиксированной длины с последующим декодированием в другое предложение) считается стандартом не только в машинном переводе, но и в разработке чат-ботов.

Архитектура encoder-decoder для диалоговой системы. Энкодер (рекуррентная нейросеть с LSTM-ячейками) кодирует входную фразу How are you и представляет в виде вектора w. Этот вектор подается на вход декодеру, который генерирует ответ.

Конечно, и здесь далеко не все гладко, но каждая отдельно взятая фраза, сгенерированная таким ботом, почти не содержит грамматических ошибок и часто является допустимым ответом на реплику пользователя. Только для осмысленного диалога такой бот все равно не годится.

  • Во-первых, он часто отвечает слишком общими фразами, подходящими в любой ситуации. Поставленная задача выполнена – ведь к каждой отдельно взятой реплике пользователя такой ответ подходит. Но представьте себе, каково разговаривать с чат-ботом, который на все, что вы скажете, отвечает «I don’t know» или «OK, I see».

  • Во-вторых, поскольку чат-бот генерирует ответ только исходя из последней реплики, он не помнит, о чем шла речь раньше. Это исключает возможность любой связной беседы. Например, вы можете сообщить боту, что у вас есть собака, а через несколько реплик он скажет, что вам нужно завести домашнего питомца, потому что жить совсем одному грустно.

С отсутствием памяти связана и другая проблема чат-ботов – они не помнят не только то, что сказано пользователем, но и то, что говорили сами. Так, можно три раза подряд спросить автоматического собеседника, откуда он родом, и получить три разных ответа. Исследователи из Facebook предложили справиться с этой проблемой, дав чат-боту «личность» – информацию о себе, в соответствии с которой он будет строить диалог. В начале 2018 года они выпустили новый датасет для обучения диалоговых систем – PersonaChat.

PersonaChat

Этот датасет похож на аналогичные наборы данных – он состоит из диалогов, где два собеседника обсуждают работу, хобби, семью и другие темы. Но каждому собеседнику в начале диалога дается «профиль» – несколько коротких предложений с информацией о нем. Теперь задача каждого из собеседников в диалоге – рассказать о себе и узнать побольше о другом говорящем (доступа к чужому профилю во время диалога нет).

На таких диалогах чат-бот может научиться отвечать на реплики собеседника через призму определенной личности. При этом личность определена в явном виде – значит, можно ее редактировать и следить, соответствуют ли ей ответы бота.

Вот так выглядит диалог условных Сэма и Боба из этого датасета:

Обоим пользователям дано описание их личностей. Во время диалога они не должны противоречить этому описанию, но не обязаны использовать его полностью. Заметим также, что пользователи нигде не повторяют предложений из описания, а просто отвечают так, как ответил бы обладатель описанной личности – однако легко проследить, из какого именно факта «биографии» следует тот или иной ответ (в диалоге фразы подсвечены цветом, соответствующим фразе из описания персоны). Такому поведению мы и хотим обучить чат-ботов.

Соревнование чат-ботов

Конечно, сам по себе датасет PersonaChat – не панацея, недостаточно обучить на нем систему encoder-decoder, чтобы получить осмысленного и последовательного диалогового агента. Однако этот датасет в явном виде поощряет последовательные ответы. Кроме этого, PersonaChat позволяет определить задание нового типа – с использованием этого набора данных можно в явном виде протестировать бота на последовательность, проверив, не противоречит ли он своему профилю.

Создание таких чат-ботов – тема соревнования ConvAI, организованного лабораторией нейронных сетей и глубокого обучения МФТИ совместно с Facebook AI Research. Задача команд – обучить чат-бота на датасете PersonaChat.

Важное условие – чат-бот должен вести диалог в соответствии с произвольным профилем, выданным ему перед началом диалога. В него нельзя заранее записать информацию о личности – все данные о себе он должен получить из 4-5 предложений.

На первом этапе, который длиться до сентября, поданные на конкурс диалоговые системы будут оценивать автоматическими метриками:

  • Perplexity – измеряет, какова вероятность, что система сгенерирует правильный ответ (то есть ответ, который дал в этой ситуации пользователь).

  • F1-score, hits@k – измеряют, насколько хорошо система может выбрать правильный ответ из списка возможных ответов.

На втором этапе чат-ботов будут оценивать люди. Асессоры будут разговаривать со случайным ботом, при этом ему будет дан профиль, который говорящий с ним человек видеть не будет. После диалога система покажет человеку два профиля: профиль бота и случайный профиль – и попросит угадать, какой из профилей соответствует собеседнику. Чем выше процент угаданных профилей, тем последовательнее ведет себя бот.

Кроме этого, асессоров попросят оценить качество диалогов по шкале от 1 до 5. Итоги соревнования мы подведем на конференции NIPS-2018 в декабре. Победитель соревнования получит 20 тысяч долларов кредита на сайте Amazon Mechanical Turk – платформы, которая сводит людей, у которых есть задания по разметке данных с асессорами.

Даже если вы никогда не занимались диалоговыми системами, для участия в соревновании необязательно писать своего чат-бота с нуля – можно воспользоваться бейзлайнами с открытым кодом. Среди них – описанная выше модель sequence-to-sequence, состоящая из энкодера и декодера, и ее усовершенствованная версия – seq2seq+Key-Value Memory Network. Эта модель хранит векторные представления предложений, описывающих личность бота, и использует их при генерации каждого нового ответа.

Хакатон DeepHack.Chat

До сентября еще много времени, но некоторые команды смогут обучить своего чат-бота уже совсем скоро в ходе хакатона DeepHack.Chat, организованного лабораторией нейронных систем. Задача хакатона та же, что и на соревновании ConvAI – обучить чат-бота с личностью. Так же, как и на ConvAI, в отборочном туре хакатона чат-боты будут оценены автоматическими метриками. Десять лучших команд будут приглашены в МФТИ для участия в очном туре хакатона, который пройдет со 2 по 8 июля.

Во время хакатона командам нужно будет работать над чат-ботом и одновременно оценивать чат-ботов других команд (то есть разговаривать с ними и ставить им оценки). Победителем хакатона станет та команда, чья система лучше всего покажет себя в разговорах с пользователями.


Материалы по теме:

Как искусственный интеллект может решить проблему массового найма в ритейле

Кейс: мы внедрили чат-бота – теперь он экономит нам около 250 рабочих часов в месяц

«В будущем оператор сможет при помощи ботов по одному клику мышки производить сто операций за пять секунд»

«Если идея становится настолько глупой, что вам за нее стыдно, — вы близки к цели» — как я выигрываю хакатоны

Где искать инвестиции, если вы стартап в области искусственного интеллекта?


Актуальные материалы — в Telegram-канале @Rusbase

Нашли опечатку? Выделите текст и нажмите Ctrl + Enter


Комментарии

Зарегистрируйтесь, чтобы оставлять комментарии и получить доступ к Pipeline — социальной сети, соединяющей стартапы и инвесторов.
EMERGE
31 мая 2019
Ещё события


Telegram канал @rusbase