Разработка нейронной сети

Обзор технологии Text Mining. Алгоритмы для многоклассовой классификации текстов для выделения тега. Моделирование нейронной сети с использованием среды программирования Python для анализа данных и построения предсказательных моделей и библиотек.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 07.09.2018
Размер файла 2,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

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

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

Data Mining - это процесс получения практически полезной информации из большого объема сырых данных и представление исходной информации в доступном виде для человека. Данная технология является мульти-дисциплинарной областью и возникла на стыке нескольких областей [1]:

Рисунок 1. Составляющие Data Mining

Рассмотрим некоторые из этих областей:

· Статистика

Это отрасль знаний, которая разрабатывает методы сбора, обработки и анализа данных для выявления закономерностей, скрытых в изучаемом объекте.

· Машинное обучение

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

· Искусственный интеллект

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

Сферы, в которых применяются методы Data Mining не ограничены, и в последние годы это подтверждается все большим распространением Data Mining в разные сферы деятельности. Большинство компаний уже осознали, что с помощью этих методов можно получить существенный прирост в качестве выполняемой аналитики, и как следствие получить преимущество перед конкурентами. Разберем некоторые наиболее популярные применения Data Mining в бизнесе [2]:

· Банковское дело

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

· Страхование

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

· Телекоммуникации

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

· Розничная торговля

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

Одним из направлений Data Mining является Text Mining, который специализируется на работе с текстовыми документами. В данной работе будет рассмотрено именно это направление.

Целью данной работы является разработка алгоритмов для многоклассовой классификации текстов для выделения тега. Для разработки нейронной сети будут использоваться среда разработки Python, так как данный язык программирования является наиболее популярным средством для анализа данных и построения предсказательных моделей, и библиотеки TensorFlow и Keras. Также для обработки и анализа данных будут использоваться библиотеки pandas, numpy и sklearn.

Для достижения заданной цели необходимо выполнить следующие задачи:

· Обзор технологии Text Mining

· Обзор нейронных сетей

· Построение модели:

o Получение данных для построения модели

o Предобработка данных

§ Формирование данных в виде, необходимом для построения моделей

o Моделирование построенной модели

· Реализация архитектуры нейронных сетей

· Построение методов многоклассовой классификации для сравнения с реализованными нейронными сетями

· Оценка качества моделей

· Сравнение построенных нейронных сетей с другими методами

Глава 1. Text Mining

1.1 Определение Text Mining

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

Text Mining - это выявление в ранее неизвестных текстовых документах связей и корреляций. Технология Text Mining с помощью математических методов анализирует полученную информацию и позволяет получать результат с элементами знания. Знания- это зафиксированная и проверенная практикой обработанная информация, которая может многократно использоваться для принятия решений [3]. Полученные знания можно применять в различных сферах деятельности человека, в том числе для математического прогнозирования и анализа рынков. Программы, которые решают задачи Text Mining должны оперировать естественным человеческим языком и при этом понимать семантику анализируемого текста.

Технология Text Mining используется во многих областях, вот некоторые примеры:

· Корпоративная бизнес-аналитика

· Исследования естественных языков и семантический анализ

· Поиск информации и предоставление доступа к ней

· Мониторинг СМИ

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

Типичные задачи Text Mining:

· Получение из текста структурированной информации

· Классификация текстовых объектов

· Кластеризация текстовых объектов

· Определение тематики текста

· Автоматическая фильтрация контента

Далее детально рассмотрим задачу классификации текстов, так как целью данной работы является выделение тега в тексте, а это задача многоклассовой классификации.

1.2 Классификация в Text Mining

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

Формально задача классификации выглядит следующим образом:

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

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

Классификация текстовых документов заключается в задаче информационного поиска, в результате происходит распределение документа к одному из возможных классов на основании его содержания:

Вручную

Автоматически

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

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

Решение задачи классификации может быть полезно в следующих целях:

· Деление сайта по темам

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

· Умная лента

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

