Как устроены Макс, Сяоайс, AliMe Assist и другие чат-боты
Разговорный искусственный интеллект становится незаменимым в нашем повседневном общении
На днях портал Госуслуги подвергся крупнейшей в истории сервиса кибератаке, что подстегнуло очередной всплеск интереса к разговорному искусственному интеллекту. Дело в том, что самый сильный удар при этой кибератаке, судя по всему, пришелся на цифрового помощника Макса, который на портале отвечает на вопросы пользователей. Он неожиданно заделался антиваксером. На рядовой вопрос, как получить QR-код для переболевших, Макс выкатывал пламенную речь про то, что коронавируса не существует, что QR-коды — это заговор мирового правительства и про то, что «вас развели». Вскоре работа портала была оперативно восстановлена, а Макс снова обрел душевное равновесие.
О том, почему разговорный искусственный интеллект сегодня представляет собой важную область исследований, на онлайн-конференция AI Journey 2021 рассказал директор по фундаментальным исследованиям Института искусственного интеллекта AIRI, заведующий лаборатории нейронных систем и глубокого обучения МФТИ Михаил Бурцев. Приведем здесь наиболее интересные выдержки из его выступления.
Зачем разговаривать с ботом
К 2015 году число пользователей четырех наиболее популярных в мире мессенджеров превысило число пользователей четырех наиболее популярных соцсетей и продолжает расти. Это значит, что в нашей повседневной жизни канал текстовых коммуникаций на естественном языке становится одним из наиболее важных, и все больше и больше людей им пользуется.
Всё большее распространение получают системы умного дома. Стандартный подход в управлении умным домом заключается в том, что мы используем мобильные устройства для того, чтобы по разным сценариям включить тот или иной прибор. Однако это не очень удобно, потому что вы должны либо руками заложить какие-то сценарии и потом вызывать эти программы, либо постоянно нажимать на кнопки отдельных устройств. Гораздо естественнее управлять умным домом голосом. Поэтому в этой области также возникает потребность в понимании естественного языка и разговорном искусственном интеллекте, чтобы система могла распознать речь, понять, что вы хотите сделать в доме и выполнить эти действия, а при необходимости уточнить, что же вы хотели.
Сегодня очевиден тренд на появление персональных помощников, которые становятся универсальным интерфейсом между человеком и всем имеющимся богатством информации и сервисов. Очевидно, что уже в ближайшие три-пять лет у нас будет такой персональный помощник. Он будет «жить» как в умной колонке, так и в нашем смартфоне, автомобиле, телевизоре. При помощи персонального помощника мы сможем искать любую информацию, производить действия в соцсетях, получать доступ к различным сервисам.
Если мы заглянем еще чуть вперед, то увидим, что универсального персонального помощника будущего, который потенциально может помочь в решении любой задачи, поставленной перед ним. Конечно же, общаться с этим помощником мы будем на естественном языке.
Общение по правилам и без
Так что же такое разговорный искусственный интеллект? Стандартный подход к построению диалоговых систем следующий. Например, пользователь решает задачу, куда ему сходить в кино на выходных. Он спрашивает, какие комедии может посмотреть в эти выходные. Запрос сначала из речевого сигнала преобразуется в текстовые данные, затем попадает в блок понимания естественного языка. Этот блок реализует три основных функции. Первая — определение тематики диалога. В данном случае это поход в кино. Вторая функция — определение намерения пользователя в конкретной реплике. Здесь намерение в том, что пользователь хочет узнать список фильмов, которые сейчас идут в кинотеатрах. Наконец, чтобы намерение превратить в конкретное действие, нужно лучше понять запрос пользователя, необходимо детектировать некоторые сущности в запросе. В данном запросе сущностями являются жанр фильмов (комедии) и календарная дата (ближайшие выходные).
После того, как эта информация обработана системой, запрос преобразуется в некий формальный вид. Эти данные попадают в следующий модуль системы — диалоговый менеджер, который реализует две основные функции: интегрирует новую информацию в то, что он уже знает о текущем состоянии диалога (возможно, что он уже общался с пользователем). После этой интеграции система понимает текущее состояние диалога и может принять решение, что же можно сделать дальше при помощи политики. Эта политика может быть реализована на основе определенного алгоритма или машинного обучения.
Чтобы сократить число фильмов, которые нужно назвать пользователю (список может оказаться очень длинным), система решает, что нужно запросить, например, местоположение пользователя. Это действие попадает в блок генерации ответа на естественном языке, где при помощи генеративных моделей или каких-то шаблонов генерируется ответ пользователю: «Где ты находишься?». Таким образом цикл обработки запроса от пользователя замыкается, и мы можем поддерживать диалог.
Этот традиционный способ построения диалоговых систем используется последние лет тридцать. До последнего времени все эти блоки реализовывались при помощи определенных алгоритмов, основанных на правилах. Но с практической точки зрения оказалось, что если количество правил в этой системе становится больше сотни, то уже трудозатраты на поддержание этой системы сопоставимы с тем, чтобы просто человек сидел и отвечал на вопросы. Потому что правила начинают противоречить друг другу, обновляется какая-то информация, пользователи по-другому начинают спрашивать, поэтому эту систему приходится постоянно переписывать. Подход, основанный на правилах, оказался очень негибкий.
Это продолжалось до 2015 года, когда на сцену вышел новый подход в построении системы обработки естественного языка — глубокое обучение. Была построена полностью нейросетевая архитектура для диалоговой системы с разными подсетями, описывающими тот или иной блок машинно-модульной системы. Например, подсистема, определяющая намерения пользователя. Подсистема, определяющая состояние диалога. Подсистема, которая достает из базы данных какую-то информацию. Подсистема, которая определяет политику ведения диалога и генерирует ответ. Оказалось, что если такую систему обучить на реальных диалогах с пользователями, то по сравнению с классической системой, основанной на правилах, нейросетевая система решает задачу за меньшее число реплик в диалоге (в среднем — четыре реплики, тогда как в классической — четыре с половиной). Это значит, что за тот же промежуток времени нейросетевой системой будет обработано большее количество пользователей.
Но самое главное, что по субъективным метрикам пользователи больше предпочитают систему, построенную на нейросетевых алгоритмах и обученную на реальных данных, чем систему, которая построена на правилах. Оценка выше в два раза!
Но оказалось, что для построения очень сложных систем такой подход трудно масштабируется, потому что задача ведения диалога гораздо сложнее чем, например, задача перевода текста с одного языка на другой. Потому что в переводе мы сохраняем смысл предложения и просто представляем его другими словами, тогда как при ведении диалога нам необходимо передать пользователю какой-то новый смысл. Это гораздо сложнее. К тому же нужно накапливать очень много данных, чтобы система обучалась. Но в последнее время появилось всё больше возможностей для использования Transfer Learning, то есть для переноса знаний от уже обученных моделей в какой-то определенный контекст.
Модерация болтовни
Если мы строим сложную диалоговую систему, нам необходимо поддерживать естественный диалог, как если бы пользователь разговаривал с человеком. Для этого необходимо, помимо решения конкретной задачи для пользователя, использовать в том числе подходы для модерации болтовни. То есть нужна болталка для поддержки общего диалога. И здесь применяются совершенно другие методы, связанные с использованием фраз обыденного диалога. Первый метод основан на извлечении заранее заготовленных реплик из огромной базы данных (это сотни тысяч или даже миллионы реплик). И мы строим классификатор, который позволяет предсказать для данного состояния диалога, какая реплика должна быть следующей.
Но в этом случае мы ограничены заранее заготовленными репликами. А мы хотели бы иметь гибкую систему. Поэтому используем другой метод, основанный на генерации, когда мы слово за словом можем сгенерировать ответ на основе истории диалога. Здесь получаются более разнообразные ответы. При этом есть риск, что мы сгенерируем ответ, который не очень подходит к диалогу. Для этого ответы приходится отфильтровывать.
Ведущие компании соревнуются, кто же приблизится к человеку в генерации таких реплик. В Google попытались создать чат-бота, максимально похожего на человека. Результатом разработок стала Meena — модель, работающая на основе нейросетей. По оценке Google, чат-бот способен достигнуть большей «человечности» в беседе по сравнению с другими моделями. Но все же человек еще не достижим. Facebook тоже не стоит на месте, его чат-бот называется BlenderBot. По сравнению с Meena люди предпочитают в большем числе случаев (70%) ответ, который смодерировал именно BlenderBot.
Гибридный подход в действии
Как же на практике сегодня строятся сложные разговорные системы? Посмотрим на чат-ботов в продакшн. Наиболее типичный пример — система AliMe Assist, которая позволяет покупателям заказывать товары на AliExpress. Система состоит из таких элементов, как распознавание намерений пользователя, помощник, рекомендующий пользователю товары и сервисы, также есть поддержка пользователей и болталка. То есть в системе присутствуют те компоненты, которые являются обучаемыми моделями, но есть и бизнес-логика, которая заложена какими-то правилами. Это значит, что в построении данной системы использован гибридный подход.
Самый яркий пример чат-бота — Сяоайс, разработанный в китайском отделении Microsoft. У него 660 млн пользователей по всему миру. Сяоайс выдает достаточно длинные диалоги — в среднем 23 реплики. У него есть куча разных подсистем, из которых реализуется тот или иной навык для ведения диалога. Эти навыки разделяются на эмоциональные и рациональные. Такая система может даже генерировать шутки по изображению — например, вы посылаете Сяоайсу фото падающей Пизанской башни, а чат-бот выдает: «Может, мне помочь тебе ее подержать?».
В этой системе много навыков, которые пересекаются друг с другом. Например, сначала болталка, потом ответ на вопрос, потом снова болталка, дальше поиск изображения, рекомендация и т.д. Такую систему можно настроить так, чтобы она даже предсказывала настроение человека и пыталась свести диалог в более позитивное русло.
Итак, какие тренды существуют сегодня в области разговорного искусственного интеллекта? Это направление исследований быстро развивается, глубокое обучение производит революцию в этой области. Текущие индустриальные решения являются гибридными, они основаны на правилах и моделях машинного обучения. Возникают диалоговые агенты, интеллект которых состоит не из какого-то одного алгоритма, а из сочетания большого множества навыков, до нескольких десятков тысяч. Но все еще эти системы не обладают здравым смыслом, который им необходимо добавить.