Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Технологии искусственного интеллекта в банковской сфере. Учебное пособие
.pdf
Глава 6
6.3. Архитектура приложения голосового помощника
Архитектура приложения для голосового помощника состоит из четырех основных частей, представленных на рисунке 41.
Рис. 41. Архитектура приложения для голосового помощника
1. Устройство, на котором работает виртуальный помощник. Это может быть умная колонка или мобильный девайс с
установленным виртуальным помощником.
2. Приложение для виртуального помощника. Приложение
запускается внутри самого виртуального помощника. Для запуска приложения оно должно быть установлено пользователем и быть загружено в магазин приложений виртуального помощника.
3. Инструмент
понимания речи и управления диалогом.
Ключевой элемент архитектуры, реализующий основную логику приложения.
4. Веб-сервер. Реализует бизнес-логику приложения по управлению данными клиента.
101

Технологии искусственного интеллекта в банковской сфере
Рассмотрим подробнее инструмент понимания речи и управления диалогом. Для разработки приложения был использован фреймворк с открытым исходным кодом Rasa. Фреймворк позволяет понимать пользовательский ввод, управлять
ходом диалога и имеет возможность интеграции со сторонними приложениями через открытое API.
Схематично архитектура фреймворка Rasa представлена на
рисунке 42.
Рис. 42. Архитектура фреймворка Rasa
Фреймворк работает по следующему алгоритму:
— сначала Фреймворк принимает голосовой запрос пользователя;
— Rasa NLU извлекает намерения и сущности из сообщения пользователя, преобразует их в вектор признаков, затем
передает в диалоговую модель. Вектор признаков — это числовое представление, которое описывает важные характеристики сообщения;
— диалоговая модель принимает предыдущую историю
диалога и
вектор признаков, полученный после преобразования;
— модель предсказывает следующее лучшее действие в
диалоге. Если следующее действие требует вызов серверной
логики, то происходит клиент-серверное взаимодействие;
— предсказанный ответ отправляется обратно пользователю.
102

Глава 6
Фреймворк состоит из двух основных частей:
1. Rasa NLU. Rasa NLU — это «ухо» приложения, оно по-
могает помощнику понять, что говорит пользователь. Rasa
NLU принимает пользовательский ввод в форме неструктури-
рованной человеческой речи и извлекает структурированные
данные в форме намерений и сущностей.
Намерение — это метки, которые представляют цель или
значение конкретного пользовательского ввода. Например, сообщение
«Привет» может иметь метку «приветствие», потому
что значение этого сообщения — приветствие.
Сущности — это важные ключевые слова, на которые должен обратить внимание помощник. Например, сообщение «Меня зовут Александр» содержит имя «Александр». Помощник
должен извлечь имя и запомнить его на протяжении всего разговора, чтобы поддерживать естественное взаимодействие. Извлечение
сущностей достигается путем обучения модели распознавания именованных сущностей с целью идентификации
и извлечения сущностей (в данном примере имен) для неструктурированных пользовательских сообщений.
2. Rasa Core. Основой является компонент управления
диалогом. Он решает, как должен реагировать помощник, основываясь на 1) состоянии разговора и 2) контексте. Rasa Core
обучается, наблюдая шаблоны разговорных данных между
пользователями
и помощником.
Rasa Core использует машинное обучение, чтобы выбрать
шаблоны разговоров из примеров разговоров, которые предоставляются в качестве обучающих данных. Основываясь на
этих шаблонах, помощник может обобщать, позволяя модели
прогнозировать следующее наилучшее действие в беседе. Это
позволяет модели предоставить соответствующий ответ, даже
если беседа не совсем соответствует ни одному из увиденных
обучающих примеров.
Важно отметить, что нет необходимости заранее программировать все возможные разговорные ситуации. Необходимо
103