· Реклама

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

· Распознавание эмоциональной окраски текстов

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

· Обнаружение спама

· Классификация документов

· Сортировка сообщений электронной почты

· Классификация веб-сайтов

· Сортировка документов

· Выделение тегов в тексте

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

Например, автоматическое выделение тега из текста может быть использовано различными агрегаторами, так как они обрабатывают материалы сразу с нескольких ресурсов, у которых наверняка будет отличаться список выделяемых категорий. На ресурсах, где контент создают пользователи (TJournal, Habrahabr, Medium), использование автоматического выделения тега также будет весьма кстати, так как пользователи могут ошибиться в проставлении тега, забыть его указать или совершить какие-либо другие ошибки. Наличие корректного тега материала для таких ресурсов является весьма важным, так как на них публикуется огромное количество статей самых разных тематик, и пользователи должны иметь возможность иметь удобный способ фильтрации потребляемого контента.

Глава 2. Нейронные сети

2.1 Определение нейронных сетей

Впервые термин «нейронная сеть» появился в середине XX века. В 1943 году Мак-Каллоком и Питтсом была разработана одна из первых компьютерных моделей нейронной сети, в основе которой находились математические алгоритмы и теория деятельности головного мозга человека [9, 22]. Исследователи предположили, что нейроны можно рассматривать как аппараты, которые оперируют двоичными числами. Модель назвали «пороговой логикой». В данной модели нейроны могут обучаться с помощью подстройки параметров, которые описывают синаптическую проводимость. Мак-Каллок и Питтс разработали модель сети из электронных нейронов и показали, что такая сеть может выполнять любые числовые и логические операции.

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

Нейрофизиолог Фрэнк Розенблатт продолжил работать над идеями Мак-Каллока и предложил простейший тип искусственной нейронной сети - персептрон. В его основе находится математическая модель восприятия информации мозгом. На рисунке 2 приведена схема персептрона.

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

Применение нейронных сетей достаточно обширно:

Рисунок 2. Персептрон

· Прогнозирование

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

· Управление

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

· Принятие решений

· Распознавание изображений

· Оптимизация

· Распознавание изображений

· Оптимизация

· Анализ данных

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

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

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

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

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

На рисунке 3 приведена схема, которая отображает простую структуру нейронной сети. Входной слой нейронов выделен зеленым цветом, далее находится скрытый слой нейронов, который выделен голубым цветом, а также выходной слой нейронов, которые имеют желтый цвет.

Рассмотрим математическую схему искусственного нейрона, которая приведена на рисунке 4.

Первыми элементами на схеме отображены входы нейрона (x1, х2, х3,…, xn)и их веса (w1, w2, w3,…, wn), которые отражают важность определенного входа нейрона.

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

Рисунок 3. Простая структура нейронной сети

Рисунок 4. Математическая схема искусственного нейрона

где w0-- коэффициент нейрона при входе.

Выходом нейрона является функция его состояния, которая является функцией активации:

Нелинейная функция F называется активационной и может иметь различный вид. Функция активации - это функция, которая вычисляет выходной сигнал искусственного нейрона. В качестве аргумента функция активации получает сигнал, который получает на выходе из сумматора.

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

· Единичный скачок или жесткая пороговая функция

Данный вид функции активации является самый простым.

Данная функция является бинарной, так как выходные значения данной функции могут быть 0 или 1. Для решения задач классификации, кластеризации и многих других задач машинного обучения этого вполне достаточно. Работа жесткой пороговой функции соответствует следующему алгоритму: если значение превышает заданный порог, возвращается одно значение, иначе - другое.

Рисунок 5. Жесткая пороговая функция

· Сигмоидальная функция

С помощью сигмоидальной функции можно добиться непрерывного выходного значения в диапазоне [0,1], поэтому данная функция часто применяется в задаче регрессии. Помимо этого, сигмоидальная функция легко дифференцируемая. Данная функция активации является наиболее употребляемой в построении нейронных сетей.

