Традиционно пользовательские интерфейсы представляют собой серию экранов и форм для обмена информацией с пользователем. Большинство приложений начинаются с главного экрана, с которого пользователи могут перемещаться с помощью навигационных цепочек, меню и кнопок, таких как «назад» и «вперед». Эта парадигма осталась почти неизменной с появлением гипертекста, когда можно переходить со страницы или диалога на другую с помощью визуальных ссылок, которые сразу доступны. Чат-боты смещают UX в сторону диалогового гипертекста, который создает видимость разговора с компьютером. Люди могут взаимодействовать естественным образом, а так как каждый уже знает хотя бы один естественный язык, никому не нужна его подготовка.

Оригинал на gfrison.com

Непринужденность среды контрастирует со сложностью структурированных, а иногда и громоздких функций для достижения конкретной цели, но если веб-пользователи могут легко переключиться на новый целеориентированный сценарий одним щелчком мыши, то в приложении для обмена сообщениями это может быть в основном через текстовые сообщения. Диалоговые приложения обычно реализуют рабочие процессы не с помощью экранов или форм, а путем добавления новых диалоговых сценариев в диалоговый стек. Технически это что-то вроде упаковки конечных автоматов, в которой каждый слой представляет определенную задачу. Когда текущее завершено, состояние диалога закрывается, и оно удаляется из стека. Диалоговые рабочие процессы могут управляться механизмами конечного автомата, реализованными непосредственно в чат-боте, или, в качестве альтернативы, существующими диспетчерами потоков, такими как Dialogflow (бывший API.AI), Wit.ai, LUIS.ai (интеллектуальная служба понимания языка), с помощью которых дизайнеры могут настроить диалог. процессов на своих веб-панелях.

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

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

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

Новая разговорная модель

Реальный мир — упрямое место. Он сложен способами, которые сопротивляются абстракции и моделированию. Он замечает и реагирует на наши попытки воздействовать на него. Мы также не можем надеяться исследовать его объективно с помощью заранее определенных правил или запрограммированных конечных автоматов.

Фундаментальный аспект, который нельзя игнорировать, — это вероятностный характер модели, которая будет обслуживать эти диалоги.

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

Как только ограничения этих подходов раскрыты, мы готовы достичь контекста и последовательности совершенно по-другому. Мы должны позволить машинному обучению делать то, что оно может делать лучше всего: вычислять прогнозы на основе большого количества входных данных.

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

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

Классификация текстов

Нейронные сети — это адаптируемые системы, чья способность к обучению зависит от силы связей между ее искусственными нейронами. По сути, это универсальные аппроксиматоры функций. Я описал нейронные сети для классификации намерений, используя свертки для понимания семантики предложений пользователя.

Дополнительный ввод

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

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

Модели временных рядов

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

Многозадачное обучение (MTL)

Рассмотрим гипотетического рекомендателя, который научился предсказывать ваши предпочтения в отношении автомобилей. Однозадачную систему можно научить выдавать один результат, который может соответствовать модели автомобиля вашему профилю. Многозадачная модель может быть обучена не только возвращать вам название модели, но и цвет, тип двигателя, аксессуары. MTL направлен на решение одновременно нескольких задач классификации в рамках одной и той же нейронной сети. Мы можем рассматривать MTL как форму трансферного обучения, в которой общие черты и различия между задачами используются для повышения общей эффективности обучения. Похоже, что нейронные сети любят разнообразие: больше задач они изучают, более точны их предсказания, по сравнению с их обучением по отдельности. Созданный мной диалоговый движок использует многозадачное обучение (MTL). Он не просто возвращает одну метку, а вместо этого возвращает подробный набор параметров, которые добавляют выразительности в поведение чат-бота.

Архитектура нейронной сети

Мое предложение состоит в том, чтобы использовать оба (CNN, LSTM) в полностью связанной нейронной сети, чтобы использовать классификационные качества CNN с последовательностью LSTM. Это означает, что конкретное значение высказывания пользователя не рассматривается само по себе, как современное состояние классификаторов чат-ботов, а оценивается в контексте разговора. Полносвязная нейронная сеть означает, что на разные уровни сети (CNN, LSTM) влияют одни и те же итерации прямого и обратного распространения.

В то время как CNN извлекает соответствующее представление пользовательского ввода, другие типы входных данных могут быть переданы на уровень LSTM, как показано на рисунке. Таким образом, смысл предложения пользователя оценивается в рамках набора дополнительных параметров, которые могут повлиять на результат принятия решения на конкретном шаге разговора.