Диалоговые системы — различия между версиями

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

Версия 03:41, 18 января 2021

Определение

Диалоговые системы (англ. conversational agents, CA) — компьютерные системы, предназначенные для общения с человеком. Они имитируют поведение человека и обеспечивают естественный способ получения информации, что позволяет значительно упростить руководство пользователя и тем самым повысить удобство взаимодействия с такими системами.

Диалоговую систему также называют разговорным искусственным интеллектом или просто ботом.

Диалоговая система может в разной степени являться целеориентированной системой (англ. goal/task-oriented) или чат-ориентированной (англ. chat-oriented). Как правило, чат-ориентированные системы, в отличие от целеориентированных, поддерживают большое количество доменов, но не способны различать много вопросов в рамках кажного из них.


Определение:
Домен (англ. domain) — область знаний, которая относится к запросу пользователя.


Целеориентированные диалоговые системы

Задачей целеориентированных систем является достижение определенных целей при помощи общения с пользователем. Примером цели может быть поиск книги или включение света.

Классическая архитектура

Классический метод построения целеориентированных систем заключается в использовании цепочки модулей (пайплайна), которая изображена на рисунке 1.

Рисунок 1. Диаграмма классической архитектуры диалоговой системы
  • ASR. На вход поступает речь пользователя, которая затем распознается и переводится в текст. Результат работы компонента называют гипотезой, так как полученный текст может соответствовать исходному сообщению не полностью.
  • NLU. Фраза в текстовом виде анализируется системой: определяется домен, намерение, именованные сущности. Для распознавания намерений может применяться обученный на эмбеддингах классификатор. Распознавание именованных сущеностей является отдельной задачей извлечения информации. Для ее решения используются формальные языки, статистические модели и их комбинация. В результате работы компонента создается формальное описание фразы — семантический фрейм.
  • DM. Состоянием диалога или контекстом является информация, которая была получена при общении с пользователем ранее. В соответствии с текущим состоянием выбирается политика поведения системы, корректируется семантический фрейм. В качестве поставщика знаний может выступать СУБД или Web API.
  • NLG. В соответствии с выбранным действием осуществляется генерация ответа пользователю на естественном языке. Для генерации применяются генеративные модели или шаблоны.


Определение:
Намерение (англ. intent) — желание пользователя в рамках произесенной фразы.


Определение:
Сущность (англ. named entity) — параметр запроса пользователя, найденный в его фразе.


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

Нейросетевая архитектура

Если заменить каждую часть классической архитектуры искусственной нейронной сетью, то получим архитектуру изображенную на рисунке 2.

Рисунок 2. Нейросетевая архитектура диалоговой системы
  • Database Operator. Выходом является вектор x_t, который указывает на записи (сущности в БД), которая соответствует слоту.
  • Intent Network. Является кодирующей сетью, которая преобразует последовательность токенов [math] w_0^t, w_1^t, \ldots, w_N^t [/math] в вектор [math] z_t [/math]. В качестве [math] z_t [/math] может выступать скрытый слой [math] z_t^N [/math] LSTM-сети:
[math] z_t = z_t^N = LSTM(w_0^t, w_1^t, ..., w_N^t) [/math]
  • Belief Tracker. В реализации используется RNN-сеть. Дает распределение вероятностей [math] p_s^t [/math] по всем значениям определенного слота [math] s [/math].
  • Policy network. Объединяет системные модули. Выходом является вектор [math] o_t [/math], который представляет системное действие. Распределение вероятностей для каждого слота [math] \hat p_s^t [/math] пребразуется в вектор [math] \hat p_s^t [/math], который состоит из трех компонент: суммарная вероятность, вероятность, что пользователь сказал, что слот его не интересует, и вероятность, что слот не был упомянут. Также вектор x_t сжимается до нескольких компонент, которые определяют количество совпадений.

[math] o_t = \tanh(W_{zo} z_t + W_{po} \hat p_t + W_{xo} \hat x_t), [/math] где матрицы [math] W_{zo} [/math], [math]W_{po} [/math] и [math] W_{xo} [/math] — параметры, а [math] \hat p_t = \hat p_s^t [/math] — конкатенация,

  • Generation Network. Генерирует предложение, используя вектор действия o и генератор языка.


Данную архитектуру также называют сквозной (англ. end-to-end trainable), так как каждая ее часть обучается на данных.


Полиси нетворк -- рекурентная сеть, которая хранит состояния, из которых декодируется ответ. В ответе есть специальные токены, вместо которых подставляются данные.

Такая значительно лучше (ссылка)

https://arxiv.org/abs/1604.04562

Эмбединги предложений попадают в энекодер. Закодированный диалог попадает в память. Там вектора усредняются и получается вектор состояния.

End-to-end (E2E) генеративные диалоговые модели основаны на кодер-декодер нейронных сетях. Идея заключается в использвании кодирующей сети для трансляции конекста диалога в распределение и затем использовать декодирующуюю сеть для генерации ответа системы. Такие модели не требуют создавать промежуточные состояния вручную и могут обобщаться на реакции, которые не наблюдались во время обучения.


Именованная сущность (просто сущность) -- параметр запроса


Эмбидинг -- 2

Контекст

Для генерации ответа используют генеративные модели, либо шаблоны.

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

Каноническая архитектура показана на рисунке.

Нейросетевая архитектура

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

Целеориентированные диалоговые системы. Позволяет решать одну задачу.

Модель на основе нейронных сетей (end-to-end):

Энкодер-Декодер с вниманием.

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

Чаториентированные системы

Чатоирентированные системы как правило используются для развлечения и общения в чате. В разработке так же используются либо retrieval-based methods и генеативные модели,

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

С ограниченными ответами

С генерацией ответов

Примеры систем

ELIZA иалоговая система-психоаналитик (сейчас, ее назвали бы чат-бот), родом из 60-ых годов.

Диалоговая операционная система.

Фреймворки

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

DeepPavlov.ai

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

LTP

Rasa

spaCy

Другое

Языковые модели: word2vec, esim, gpt, bert. Хорошей языковой модели достаточно около 100 примеров для хорошей классификации намерения.


Ds-perfect-e2e.png

См. также

Примечания


Источники информации