Рисунок 6. Сигмоидальная функция

· Гиперболический тангенс

Область значений данной функции активации - [-1, 1], поэтому гиперболический тангенс стоит использовать в тех задачах, в которых необходимо получить отрицательные выходные значения.

Рисунок 7. Функция гиперболического тангенса

· ReLU (rectified linear unit)

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

Рисунок 8. График выпрямленной линейной функции

· Softmax

Функция активации softmax описывается следующей формулой:

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

2.2 Свёрточные нейронных сетей

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

Рассмотрим некоторые типы нейронных сетей, которые активно применяются прямо сейчас.

Свёрточные нейронные сети довольно молодой тип нейронных сетей, который впервые привлек к себе всемирное внимание в 2012 году, когда обновил рекорд качества классификации на 10% на ежегодном конкурсе по машинному зрению ImageNet [10]. На сегодняшний день эти свёрточные сети уже завоевали мировое признание и используются в крупных корпорациях, таких как Google, Facebook и Amazon.

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

1. Определение границ

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

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

4. Семантическое выделение границ - от просто выделения границ отличается тем, что здесь выделяются границы каждого объекта на изображении

5. Выделение частей тела человека

6. Распознавание объектов

Пример свёрточной нейронной сети изображен на рисунке 9.

Рисунок 9. Свёрточная нейронная сеть.

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

Рассмотрим более подробно работу рекуррентных нейронных сетей.

2.3 Рекуррентные нейронные сети

RNN (Recurrent Neural Networks)

Рекуррентная нейронная сеть (RNN) - это тип искусственной нейронной сети, где связи между нейронами образуют направленный цикл. Это создает внутреннее состояние сети, которое позволяет ей демонстрировать динамическое временное поведение. RNN дает нам дополнительную возможность фиксировать зависимости расстояния на языке, что делает их очень полезными в работе с естественным языком [26].

Рисунок 10. Рекуррентная нейронная сеть

На рисунке 10 представлена RNN, которая на вход принимает набор данных и отправляет на выход ответ . Помимо этого, сеть содержит обратную связь, благодаря которой информация передается от одного фрагмента нейронной сети к другому, то есть рекуррентная нейронная сеть получает не только входную информацию, но и некоторую информацию, полученную о предыдущем состоянии слоя А [18]. Таким образом в RNN реализуется память, что и отличает рекуррентные нейронные сети от нейронных сетей прямого распространения, где информация передается от слоя к слою только вперед. С помощью данного свойства RNN может анализировать последовательность данных, в которых немаловажным является их порядок.

Архитектура рекуррентной нейронной сети с развернутым по времени представлением, представлена на рисунке 11.

Процесс обучения рекуррентной нейронной сети строится следующим образом:

Рисунок 11. Рекуррентная нейронная сеть

на t шаге обучения нейронной сети значение скрытого слоя можно рассчитать по формуле:

,

где Wi - это входные веса, WR - веса, вычисляемые при обучении нейронной сети, уa - сигмоидальная функция активации (рис 12).

Рисунок 12. Рекуррентная нейронная сеть

Значение ht для рекуррентной сети (рис 12) рассчитывается следующим образом:

,

где Wh - это выходные веса, уh - сигмоидальная функция активации.

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

LSTM (Long short-term memory)

Нейронные сети типа LSTM разработаны Сепп Хохрайтером специально для того, чтобы избежать долгосрочной зависимости и основаны на рекуррентных нейронных сетях [12]. В отличие от традиционных RNN, сеть LSTM хорошо подходит для классификации, обработки и прогнозирования временных рядов, когда между важными событиями существуют очень длительные задержки неизвестного размера [12].

Основная идея LSTM сетей заключается в том, что повторяющиеся модули нейронной сети имеют более сложную структуру, чем в рекуррентных сетях. Так в LTSM используется 4 модуль с четырьмя слоями, вместо однослойного в RNN. Пример схемы LSTM приведен на рисунке 13.

