Диалоговые системы — Михаил Бурцев |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2017-11-10 12:49 Нейрофизиолог Михаил Бурцев о чат-ботах, искусственном интеллекте и возможности человеческого общения с роботами Совокупное число просмотров видео во всех каналах ПостНауки (YouTube, Facebook, Вконтакте и т.д.ПостНаука продолжает рассказывать о современных технологиях в проекте «Банк знаний», подготовленном совместно с Корпоративным университетом Сбербанка. Одним из наиболее интересных, перспективных и захватывающих направлений в области применения современных нейросетевых методов, методов глубокого обучения и вообще, наверное, одной из таких наиболее интригующих областей искусственного интеллекта являются диалоговые системы. Сейчас исследования в этой области получают название разговорного интеллекта (в простонародье — чат-боты). Почему это очень интересная задача? Прежде всего, сегодня она становится действительно очень востребованной. Почему? Потому что, по статистике, сегодня пользователей мессенджеров стало уже больше, чем пользователей социальных сетей. И очевидно, что все компании тоже будут стремиться идти за человеком и предоставлять свои услуги не только, например, через веб-сайты, когда вы должны выбрать какие-то графические элементы на веб-сайте, кликнуть на какие-то ссылки, но и через текстовые каналы коммуникации, когда вы сможете общаться с какими-то сервисами в форме диалога и решать какие-то свои проблемы. Очевидно, что здесь может быть много применений, начиная с применения в сфере услуг, когда вы можете заказать что-то и подобрать какой-то продукт или услугу в вашем мессенджере, просто общаясь с каким-то чат-ботом. С другой стороны, это может быть помощь, когда вы решаете какую-то свою проблему, связанную с каким-то сервисом или продуктом, тоже общаясь с чат-ботом как с какой-то службой техподдержки. В будущем эти чат-боты станут основой некоторых персональных помощников, которые помогут вам спланировать ваш день, понять, чего вы хотите, и, возможно, подсказать вам какие-то решения тех проблем, которые у вас возникнут через пять минут, но про которые вы еще не знаете. С другой стороны, это очень интересная исследовательская задача, потому что она находится именно в таком русле фундаментальной проблемы искусственного интеллекта. Можем ли мы сделать такого интеллектуального агента, с которым мы могли бы общаться, как с человеком? И при этом понятно, что у большинства из нас образ искусственного интеллекта — это некоторый робот, который ходит как человек, говорит как человек и действует как человек или даже лучше. Но на самом деле, если мы посмотрим на построение робототехнических систем, мы увидим, то сегодня антропоморфных роботов не так много, потому что проблемы, связанные с управлением движениями, до сих пор искусственным интеллектом до конца не решены. И кажется, что если мы хотим перейти именно к самому ядру проблемы, к самой интересной ее части, то мы должны отбросить, например, задачу управления движениями и попытаться именно смоделировать интеллект в форме диалога. И кажется, что это как раз один из оптимальных путей. Почему? Потому что эта задача может решаться постепенно. То есть агент может сначала вести достаточно примитивные диалоги, потом все более и более сложные. С другой стороны, так как для нейросетевых систем необходимо много примеров, много данных для обучения, очевидно, что найти много данных для обучения движениям робота, ведения им диалога и взросления не так-то просто. Нужно искать данные под конкретного робота. Но если мы будем искать данные о диалогах пользователей, например, с какой-нибудь службой поддержки, очевидно, что найти такие диалоги гораздо проще. Тоже, может быть, не так просто, но все-таки эта проблема проще. Таким образом, у нас есть данные, на которых мы можем отлаживать и обучать наши системы, с одной стороны. С другой стороны, мы видим, что у нас проблема постепенно нарастает. И решение этой задачи позволит улучшить жизнь многих людей. Потому что не каждый может себе сразу же, наверное, позволить робота, который похож на человека, в ближайшем будущем. Но позволить себе какого-нибудь чат-бота, с которым ты общаешься, в принципе много людей сможет. Сегодня у нас есть некоторый уже сложившийся подход к разработке диалоговых агентов, или разговорных диалоговых систем, или разговорных агентов. Из чего состоит такой стандартный современный чат-бот? Он состоит из нескольких основных частей. Первая часть — это некоторый блок, цель которого — понять, о чем же говорит пользователь. Чтобы что-то ответить пользователю, для начала нужно понять, чего же он хочет и о чем он говорит. Вообще традиционные архитектуры в основном направлены на разработку так называемых целеориентированных диалоговых систем. Что значит «целеориентированные диалоговые системы»? Это та диалоговая система, которая направлена на решение какой-то конкретной проблемы пользователя. Например, это заказ пиццы или бронирование гостиницы. Таким образом, этот первый блок называется natural language understanding — блок понимания реплик на естественном языке. Его цель — получить на вход предложение от пользователя, некоторый запрос или сообщение, говорящее о параметрах того, что пользователь хочет получить, и извлечь из этого значение тех переменных, о которых я говорю. Если пользователь говорит: «Я хочу заказать пиццу “Маргарита” с доставкой через три часа на улицу Первомайская, дом 9», то бот должен из этой фразы как бы понять, что речь идет об улице Первомайская, доме 9, типе пиццы и о том, когда эта пицца должна быть доставлена. Это как раз функция первого блока обработки в диалоге. То есть на входе этого блока имеется входное предложение, на выходе этого блока имеется описание фразы в терминах внутреннего представления системы (обычно это называется dialogue frame). Это некоторый фрейм, в котором заполнены переменные.Затем есть следующая часть системы, так называемый трекер состояния диалога (dialogue state tracker). Он берет на вход то, что мы извлекли из текущей фразы, и он имеет уже текущее состояние диалога, то есть что мы уже раньше узнали от пользователя о том, что он хочет. И он совмещает эти две вещи, таким образом устраняя какую-то неопределенность в решении задачи. Фактически это та часть, в которой у нас хранится история нашего взаимодействия с пользователем. Следующая часть должна принять решение, что же мы делаем дальше. Это так называемый dialogue manager, policy manager. То есть это некоторая стратегия ведения диалога, некоторая структура, которая, получив на вход информацию, в каком состоянии диалог находится, принимает решение: либо нам задать какой-то уточняющий вопрос, потому что мы не до конца определили все переменные, которые нам необходимы, либо же, например, спросить подтверждение, так как мы уже все знаем. Или, например, эта часть может сгенерировать какое-то обращение во внешнюю базу данных, запросить какие-то данные. Например, если человек говорит: «Какие фильмы сейчас идут в кинотеатре рядом с метро Тимирязевская?», наша диалоговая система, поняв этот запрос, должна сформировать запрос к базе данных, которая выдаст список всех кинотеатров, по списку этих кинотеатров она должна заполнить список названий фильмов, идущих в ближайших кинотеатрах, и потом выдать его пользователям. После того как информация, которую мы хотим запросить от пользователя или сказать пользователю, готова, она представлена в каком-то внутреннем представлении системы. То есть это какая-то запись базы данных, это какая-то таблица. Нам необходимо ее прокоммуницировать пользователю. Сначала мы его поняли, теперь нам нужно ему ответить. Здесь последняя, финальная часть нашей системы работы с пользователем — это так называемая система natural language generation, то есть система генерации ответа на естественном языке. Она получает на вход команду, что нужно сделать, данные и генерирует ответ, по шаблону вставляя туда те данные, которые она получала от системы. И этот текст представляется пользователю. Модульная архитектура диалогового агента состоит из модуля понимания, модуля отслеживания состояния диалога, модуля принятия решений и модуля генерации ответа. Мы сейчас видим, что происходит замена каких-то блоков модульной диалоговой системы на нейросетевые решения. Еще недавно это были там стандартные методы машинного обучения и анализа данных. А сегодня, например, в блоке понимания высказываний пользователя уже наиболее эффективными являются нейросетевые методы, которые получают на вход последовательность слов. Там могут быть сверточные сети или рекуррентные сети с двунаправленным кодированием. Они обрабатывают, выделяют признаки в этом предложении, делают некие скрытые внутренние представления этого всего предложения, и затем для каждого слова мы можем решать задачу классификации, к какой переменной, например, относится данное слово. Например, данное слово относится к названию кинотеатра или ко времени и так далее. Мы таким образом делаем разметку всех слов и, уже получив эти данные, можем заполнить фрейм нашего диалога. А дальше мы можем, например, использовать стандартные методы. Но и та часть, которая называется dialogue manager, сейчас тоже реализуется на основе нейронных сетей. Здесь как раз используются методы обучения с подкреплением, потому что необходимо научиться выбирать действие, которое максимизирует скорость достижения результата в диалоге. То есть мы можем учить то, как на основе описания текущей ситуации, то есть нашего состояния диалога, нужно выбирать действия, запросить пользователя или обратиться в базу данных, для того чтобы как можно скорее решить задачу, которую пользователь поставил, и тогда наша система получит подкрепление и сможет обучиться. Здесь тоже используются нейросетевые методы.И для генерации текста также сейчас активно внедряются так называемые нейросетевые генеративные модели, когда при подаче некоторых скрытых представлений модель по ним может сгенерировать последовательность, которая наиболее близко соответствует диалогу на естественном языке. И эти нейросетевые методы лучше стандартных, например, методов, основанных на шаблонах, потому что последовательности, которые генерирует нейросеть, более вариативны и богаче, чем то, что является стандартным ответом по шаблону. Таким образом, очевидно, что, скорее всего, следующим шагом станет как раз попытка делать сначала по всем модулям to-end-архитектуру, потому что сейчас существуют гибридные архитектуры, в которых часть модулей нейросетевая, а часть модулей — нет. И только-только появляются самые первые исследования последние два года, когда все модули присутствуют именно в нейросетевой имплементации. И очевидно, что все мы, конечно же, хотим и стремимся к тому, чтобы сделать это обучение end-to-end. Но на самом деле эта описанная модульная архитектура в основном применяется в таком целенаправленном диалоге, при котором разворачивается сценарий, который я описывал. Но зачастую пользователю необходимо сочетать такой целенаправленный диалог, например, с другой функциональностью, такой как ответы на вопросы или поиск какой-то информации, а также просто поддержание беседы и какое-то развлечение. Существуют не только такие целенаправленные агенты, но и вообще есть направление, где мы исследуем то, как построить агентов для ответа на вопросы. Также мы исследуем направление, как построить агентов, которые ведут просто такую болтовню, беседу с пользователем. К чему в идеале мы могли бы стремиться? К тому, чтобы у нас был такой некоторый идеальный агент, такой персональный помощник, который бы объединял в себе разные типы агентов и переключался бы между своими функциональностями, между своими характерами в зависимости от того, в какой задаче он сейчас использовался. И внедрение таких агентов, конечно же, открывает абсолютно новые интересные задачи, которые необходимо решить. Потому что получается, что такой персональный помощник должен, с одной стороны, хорошо знать своего пользователя, с которым он работает. Таким образом, он должен накапливать какую-то информацию о нем, подстраивать свои алгоритмы под данного конкретного пользователя. С другой стороны, он должен иметь возможность интегрироваться с внешними сервисами (например, делать запросы во внешние базы данных, получать оттуда информацию, обрабатывать ее, саммаризировать, выделять важное и это коммуницировать пользователю). На самом деле это очень интересная исследовательская задача, которую еще предстоит решить. А в идеале мы, возможно, получим такого агента, как в фильме «Она», который бы помогал нам по жизни, шел бы с нами и, возможно, даже у некоторых вызывал бы какие-то теплые чувства. Источник: postnauka.ru Комментарии: |
|