Изменения

Перейти к: навигация, поиск

Диалоговые системы

4075 байт добавлено, 21 январь
Нет описания правки
== Определение ==
Диалоговые системы (англ. conversational agents, CACAs) {{---}} компьютерные системы, предназначенные для общения с человеком. Они имитируют поведение человека и обеспечивают естественный способ получения информации, что позволяет значительно упростить руководство пользователя и тем самым повысить удобство взаимодействия с такими системами.
Диалоговую систему также называют разговорным искусственным интеллектом или просто ботом.
}}
Часто Обычно целеориентированные и чат-ориентированные системы исследуют отдельно, но на практике многие системы являются универсальными. Схема идеальной универсальной модели диалоговой системы приведена на рисунке 1.
[[Файл : Perfect-n2n.png | 200px | thumb | right | [https://image.slidesharecdn.com/deeppavlovos2019-190529124953/95/deeppavlov-2019-23-1024.jpg?cb=1559135208 Рисунок 1]. Схема идеальной диалоговой системы]]
История диалога используется, чтобы обратиться к множеству внешних источников инфомрацииинформации. Затем формируется полный контекст диалога, который включает персональные данные пользователя, информацию из внешних источников, историю диалога. Контекст при помощи трансформера структурируется и передается множеству компонентов, которые решают определенные задачи. Набор полученных ответов кодируется и ранжируется с учетом контекста.
== Целеориентированные диалоговые системы ==
Рисунок 2. Диаграмма классической архитектуры диалоговой системы]]
* '''ASR'''. На вход поступает речь пользователя, которая затем распознается и переводится в текст. Результат работы компонента называют ''гипотезой'', так как полученный текст может соответствовать исходному сообщению не полностью.Описание модулей:
* '''ASR'''. На вход поступает речь пользователя, которая затем [[Распознавание речи | распознается]] и переводится в текст. Результат работы компонента называют ''гипотезой'', так как полученный текст может соответствовать исходному сообщению не полностью. * '''NLU'''. Фраза в текстовом виде анализируется системой: определяется домен, намерение, именованные сущности. Для распознавания намерений может применяться обученный на [[Векторное представление слов | эмбеддингах ]] классификатор. Распознавание именованных сущеностей является отдельной задачей извлечения информации. Для ее решения используются формальные языки, статистические модели и их комбинациякомбинации. В результате работы компонента создается формальное описание фразы {{---}} семантический фрейм.
* '''DM'''. Состоянием диалога или контекстом является информация, которая была получена при общении с пользователем ранее. В соответствии с текущим состоянием выбирается политика поведения системы, корректируется семантический фрейм. В качестве поставщика знаний может выступать СУБД или Web API.
Обычно после распознавания именованных сущностей выполняется ''заполнение слотов'' (англ. slot filling), в ходе которого каждая найденная сущность приводится к своей нормальной форме с учетом ее типа и множества возможных значений. Заполнение слотов позволяет не учитывать морфологию сущности при дальнейшей ее обработке. Простейшим подходом к решению данной задачи является поиск с использованием расстояния Левенштейна.
Для получения эмбеддингов используются различные языковые модели: Word2Vec, ESIM, GPT, BERT. Каждой определяется свой способ представления слов и предложений для наиболее точного извлечения их смысловых значений. С хорошей языковой моделью достаточно около 100 примеров для хорошей классификации намерения <ref> [https://wwwimage.slideshareslidesharecdn.netcom/KonstantinSavenkovintentdetectionbenchmarkaugust2017-170817145622/95/nlu-intent-detection-benchmark-by-intento-august-2017 -31-1024.jpg?cb=1503310100 Konstantin Savenkov, Intent Detection Benchmark by Intento]</ref>.
Система с классической архитектурой плохо масштабируется. Так как сценарии диалога нужно определять вручную, их становится сложно согласовывать при большом количестве.
Если заменить каждую часть классической архитектуры искусственной нейронной сетью, то получим архитектуру изображенную на рисунке 3.
Описание каждой части: [[Файл : Ds-nn-to.png | 400px | thumb | right | Рисунок 3<ref>[https://arxiv.org/pdf/1604.04562.pdf Tsung-Hsien Wen, David Vandyke, A Network-based End-to-End Trainable Task-oriented Dialogue System]</ref>. Нейросетевая архитектура диалоговой системы]]
* '''Intent Network'''. Кодирующая сеть, которая преобразует последовательность токенов <tex> w_0^t, w_1^t, \ldots, w_N^t </tex> в вектор <tex> \mathbf{z}_t </tex>. В качестве вектора <tex> \mathbf{z}_t </tex> может выступать скрытый слой [[Долгая краткосрочная память | LSTM-сети ]] <tex> \mathbf{z}_t^N </tex>:<br /> <tex> \mathbf{z}_t = \mathbf{z}_t^N = \operatorname{LSTM}(w_0^t, w_1^t, ..., w_N^t) </tex>
* '''Belief Tracker'''. В реализации используется [[Рекуррентные нейронные сети | RNN-сеть]]. Дает распределение вероятностей <tex> \mathbf{p}_s^t </tex> по всем значениям определенного слота <tex> s </tex>.
* '''Database Operator'''. Выполняет запрос к базе данных по сущностям <tex> \{ \operatorname{argmax} \mathbf{p}_s^t \} </tex> и возвращает вектор <tex> \mathbf{x}_t </tex>, где единицей отмечается та запись (сущность в БД), которая соответствует запросу.
* '''Generation Network'''. Генерирует предложение, используя вектор действия <tex> \mathbf{o}_t </tex> и генератор языка. Предложение содержит специальные токены, которые заменяются на сущности из базы данных по указателю.
Данную архитектуру также называют ''сквозной'' (англ. end-to-end trainable), так как на данных обучается каждая ее часть. Для модели Модель с данной архитектурой не требуется создавать промежуточные состояния вручную, а также ее можно обобщить на намерения, которые не наблюдались во время обучения.
== Чат-ориентированные диалоговые системы ===
Данный тип систем обычно используется чтобы занять пользователя, например, во время ожидания выполнения задачи. Система поддерживает бессодержательный, но связный диалог.
=== С Системы с ограниченными ответами ===
Системы с ограниченными ответами (англ. retrieval/example-based) по последовательности фраз выдают наиболее подходящий ответ из списка возможных. Преимуществом таких систем является то, что ответы строго контролируются: можно удалить нежелательные шутки, нецензурные или критикующие выражения.
'''Интерактивная система неформальных ответов ''' (англ. informal response interactive system, IRIS) основана представлена на модели векторного пространстварисунке 1. Текущая фраза пользователя сравнивается со всеми существующим фразами в базе Прямоугольником обозначены функциональные модули, цилиндром базы данных. Векторное прдставление Особенностью данной системы является то, , выполняется сравнение не только текущей фразы пользователя, но и вектора текущей истории диалога также сравнивается с векторным представлением диалогов другими диалогами в базе данных, что позволяет учесть контекст. Такой подход позволяет включить информацию о контексте Первая фраза пользователя попадает в модуль инициализации, который обеспечивает приветствие пользователя и извлечение его имени. Имя пользователя используется менеджером диалога, чтобы инициализировать вектор истории диалога. Если пользователь не известен системе (его имя отуствует в Vocabulary Learning), то система инициализирует историю случайным вектором из хранилища историй. Когда инициализация заканчивается, система спрашивает пользователя, чего он хочет. В каждой новой фразе менеджер диалога выполняет замену слов из словаря на плейсхолдеры (Dynamic replacement), после чего выполняется токенизация и векторизация фразы. Если встречаются токены, которых нет ни в истории, ни в словаре, то они обозначаются неизветсными (англ. unknown vocabulary terms (OOVs). Неизвестные токены обрабатываются специальным модулем (Vocabulary learning), который либо получает определение от пользователя, либо из внешнего источника информации. Система вычисляет косинусное расстояние между текущей фразой пользователя и всеми фразами, хранимыми в процесс выбора ответабазе данных. Это значение используется, чтобы извлечь от 50 до 100 фраз, которые могут быть ответами. Архитектура Затем вычисляется та же метрика, но уже между вектором текущей истории диалога (которая включает как высказывания пользователя, так и фразы системы представлена на ирсуке) и векторами других историй. Прямоугольником обозначены функциональные модулиЧтобы усилить последние фразы в текущей истории, цилиндром используется коэффициент забывания. Полученные метрики объединяются при помощи log-linear <tex> e^{c_1 + c_2} </tex>, фразы ранжируются, и выбирается случайная сверху. Система также имеет модуль адаптации, который анализирует ответы пользователя и решает, исключить предыдущий ответ системы из множества возможных ответов, увеличить вероятность его выбора или уменьшить. [[Файл : Ds- репозиторииiris.png | 350px | thumb | right |Рисунок . Архитектура AliMe Assist]]
Модель с такой архитектурой можно обучить на фильмах,
=== С Системы с генерацией ответов ===
Системы с генерацией ответов (англ. generation-base) генерируют ответ пословно. Такие системы более гибкие, но фильтровать их сложней.
|}
=== Rasa ===
=== LTP ===Архитектура схемотично изображени на рисунке 1. Для передачи сообщений по каналу используются коннекторы. В качестве катала ввода/вывода может быть Телеграм, собственный веб-сайт, Slack, поддерживаются кастомные коннекторы.
=== Rasa ===Данные для тренировки хранятся в формате YAML.
=== spaCy ===stories: - story: greet and subscribe steps: - intent: greet - action: utter_greet - intent: subscribe - action: newsletter_form - active_loop: newsletter_form
[[Файл : Ds-rasa.png | 300px | thumb | right |
Рисунок . ]]
== См. также ==
*[[Рекуррентные нейронные сети]]
*[[Векторное представление слов]]
*[[Обработка естественного языка]]
*[[Распознавание речи]]
== Примечания ==
== Источники информации ==
* [https://arxiv.org/abs/1605.07683 Learning End-to-End Goal-Oriented Dialogупс]
[[Категория: Машинное обучение]]
[[Категория: Обработка естественного языка]]
31
правка

Навигация