Технологии искусственного интеллекта в банковской сфере
лишь предоставить обучающие данные, содержащие несколько примеров диалога при создании приложения, а затем дополнить новыми данными непосредственно из реальных взаимодействий пользователя с приложением. Используя машинное
обучение, помощник может совершенствоваться со временем,
основываясь на том, что на самом деле говорят пользователи.
Также решающими в разработке приложения являются «политики
» диалога, играющие важную роль в поведении диалога. Некоторые политики довольно просты, например те, которые отражают разговоры, на которых они были обучены, а некоторые довольно сложны, например те, которые полагаются
на сложное машинное обучение для прогнозирования следующего действия на основе контекста разговора.
Основные политики:
Max_history (Максимальная история) —
делает прогноз
относительно следующего действия, которое нужно предпринять, он не просто смотрит на последнее, что сказал пользователь, а также учитывает то, что произошло в предыдущих
разговорных ходах. Параметр max_history управляет тем, на
какое количество предыдущих обращений должна смотреть
политика при прогнозировании. Это может быть особенно полезно, если вы хотите
обучить своего помощника реагировать
на определенные шаблоны в пользовательских сообщениях,
такие как повторные запросы не по теме. Так что более высокая max_history всегда лучше, верно? Не так быстро. Чем выше max_history, тем больше модель, что может вызвать проблемы с производительностью. Если вам нужно, чтобы ваш
помощник запомнил некоторые детали
из дальней части разговора, лучше сохранить эти детали в виде слотов, а не устанавливать для max_history очень большое число.
Data augmentation. По умолчанию ядро Rasa объединяет
случайно выбранные истории в файле данных обучения. Этот
процесс называется расширением данных. Увеличение данных
используется, чтобы научить модель игнорировать историю
разговоров, когда она неактуальна.
104

Глава 6
Memoization Policy (Политика мемоизации) — одна из бо-
лее простых политик диалога. В процессе работы извлекается
часть разговора, заданная значениями max_history (поэтому,
если max_history: 3, 3 возвращается), и находится соответствующий фрагмент истории в наборе обучающих данных. Если
будет обнаружено совпадение, то предсказывается то же самое
следующее действие, замеченное в данных обучения. Политика мемоизации очень полезна
для того, чтобы убедиться, что
ваш помощник следит за историями, которые вы указали в
своих данных обучения. Он обеспечивает соблюдение шаблонов и диалоговых путей, которым должен следовать ваш помощник, подобно набору правил. Тем не менее, когда совпадение не найдено в данных обучения, политика Memoization
не может обеспечить следующее
действие. Вот почему Политика мемоизации не предназначена для использования отдельно — она используется с другими политиками, которые заполняют пробелы, когда точное совпадение недоступно.
Mapping Policy (Политика сопоставления) — сопоставляет
намерение с конкретным действием. Это полезно, когда вы
знаете, что за намерением всегда должен следовать определенный ответ, независимо от того, что
произошло ранее в разговоре. Например, если пользователь спрашивает, разговаривают ли они с ботом в середине разговора, помощник должен
всегда отвечать тем же сообщением, не прерывая поток разговора.
Keras Policy (Политика Keras) — применяет силу машинного обучения к управлению диалогами. Он учится на данных
тренировок, и со временем ваш помощник
может научиться
справляться со сложными разговорами. Политика использует
нейронную сеть, реализованную в Keras, библиотеке глубокого обучения Python. Архитектура по умолчанию основана на
долговременной кратковременной памяти (LSTM), типе рекуррентной нейронной сети (RNN), но это можно переопределить в методе Keras Policy model_architecture.
105

Технологии искусственного интеллекта в банковской сфере
Политика Keras учитывает несколько факторов при составлении прогноза, в том числе последнее действие, намерения и сущности, извлеченные по модели NLU, слоты, которые
были установлены, предыдущие разговорные повороты.
Form Policy (Политика формы) — используется в ситуа-
циях, когда помощнику необходимо собрать определенные
фрагменты информации от пользователя перед выполнением
действия. Например, чтобы помощник мог получать
ты поиска для медицинских учреждений, ему необходимо две
части информации: тип учреждения и местоположение. Без
этого невозможно выполнить поисковый запрос.
Настройка конфигурации политики и параметров тонкой
настройки — это мощный способ поднять помощника Rasa на
новый уровень.
Тем самым была рассмотрена архитектура приложения для
виртуального помощника на базе фреймворка Rasa. На основании полученных знаний приступим к разработке первой его части, а именно NLU-модуля для спроектированных сценариев.
результа-
6.4. Разработка NLU-модуля и системы управления диалогом
Реализация NLU-модуля с помощью фреймворка Rasa начинается с создания двух файлов, необходимых для обучения
моделей nlu.md и stories.md.
nlu.md — файл, содержащий примеры обучения модели
NLU. Он включает в себя намерения пользователя, которые
являются пользовательскими целями, и примеры реплик пользователя, которые представляют эти намерения. В обучающих
данных
ные ключевые слова, которые виртуальный помощник должен
извлечь из примера высказывания.
рии — это примеры сквозных диалогов пользователя с системой.
NLU также должны быть указаны сущности или важ-
Пример файла nlu.md представлен на рисунке 43.
stories.md — файл, содержащий примеры историй. Исто-
106