Рисунок 13. Схема LSTM

Основным компонентом, обеспечивающим сохранение информации об объекте, является так называемое состояние ячейки (cell state, горизонтальная линия в повторяющемся модуле). Информация, хранимая в состоянии ячейки, проходит через всю нейронную сеть лишь с небольшими взаимодействиями, а значит остается практически без изменений. На рисунке 14 выделен данный элемент.

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

Рисунок 14. Сell state

Взаимодействие происходит за счет использования трех фильтров:

· Фильтр забывания (Forget gate layer)

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

Расчет фильтра происходит по формуле:

,

где Wf - веса для забывания, xt - новый объект, ht-1 - выходная информация с предыдущего шага, у - сигмоидальная функция активации.

Рисунок 15. Forget gate layer

· Входной фильтр (Input gate layer)

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

Формула для расчета текущего состояния:

,

,

где Wi - веса для обновления, Wc - веса для записи в память, xt - новый объект, ht-1 - выходная информация с предыдущего нейрона, у - сигмоидальная функция активации, - функция активации - гиперболический тангенс.

Рисунок 16. Input gate layer

· Фильтр обновления

Необходим для определения информации, которая должна хранится в ячейке состояния.

Вычисляется с помощью следующей формулы:

,

где - состояние ячейки памяти с предыдущего нейрона.

Рисунок 17. Обновление состояния ячейки

· Выходной фильтр

На данном шаге формируется значение выходного нейрона:

,

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

Рисунок 18. Выходные данные

