Исследование разработки онтологического чатбота на базе глубинного обучения нейронных сетей

Аннотация

Оверченко Я.Ю., Копытова О.М. Исследование разработки онтологического чатбота на базе глубинного обучения нейронных сетей. Рассмотрены основные подходы к построению систем искусственного интеллекта, изучены ключевые архитектуры нейронных сетей. Определён наиболее подходящий тип нейронной сети для практической реализации онтологического чат-бота. Исследованы основные методы обучения нейросетевых систем.

Общая постановка проблемы

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

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

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

Цель исследования

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

Архитектуры нейронных сетей

Основными структурными элементами нейронной сети являются нейрон и синапс (см.рис.1).

Схема нейронной сети

Рисунок 1 — Схема нейронной сети

Нейрон — это вычислительная единица, которая получает информацию, производит над ней простые вычисления и передает ее дальше. Они делятся на три основных типа: входной, скрытый и выходной. В том случае, когда нейросеть состоит из большого количества нейронов, вводят термин слоя. Соответственно, есть входной слой, который получает информацию, n скрытых слоев (обычно их не больше 3), которые ее обрабатывают и выходной слой, который выводит результат.

Синапс — это связь между двумя нейронами. У синапсов есть параметр — вес. Благодаря ему, входная информация изменяется, когда передается от одного нейрона к другому. Допустим, есть 3 нейрона, которые передают информацию следующему. Тогда у нас есть 3 веса, соответствующие каждому из этих нейронов. У того нейрона, у которого вес будет больше, та информация и будет доминирующей в следующем нейроне. На самом деле, совокупность весов нейронной сети или матрица весов — это своеобразный мозг всей системы. Именно благодаря этим весам, входная информация обрабатывается и превращается в результат. Важно помнить, что во время инициализации нейронной сети, веса расставляются в случайном порядке.

Согласно одной из классификаций нейронных сетей, которая была определена исходя из механизмов их функционирования и характера связей, существует четыре основных вида:

  • сети прямого распространения (все связи направлены строго от входных нейронов к выходным);
  • рекуррентные сети (сигнал с выходных нейронов или нейронов скрытого слоя частично передается обратно на входы нейронов входного слоя, образуя обратную связь);
  • радиально-базисные функции (искусственные нейронные сети, использующие в качестве активационных функций радиально-базисные, также называются RBF-сетями);
  • самоорганизующиеся карты (представляют собой соревновательную нейронную сеть с обучением без учителя, выполняющую задачу визуализации и кластеризации) [1][2].

В ходе исследования вышеуказанных архитектур нейронных сетей было определено, что наиболее подходящими для реализации онтологического чат-бота являются рекуррентные сети [2]. Они "фильтруют" входные данные, возвращаясь к устойчивому состоянию и, таким образом, позволяют решать задачи компрессии данных и построения ассоциативной памяти. Благодаря этому появляется возможность обрабатывать серии событий во времени или последовательные пространственные цепочки. В отличие от многослойных перцептронов, рекуррентные сети могут использовать свою внутреннюю память для обработки последовательностей произвольной длины. Поэтому они применимы в таких задачах, где нечто целостное разбито на сегменты, например: распознавание рукописного текста или распознавание речи [1]. Частным случаем рекуррентных сетей являются двунаправленные сети. В таких сетях между слоями существуют связи как в направлении от входного слоя к выходному, так и в обратном.

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

Одна из главных областей применения рекуррентных нейронных сетей на сегодняшний день — работа с языковыми моделями, в частности — анализ контекста и общей связи слов в тексте. Для сети такого типа структура языка — это долгосрочная информация, которую надо запомнить. К ней относятся грамматика, а также стилистические особенности того корпуса текстов, на которых производится обучение. Фактически рекуррентная нейронная сеть запоминает, в каком порядке обычно следуют слова, и может дописать предложение, получив некоторую затравку. Если эта затравка случайная, может получиться совершенно бессмысленный текст, стилистически напоминающий шаблон, на котором училась нейронная сеть. Если же исходный текст был осмысленным, сеть поможет его стилизовать, однако в последнем случае одной рекуррентной сети будет мало, так как результат должен представлять собой "смесь" случайного, но стилизованного текста и осмысленной, но "неокрашенной" исходной части.

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

Методы обучения нейронных сетей

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

  • метод обратного распространения;
  • метод упругого распространения;
  • генетический анализ;
  • глубинное обучение [3].