Глава 6
Рис. 43. Содержание файла nlu.md
Сущности помечены квадратными скобками, и в скобках
указан их тип. Например, в файле «nlu.md» для сценария проверки баланса карты мы создали намерение «balance_direct_search», которое представляет запрос пользователя на поиск данных по балансу. В каждом примере помечены тип банковского продукта, на котором пользователь желает проверить
баланс, и тип продукта.
История
— это представление разговора между пользователем и AI-помощником, преобразованное в определенный
формат, в котором вводимые пользователем данные выражаются в виде соответствующих намерений (и объектов, где это
необходимо), а ответы помощника выражаются в виде соответствующих имен действий. Файл, необходимый для обучения системы управления диалогом Rasa Core, называется историей. Файл stories.md
содержит возможные пути развития
107

Технологии искусственного интеллекта в банковской сфере
диалога, которые могут произойти в приложении. Данный файл
необходим для того, чтобы модель правильно обучилась предсказывать следующий шаг диалога.
Пример файла stories.md представлен на рисунке 44.
Рис. 44. Содержание файла stories.md
Ключевую роль в разработке системы понимания речи и
управления диалогом занимает файл конфигурации config.yml,
в котором необходимо указать параметры модели и политики,
которые должна использовать модель.
108

Глава 6
Выбранные настройки конфигурации сильно связаны с языком, на котором разрабатывается приложение. Если язык приложения английский, то в настройках доступны предобученные модели, реализующие часть логики. Например, распознавание имени в предложении. Так как приложение будет доступно на русском языке, для которого на текущий момент нет
реализованных предобученных моделей
, предоставляемых для
интеграции с Rasa, то обучение будет производиться с нуля.
Пример файла config.yml представлен на рисунке 45.
Рис. 45. Содержание файла config.yml
Обучение модели будет происходить встроенным способом представления предложения в виде суммы векторов слов,
на основе которого будет обучен классификатор. Встроенный
классификатор работает на базе TensorFlow. Он не использует
предварительно обученные векторы слов и работает на любом
языке.
109

Технологии искусственного интеллекта в банковской сфере
Также важно отметить политики, которые использованы в
приложении:
KerasPolicy. Использование нейронной сети, реализованной в Keras, для выбора следующего действия. Архитектура
по умолчанию основана на алгоритме LSTM.
FallbackPolicy. Вызывает действие по умолчанию, если происходит хотя бы одно из следующего:
— признание намерений имеет достоверность ниже
nlu_threshold;
— намерение с наивысшим рейтингом достоверно отличается от намерения с наивысшим ранжированием меньше, чем
ambiguity_threshold;
— ни одна из политик диалога не предсказывает действие
с уверенностью выше, чем core_threshold.
MemoizationPolicy. Запоминает диалоги в тренировочных
данных. Он прогнозирует следующее действие с уверенностью 1.0, если точный диалог существует в данных обучения.
FormPolicy. Расширение MemoizationPolicy, которое обрабатывает заполнение форм.
MappingPolicy. Используется для
привязки намерений
пользователя к действиям приложения. Намерение может быть
сопоставлено не более чем одному действию. Бот выполнит
сопоставленное действие, как только получит сообщение о намерении запуска. После этого он прослушает следующее сообщение.
Следующей важной частью разработки приложения для
виртуального помощника является проектирование ответов
системы и сущностей, которые система
должна обрабатывать.
Для этого в архитектуре Rasa используется файл domain.yml.
Файл domain.yml определяет окружение, в котором работает виртуальный помощник. В нем должны быть перечислены все намерения пользователя, сущности, слоты и действия,
о которых должно знать приложение. Также он может включать ответы на то, что может сказать бот.
Пример файла domain.yml представлен на
рисунке 46.
110
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
