== Определение ==
Диалоговые системы (англ. Conversational Agentconversational agents, CA) {{---}} компьютерные системы, предназначенные для общения с человеком. Они имитируют поведение человека и обеспечивают естественный способ получения информации, что позволяет значительно упростить руководство пользователя и тем самым повысить удобство взаимодействия с такими системами.
Диалоговую систему также называют разговорным искусственным интеллектом или просто ботом.
Диалоговая система может в разной степени являться ''целеориентированной системой '' (англ. Goalgoal/Tasktask-Orientedoriented) или системой общего назначения''чат-ориентированной'' (англ. chat-oriented). Как правило, чат-ориентированные системы общего назначения, в отличие от целеориентированных, поддерживают большое количество доменов, но не способны различать много вопросов в рамках кажного из них.
{{Определение |definition='''Домен (англ. Domaindomain)''' {{---}} область знаний, которая относится к запросу пользователя.
}}
== Целеориентированные диалоговые системы ==
=== Модульная архитектура ===Задачей целеориентированных систем является достижение определенных целей при помощи общения с пользователем. Примером цели может быть поиск книги или включение света.
Диаграмма модульной архитектуры целеориентированной системы показана на рисунке 1.=== Классическая архитектура ===
[[Файл : Modular-caКлассический метод построения целеориентированных систем заключается в использовании цепочки модулей (пайплайна), которая изображена на рисунке 1.png | 200px | thumb | right | ]]
Диалоговая система с модульной архитектурой[[Файл :Ds-pipeline-to.png | 400px | thumb | right |Рисунок 1. Диаграмма классической архитектуры диалоговой системы]]
Домен * '''ASR'''. На вход поступает речь пользователя, которая затем распознается и переводится в текст. Результат работы компонента называют ''гипотезой'', так как полученный текст может соответствовать исходному сообщению не полностью. * '''NLU'''. Фраза в текстовом виде анализируется системой: определяется домен, намерение, именованные сущности. Для распознавания намерений может применяться обученный на эмбеддингах классификатор. Распознавание именованных сущеностей является отдельной задачей извлечения информации. Для ее решения используются формальные языки, статистические модели и их комбинация. В результате работы компонента создается формальное описание фразы {{-- область -}} семантический фрейм. * '''DM'''. Состоянием диалога или контекстом является информация, которая была получена при общении с пользователем ранее. В соответствии с текущим состоянием выбирается политика поведения системы, корректируется семантический фрейм. В качестве поставщика знанийможет выступать СУБД или Web API. * '''NLG'''. В соответствии с выбранным действием осуществляется генерация ответа пользователю на естественном языке. Для генерации применяются генеративные модели или шаблоны. {{Определение | definition='''Намерение (англ. intent)''' {{---}} желание пользователя в рамках произесенной фразы.}} {{Определение | definition='''Сущность (англ. named entity)''' {{---}} параметр запроса пользователя, найденный в его фразе.}} Система с классической архитектурой плохо масштабируется. Так как сценарии диалога нужно определять вручную, их становится сложно согласовывать при большом количестве. === Нейросетевая архитектура === Если заменить каждую часть классической архитектуры искусственной нейронной сетью, то получим архитектуру изображенную на рисунке 2. [[Файл : Ds-nn-to.png | 400px | thumb | right | Рисунок 2. Нейросетевая архитектура диалоговой системы]] * '''Database Operator'''. Предоставляет данные. * '''Intent Network'''. Является кодирующей сетью, restaurant которая относится к запросупреобразует последовательность токенов <tex> w_0^t, w_1^t, \ldots, w_N^t </tex> в вектор <tex> z_t </tex>. В качестве вектора может выступать скрытый слой LSTM-сети: : <tex> z_t = z_t^N = LSTM(w_0^t, w_1^t, ..., w_N^t) </tex> * '''Belief Tracker'''. Дает распределение вероятностей наличия во фразе множества сущностей. Для реализации используют RNN-сеть. * '''Policy network'''. Объединяет все системные модули. * '''Generation Network'''. Данную архитектуру также называют сквозной (англ. end-to-end trainable), так как каждая ее часть обучается на данных. Полиси нетворк -- рекурентная сеть, которая хранит состояния, из которых декодируется ответ. В ответе есть специальные токены, вместо которых подставляются данные. Такая значительно лучше (ссылка) https://arxiv.org/abs/1604.04562 Эмбединги предложений попадают в энекодер. Закодированный диалог попадает в память. Там вектора усредняются и получается вектор состояния. End-to-end (E2E) генеративные диалоговые модели основаны на кодер-декодер нейронных сетях. Идея заключается в использвании кодирующей сети для трансляции конекста диалога в распределение и затем использовать декодирующуюю сеть для генерации ответа системы. Такие модели не требуют создавать промежуточные состояния вручную и могут обобщаться на реакции, которые не наблюдались во время обучения.
Намерение (Intent) -- желание пользователя в рамках вопроса
Именованная сущность (просто сущность) -- параметр запроса
Политика -- статегия поведения
Гипотеза -- распознанная фраза
Эмбидинг -- 2
=== Нейросетевая архитектура ===
Как извлекать намерение? Можно использовать регулярные выражения. Но один и тот же запрос на естественном языке можно построить по-разному, часто такой подход будет ошибаться. Сложно описать все возможные способы задания запроса
Проблемы: валидных ответов может быть несколько, контекст может находится за пределами диалога.
== Chit-Chat Чаториентированные системы == Чатоирентированные системы как правило используются для развлечения и общения в чате. В разработке так же используются либо retrieval-based methods и генеативные модели,
Проблема в проектировании таких систем:
невозможно вручную спроектировать изменение состояния диалога, как в целеориентированных системах. Одним из решений является использование иерархического кодера, чтобы определить иерархическую структуру в диалоге.
Seq2seq, поддержа большого количества тем, но неглубокая.
== = С ограниченными ответами === С генерацией ответов Примеры систем ==
ELIZA
Языковые модели: word2vec, esim, gpt, bert. Хорошей языковой модели достаточно около 100 примеров для хорошей классификации намерения.
[[Файл : Ds-nn.png | 200px | thumb | right | ]]
[[Файл : Perfect-n2n.png | 200px | thumb | right | ]]