Метод обратного распространения использует алгоритм градиентного спуска. Данный алгоритм представляет собой способ нахождения локального минимума или максимума функции с помощью движения вдоль градиента [3]. Градиент представляет собой векторное значение, определяющее направление и крутизну склона. Градиент находится с помощью производной от функции в нужной точке. Оказавшись в определённой точке со значением веса, который распределяется в случайном порядке, вычисляется градиент и определяется направление движения спуска, и так в каждой следующей точке, пока не достигаетсялокальный минимум, не позволяющий дальнейшего спуска. Чтобы справиться с этой неприятностью, необходимо установить нужное значение момента, которое позволит преодолеть часть графика и достигнуть нужной точки. Если это значение будет недостаточным, то преодолеть выпуклость не получится, в случае с установкой более высокого значения, чем нужно есть шансы проскочить глобальный минимум. Кроме момента ускорения, есть ещё понятие, определяющее общую скорость обучения сети. Это значение, как и предыдущее, представляет собой гиперпараметр и подбирается методом проб и ошибок. Оптимальный вариант заранее никогда не известен, узнать его можно только проведя несколько обучений и корректируя каждый раз значение в нужном направлении. В процессе поступления информации нейронная сеть последовательно передаёт её от одного нейрона к другому посредством синапсов, до того момента, пока информация не окажется на выходном слое и не будет выдана как результат. Такой способ называется «передачей вперёд» [3]. После того, как результат получен, вычисляется ошибка и на её сновании выполняется обратная передача, суть которой – последовательно изменить вес синапсов, начиная с выходного и продвигаясь к входному слою. При этом значение веса меняется в сторону лучшего результата. Для использования такого метода обучения подойдут только те функции активации, которые можно дифференцировать.

Описанный выше метод обратного распространения имеет недостаток в виде больших временных затрат на процесс обучения неуместных в случае необходимости получить быстрый результат. Для ускорения процесса было предложено немало дополнительных алгоритмов, ускоряющих процесс. Одним из которых и является текущий метод. Метод упругого распространения использует в качестве основы обучение по эпохам и применяет только знаки производных частного случая для корректировки весовых коэффициентов. Используется определённое правило, по которому производится расчёт величины коррекции весового коэффициента. Если на этом этапе расчётов производная меняет свой знак, значит, то нужно произвести откат, то есть вес вернуть в обратную позицию, а величину изменения уменьшить. Если знак производной не изменился, то величина изменения веса, наоборот, увеличивается для большей сходимости. Если основные параметры коррекции веса зафиксировать, то настройки глобальных параметров можно избежать[3]. И это является преимуществом текущего метода над предыдущим. Для этих параметров есть рекомендуемые значения, однако, никаких ограничений на их выбор не накладывается. Такой подход позволяет добиться сходимости нейросети быстрее в несколько раз в отличие от предыдущего варианта обучения.

Генетический анализ представляет собой упрощённую интерпретацию природного алгоритма, основанного на скрещивании результатов. То есть, по сути, происходит скрещивание результатов, выбор наилучших и формирование на их основе нового поколениях [3]. В случае, если результат не устраивает, алгоритм повторяется, пока поколение не становится идеальным. Алгоритм может завершиться без достижения нужного результата, если количество попыток будет исчерпано или же будет исчерпано время на мутацию. Этот алгоритм применим к процессу оптимизации веса нейронной сети, при заданной по умолчанию топологии [3]. При этом вес кодируется двоичным кодом, и каждый результат определяется полным набором веса. Оценка качества происходит методом вычисления ошибки на выходе [3].

Глубинное обучение – статистическая техника классификации закономерностей на основе пробных данных с использованием многослойных нейросетей. Нейронные сети, обучаемые глубинным методом, обычно состоят из набора модулей ввода, принимающих такие данные, как пиксели или слова, множества скрытых слоёв, содержащих скрытые модули, и набора модулей вывода, с учётом наличия связей между различными узлами [4]. Системы глубинного обучения чаще всего используются как классификационные, в том смысле, что миссия типичной сети – это решения по поводу того, к какому набору категорий принадлежит данный ввод [5]. Исходя из этого, данный метод является наиболее подходящим для обучения рекуррентной нейронной сети, выбранной для практической реализации онтологического чатбота.

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

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

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

Обучение с учителем чаще всего применимо к регрессиям и классификациям. В этом случае тренер выступает в роли учителя, а созданная сеть – ученика. Тренер задаёт входные данные и требующийся результат, соответственно сеть понимает к какому именно результату необходимо стремиться при заданных параметрах (см.рис.2).

Схема метода обучения нейронной сети с учителем

Рисунок 2 — Схема метода обучения нейронной сети с учителем

Выводы

Были изучены основные существующие архитектуры реализации нейронных сетей. В ходе их анализа была выбрана наиболее подходящая архитектура для реализации онтологического чат-бота. Также были рассмотрены ключевые методы обучения нейронных сетей, среди которых был выбран наиболее эффективный метод обучения нейронной сети, определенной ранее архитектуры.

Список использованной литературы

  • Савельев, А. В. На пути к общей теории нейросетей. К вопросу о сложности // Нейрокомпьютеры: разработка, применение / А.В. Савельев. – 2006. – № 4–5. – С. 4–14.
  • Ясницкий, Л. Н. Введение в искусственный интеллект / Л. Н. Ясницкий. – М.: Издат. центр «Академия», 2005. – 176 с.
  • Вороновский, Г. К. Генетические алгоритмы, искусственные нейронные сети и проблемы виртуальной реальности / Г.К. Вороновский, К. В. Махотило, С. Н. Петрашев, С. А. Сергеев. – Харьков: Основа, 1997. – 112 с.
  • Николенко, С. Глубокое обучение / С. Николенко, А. Кадурин, Е. Архангельская. – СПб.: Питер, 2018. – 480 с.
  • Гудфеллоу, Я. Глубокое обучение / Я. Гудфеллоу, И. Бенджио, А. Курвилль. – М.: ДМК-Пресс, 2017. – 652 с.