Изменения

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

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

1374 байта добавлено, 16:03, 18 января 2021
Нет описания правки
{{Определение | definition=
'''Сущность Именованная сущность (англ. named entity)''' {{---}} слово во фразе пользователя, которое можно отнести к определенному типу. '''Слот (англ. named entity)''' {{---}} параметр запроса пользователя, найденный в его фразеограниченный множеством допустимых значений.
}}
 
Обычно после распознавания именованных сущностей выполняется ''заполнение слотов'' (англ. slot filling), в ходе которого каждая найденная сущность приводится к своей нормальной форме с учетом ее типа и множества возможных значений. Заполнение слотов позволяет не учитывать морфологию сущности при дальнейшей ее обработке. Простейшим подходом к решению данной задачи является поиск с использованием расстояния Левенштейна.
Система с классической архитектурой плохо масштабируется. Так как сценарии диалога нужно определять вручную, их становится сложно согласовывать при большом количестве.
[[Файл : Ds-nn-to.png | 400px | thumb | right | Рисунок 2. Нейросетевая архитектура диалоговой системы]]
* '''Database OperatorIntent Network'''. Выходом является Кодирующая сеть, которая преобразует последовательность токенов <tex> w_0^t, w_1^t, \ldots, w_N^t </tex> в вектор x_t<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>.
* '''Intent NetworkDatabase Operator'''. Является кодирующей сетью, которая преобразует последовательность токенов Выполняет запрос к базе данных по сущностям <tex> w_0\{ \operatorname{argmax} \mathbf{p}_s^t, w_1^t, \ldots, w_N^t } </tex> в и возвращает вектор <tex> z_t \mathbf{x}_t </tex>, где единицей отмечается та запись (сущность в БД), которая соответствует запросу. В качестве <tex> z_t </tex> может выступать скрытый слой <tex> z_t^N </tex> LSTM-сети:
: * '''Policy network'''. Объединяет системные модули. Выходом является вектор <tex> \mathbf{o}_t </tex>, который представляет системное действие. Распределение вероятностей для каждого слота <tex> z_t = z_t\mathbf{p}_s^N = LSTM(w_0t </tex> пребразуется в вектор <tex> \hat \mathbf{p}_s^t</tex>, w_1^tкоторый состоит из трех компонент: суммарная вероятность, вероятность, что пользователь выразил безразличие к слоту, и вероятность, что слот не был упомянут..., w_N^t) Также вектор <tex> \mathbf{x}_t </tex> сжимается в one-hot-вектор <tex> \hat \mathbf{x}_t </tex>, где каждая компонента определяет количество подходящих записей.
* '''Belief Tracker'''. В реализации используется RNN-сеть. Дает распределение вероятностей : <tex> p_s^t o_t = \tanh(W_{zo} z_t + W_{po} \hat p_t + W_{xo} \hat x_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 \mathbf{p}_t = \bigoplus \hat p_s\mathbf{p}_s^t </tex> {{---}} конкатенация,
* '''Generation Network'''. Генерирует предложение, используя вектор действия o и генератор языка.
31
правка

Навигация