Полученные значения выхода нейрона ( и ячейки состояния () передается на вход нейронной сети с состоянием в момент времени равным t + 1.

GRU (Gated Recurrent Unit)

Управляемые рекуррентные нейроны -- это частный случай LSTM [13]. Данный тип нейронных сетей слегка упрощает общий подход, который используется в LSTM сетях. Происходит это за счет того, что используется меньшее количество фильтров для работы с ячейкой состояния, так как фильтр забывания и входа объединяют в один фильтр, который является фильтром обновления.

Схема GRU представлена на рисунке 19:

Рисунок 19. Схема GRU

Используемые фильтры:

· Фильтр обновления

Совмещает в себе функции входного фильтра и фильтра обновления из классической реализации LTSM сети.

,

,

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

· Фильтр сброса

Принцип работы аналогичен выходному фильтру классической LSTM.

,

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

· Выходной фильтр

Формирует выходной нейрон:

,

где - выходная информация с предыдущего нейрона.

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

Глава 3. Практическая часть

3.1 Данные

Для реализации поставленной задачи был взят набор вопросов с сайта stackoverflow. Этосамый большой форум вопросов и ответов для программистов. Количество вопросов в рассматриваемой выборке - 1000 000. Каждому вопросу соответствует тег, который характеризует тему вопроса.

Количество уникальных тегов в выборке - 26. Распределение тегов между вопросами можно увидеть на следующем рисунке 20:

Рисунок 20. Tag frequency

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

Из приведенного графика видно, что наибольшее количество вопросов из корпуса относятся к теме javascript. Немало вопросов относится к различным расширениям данного языка, например:

· jquery

· angularjs

· node.js

3.2 Предобработка данных

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

Удаление стоп-слов

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

Рисунок 21. Word frequency

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

Посмотрим на наиболее употребляемые слова после выполнения предобработки (рис 22):

Рисунок 22. Word frequency

Как видно из графика, слова стали куда более информативными. Более того, в список наиболее часто употребляемых слов попали даже названия некоторых из классов: android и java.

Данный этап предобработки реализован с помощью использования библиотеки nltk.

Кодирование слов

Для обучения моделей необходимо выполнить кодирование слов, то есть заменить каждое слово на его числовой идентификатор, так как методов Data Mining, способных работать со строковым форматом данных, достаточно мало.

Для выполнения этого и всех последующих этапов предобработки использовался класс Tokenizer() реализованный в библиотеке Keras. Для выполнения кодирования слов сначала необходимо обучить словарь всех используемых в наборе данных слов, который будет использоваться для всех дальнейших шагов. Создание словаря выполняется с помощью метода fit_on_texts(). Данный метод принимает на вход набор текстов, выделяет в нем уникальные слова и создает словарь, в котором слова отсортированы по убыванию частоты использования во всем наборе текстов. Формат данных словаря:

{ : 1, : 2, …, : n},

где , … - слова из набора текстов

n - место слова по частоте употребления

Например, слово class, которое как мы уже выяснили из графика на рисунке 22, является самым популярным, получит числовой идентификатор 1, слово name - 2 и так далее.

Разберем работу этого метода на небольшом примере (рис. 23):

Рисунок 23. Фрагмент кода по использованию метода fit_on_texts()

Первым шагом инициализируем объект класса Tokenizer(), со значением параметра num_words равный 3, роль этого параметра будет рассмотрена чуть позже. Затем сформируем массив данных texts с наборов анализируемых текстов, выполним метод fit_on_texts() и выведем результирующий словарь. Нетрудно заметить, что слово is получило значение 1, так как является наиболее употребляемым словом.

Для формирования последовательностей закодированных слов пользоваться средствами библиотеки Keras, а именно методом texts_to_sequences(), которому в качестве входного параметра передадим выбранную длину вектора равную 98. Данный метод, используя словарь, который мы получили на предыдущем шаге с помощью метода Tokenizer(), заменяет слова в объекте на их числовой идентификатор. Также в этом методе происходит удаление слов, которые употребляются ниже заданного порога. Этот порог задается параметром num_words при инициализации объекта класса Tokenizer(). Метод texts_to_sequences(), будет оставлять в последовательности только те слова, идентификатор которых меньше или равен значению num_words. Соответственно последовательности, полученные для каждого объекта будут иметь разную длину.

Снова разберем пример работы на рассматриваемом примере (рис. 24):

Рисунок 24. Фрагмент кода по использованию метода fit_on_texts()

Применив метод texts_to_sequences() к предложению, мы получили последовательность идентификаторов слов, которые попали в указанный порог в параметре num_words.

Представление корпусов текста в виде векторов признаков

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

Прежде чем сформировать вектора признаков для каждого объекта, важно правильно определить размерность такого вектора. Для этого проанализируем количество слов в рассматриваемых объектах.

Можно выбрать длину вектора по максимальному количеству слов, которая встречается в наборе данных. В рассматриваемом корпусе вопросов это значение равняется 2 789 слов. Однако такой путь является заведомо неудачным, так как:

1. После выполнения предобработки будет получена матрица размерностью 1000000 x 2789. Обработка такой матрицы потребует очень высоких вычислительных мощностей.

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

В связи с этим оценим 70% перцентиль длинны объектов. На данном наборе данных получим значение равное 98. Такая длинная вектора признаков должна быть оптимальной по следующим причинам:

1. Для 70% объектов не будет утеряно ни одного признака

2. Итоговая матрица будет иметь относительно невысокую размерность

3. Итоговая матрица будет иметь меньшую степень разреженности

Учитывая все эти факторы, примем размерность вектора признаков за 98.

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

Затем полученные последовательности закодированных слов передаются в слой Embedding для обучения внутри модели.

3.3 Методы

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

· линейная модель

· деревья решений

· рекуррентные нейронные сети

· полносвязная нейронная сеть

Для построения линейной модель был выбран пакет vowpal wabbit, так как он способен быстро обучаться на больших объемах данных с большим количеством признаком, что является немаловажным при работе с текстовыми данными.

В качестве деревьев решений был выбран алгоритм Random Forest, так как он показывает себя довольно эффективно в решениях различных типов задач машинного обучения.

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

Нейронные сети

При обзоре классификаций нейронных сетей упоминалось, что наиболее эффективными типами нейронных сетей для выполнения задач, связанных с анализом текста, является рекуррентная нейронная сеть и ее модификации [11]. Работа рекуррентных нейронных сетей описана в главе 2 разделе рекуррентные нейронные сети. Описание работы полносвязной нейронной сети приведено далее.

Полносвязные нейронные сети состоят из полносвязных слоев. Полносвязный слой является одним из самых простых слоев, которые используются в нейронных сетях. Каждый нейрон в таком слое является персептроном с какой-то заданной нелинейной функцией активации [25].

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

,

где xi - вход нейрона

wi - вес входа

bias - обучаемый порог

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

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

,

где ?w - вес входа

з - скорость обучения

д - сумма ошибок предыдущего слоя

output - выход нейрона предыдущего слоя

Пример схемы полносвязной нейронной сети изображен на рисунке 25.

Online Machine Learning

Существуют Online Machine Learning методы, которые строятся на основании линейных методов, а важным их достоинством является настройка параметров алгоритма. Веса в такой линейной модели перестраиваются при каждом добавлении нового объекта, именно поэтому она называется «online».

Кратко алгоритм обучения можно описать следующим образом:

Рисунок 25. Полносвязная нейронная сеть

1. В начале работы инициализируется некоторое начальное значение параметров линейного метода

2. После получения на вход нового объекта параметры модели обновляются

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

Vowpal Wabbit

Одним из способов применения методов Online Machine Learning является пакет Vowpal Wabbit. Его можно охарактеризовать следующими пунктами:

· Обучение только линейных моделей

· Обучение на большом количестве данных

У Vowpal Wabbit существует ряд преимуществ, благодаря которым данная библиотека широко используется на практике:

· Входной формат

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

· Скорость

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

· Масштабируемость

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

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

Random Forest

Метод Random Forest или «случайный лес» был представлен в 2001 г., а на сегодняшний день является одним из самых эффективных методов, который применяется в машинном обучении. С его помощью можно решать задачи классификации, регрессии, кластеризации и множество других задач, так как в данной работе решается задача классификации работа данного метода будет рассматриваться именно на примере этой задачи. Одной из немногих областей, в которой Random Forest является не эффективен - это изображения, с остальными типами данных он вполне справляется.

Основным элементом Random Forest является так называемое дерево решений (Decision tree), поэтому с этим элементом стоит разобраться. Дерево решений является одним из самых простых методов классификации, так как фактически работает по некоторым логическим правилам, которые используются людьми в повседневной жизни. В основе дерева решений как правило стоит бинарное дерево, в каждой вершине которого объект проверяется на соответствие некоторого критерия, в зависимости от результата проверки осуществляется переход к следующей вершине более низкого уровня.

Алгоритм построения решающего дерева пытается выбирать вопросы в вершинах таким образом, чтобы добиться максимально возможного разделения данных, говоря более математически, алгоритм пытается добиться минимально возможной энтропии в образующихся группах объектов после прохождения каждой из вершин дерева (могут использоваться и другие метрики информативности) [19].

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

На рисунке 26 представлен пример бинарного решающего дерева для конкурса Titanic: Machine Learning from Disaster, в котором необходимо было классифицировать пассажиров Титаника на погибших и выживших.

Ключевыми вопросами в построенном дереве являются:

· проверка пола

· возраст

· количество родственников на борту корабля (sibsp)

Рисунок 26. Пример бинарного решающего

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

3.4 Архитектура и обучение нейронных сетей

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

· Эпоха

Прямой и обратный проход по всем векторам обучающей выборке

· Batch

Размер подвыборки, которая используется для прямого и обратного прохода за одну итерацию

Построение нейронной сети с помощью библиотеки Keras основывается на использовании объекта model. Данный объект используется для описания слоев и архитектуры сети. Модель на вход принимает последовательность слов, так как мы используем текстовый корпус. В связи с этим тип модели задается как Sequential(). После объявления типа в model последовательно добавляются слои. После добавления всех слоев, в model передаётся выбранная функция активации. Далее можно скомпилировать модель, после чего будут доступны методы обучения и предсказания: fit(), predict().

Нейронная сеть GRU была реализована с использованием 4-х слоев:

· Embedding

Слой Embedding используется для определения семантической близости между словами, для этого алгоритм представляет каждое слово в виде вектора, который отражает значение слова. В данный слой передаются уже предобработанные объекты с помощью описанных функций в главе 3 раздела предобработка данных. Входной вектор имеет размерность 98, а каждое слово будет представлено в виде вектора размера 128.

· Два слоя GRU

Описание работы GRU приведены в главе 2 в разделе рекуррентные нейронные сети. Размерность выходного вектора каждом из слоев в построенной нейронной сети выставлен как 256. Помимо этого, в слоях выставлен параметр dropout [6], который необходим, чтобы не допустить переобучения.

· Слой Dense

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

· Активационная функция

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

При компилировании всех построенных моделей использовалась функция штрафа - categorical_crossentropy, так как она применяется в задачах классификации, тип градиентного спуска был выбран adam, метрика - accuracy.

Размер подвыборки, передаваемый в модель, был выбран 500, а количество эпох - 4.

Реализованная нейронная сеть LSTM построена по аналогии с GRU, но с использованием 3-х слоев:

· Embedding

· Слой LSTM

Описание работы LSTM приведены в главе 2 в разделе рекуррентные нейронные сети. Размерность выходного слоя - 32.

· Слой Dense

Выходной вектор равен количеству рассматриваемых классов.

· Активационная функция

Как и в предыдущей реализованной модели функция активации, используемая при построении, была выбрана сигмоидальная.

Размер подвыборки был выбран также 500, а количество эпох - 3.

Полносвязная нейронная сеть

· Embedding

· GlobalAveragePooling1D

Данный слой используется для понижения размерности данных, полученных с предыдущего слоя.

· 4 слоя Dense

Размерность выходного вектора равна 128, 64, 32 и количеству рассматриваемых классов, соответственно. На первых 3-х слоях в качестве функции активации использовалась ReLU, а на последнем - softmax, так как с ее помощью можно получить выходной вектор с вероятностями принадлежности объекта к каждому классу, сумма которых равняется единице.

Размер подвыборки - 500, количество эпох - 3.

3.5 Метрики

Для оценки качества алгоритмов необходимо выбрать численную метрику для объективно сравнения. Рассмотрим некоторые метрики, которые широко применяются в машинном обучении, в том числе в Text Mining.

Accuracy

Точность - это доля правильных ответов алгоритма. Для вычисления данной метрики используется матрица ошибок или confusion matrix. Матрица может быть построена для любого количества классов, размерность матрицы m*m, где m - количество классов. Пример матрицы для бинарной классификации:

Таблица 1. Сonfusion matrix

Экспертная оценка

Оценка системы

Положительная

Отрицательная

Положительная

True Positive (TP)

False Positive (FP)

Отрицательная

False Negative (FN)

True Negative (TN)

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

Accuracy рассчитывается по формуле:

Соответственно, чем ближе значение к единице, тем лучше модель.

F-мера

Помимо Accuracy, существуют метрики точности (precision) и полноты (recall). Исходя из матрицы ошибок, точность рассчитывается как отношение всех правильно классифицируемых объектов и суммы всех положительных ответов системы.

Данная метрика показывает какая часть предсказаний модели для данного класса была верна, то есть какая доля объектов, которые выделил классификатор как положительные, действительно таковыми и являются.

Полнота же показывает какая часть положительных объектов была выделена классификатором.

Если рассматривать данные метрики относительно множества, то исходя из приведенных данных на рисунке 27 точность и полнота будут рассчитываться следующим образом:

Рисунок 27. Расчет метрик

· x - множество правильно классифицируемых объектов

· y - все положительные ответы системы

· z - все положительные объекты множества

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

F-мера является средним гармоническим между точностью и полнотой. Данная метрика стремится к нулю, если хотя бы одна из метрик (precision или recall) стремятся к нулю. Это свойство F-меры является одним из самых важных, а сама метрика - более предпочтительной, так как благодаря данному свойству можно оценивать обе метрики в равной степени.

3.6 Результаты

После обучения моделей для выделения тегов в вопросах с сайта stackoverflow посчитаем метрики качества для всех построенных алгоритмов.

Random Forest

Результаты ключевых рассматриваемых метрик приведены в таблице 2.

Таблица 2. Random Forest метрики

Random Forest

Accuracy

0.15

F1-score

0.12

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

Vowpal Wabbit

Значения полученных метрик качества классификации c помощью Vowpal Wabbit приведены в таблице 3.

Таблица 3. Vowpal Wabbit метрики

Vowpal Wabbit

Accuracy

0.63

F1-score

0.66

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

На рисунке 28 приведена схема работы Vowpal Wabbit на тестовой выборке. Стоит обратить внимание на столбики current label - правильный ответ и current predict - метка класса, предсказанная моделью. По ним можно заметить примеры ошибок, которые допускаются во время классификации.

Рисунок 28. Схема работы Vowpal Wabbit

Нейронная сеть GRU

В качестве первой версии построенной нейронной сети использовалась GRU. На рисунке 29 можно посмотреть этапы обучения нейронной сети:

Рисунок 29. Обучение GRU

Здесь loss - функция ошибки, acc - точность на обучающей выборке, val_loss и val_acc - на тестовой выборке.

Результаты классификации данной нейронной сети приведены в таблице ниже.

Таблица 4. GRU метрики

GRU model

Accuracy

0.69

F1-score

0.68

Легко заметить, что качество модели GRU в несколько раз выше качества построенной модели Random Forest и на несколько сотых лучше, чем Vowpal Wabbit.

Проведем небольшой анализ допущенных ошибок в модели, проанализировав в каких классах нейронная сеть наиболее часто ошибается. Для этого построим график частоты ошибок по классам. График представлен на рисунке 30.

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

Рисунок 30. Tag error frequency GRU

Проанализируем, метки каких классов модель выбирает вместо данного класса. График классов, выбранных вместо javascript приведен на рисунке 31.

Рисунок 31. Tag error frequency for javascript GRU

Наиболее часто модель выбирает классы jquery, angularjs, которые являются дополнительными модулями для языка javascript, поэтому данные ошибки нельзя назвать серьезным промахом в классификации, так как вопросы с данными темами так или иначе относятся к теме javascript.

Если не учитывать данные ошибки, значения рассматриваемых метрик возрастают на 0.02:

Таблица 5. GRU метрики без ошибок javascript

GRU model

Accuracy

0.71

F1-score

0.70

Попробуем улучшить качество, для этого построим модель нейронной сети LSTM.

Нейронная сеть LSTM

Этапы обучения данной модели представлены на рисунке ниже:

Рисунок 32. Обучение LSTM

Качество классификации на тестовых данных возросло на 0.04 по сравнению с GRU. В таблице 6 приведены полученные значения метрик.

Таблица 6. LSTM метрики

LSTM model

Accuracy

0.73

F1-score

0.72

Снова построим график ошибок и вновь увидим проблемы с классификацией javascript. Рис. 33

Как и в прошлой модели ошибки чаще всего совершаются на смежных классах рис. 34.

Полносвязная нейронная сеть

Этапы обучения полносвязной нейронной сети отображены на рисунке ниже рис. 35.

Рисунок 33. Tag error frequency LSTM

Рисунок 34. Tag error frequency for javascript LSTM

Рисунок 35. Обучение полносвязной нейронной сети

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

В таблице 8 представлены полученные значения метрик качества для всех моделей и время их обучения.

Таблица 7. Метрики полносвязной нейронной сети

...

Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.