УДК 004.89
Астапов Р.Л.
бакалавр
Национальный исследовательский ядерный университет «МИФИ»
(Россия, г. Москва)
Дубатов Р.С.
бакалавр
Национальный исследовательский ядерный университет «МИФИ»
(Россия, г. Москва)
КЛАССИФИКАЦИЯ ТЕКСТОВ С ПОМОЩЬЮ СВЕРТОЧНЫХ НЕЙРОННЫХ СЕТЕЙ
Аннотация: в данной статье рассматриваются основные методы использования сверточных нейронных сетей для задачи классификации тестов
Ключевые слова: классификация, сверточные нейронные сети, глубокое обучение.
В совершенном мире большой темпе роста объема информации в интернете и поэтому необходимо в ней ориентироваться. Классификация текста необходима для решения многих задач. К примеру, многим компаниям, производящим какой-либо продукт, нужно знать мнение людей об этом продукте. Это поможет определить его достоинства и недостатки, также улучшить качество продукта. Также можно узнать, как обстоят дела у конкурентов. Выявляя положительные отзывы, компания может их использовать для дальнейшего продвижения товара. Эту задачу и решает анализ тональности текста. Также анализ текста применим в политике, с его помощью можно выявлять отношение людей к кандидатам во время
предвыборной кампании, мнения людей о принятых законах или реформах и т.д.
Сверточные нейронные сети хорошо зарекомендовали себя в задачах распознавания объектов и машинного зрения. Это привело к дальнейшим исследованиям способа их применения, одна из которых является задача классификации текста.
Для понимания работы архитектуры спроектированной нейронной сети рассмотрим каждой слой отдельно:
• Сверточный слой — это слой, который представляет из себя карт признаков, у каждой карты есть своё ядро.
Количество карт признаков определяется требованиями к задаче, если взять большое количество карт, то повысится точность модели, но увеличится вычислительная сложность.
Ядро представляет из себя фильтр или окно, которое «скользит» по всей области предыдущей карты и находит определенные признаки. В библиотеке Keras [1] данный слой имеет название «Conv1D».
• Cубдискретизирующий слой — это слой, который выполняет уменьшение размерности входной карты признаков. Слой свертки уже выделил некоторые признаки, то для последующей обработки настолько подробная карта признаков уже не нужна, и она уплотняется до менее подробного. К тому же фильтрация уже ненужных деталей помогает избежать переобучения.
В библиотеке Keras [1] данный слой имеет название «GlobalMaxPooling 1D».
• Полносвязный слой — это слой, в котором каждый нейрон соединен со всеми нейронами на предыдущего слоя, и каждая связь имеет свой весовой коэффициент.
В библиотеке Keras [1] данный слой имеет название «Dense».
• Dropout слой — способ борьбы с переобучением в нейронных сетях. Данный слой исключает определённый процент (например, 20%) случайных нейронов (находящихся как в скрытых, так и видимых слоях) на разных итерациях во время обучения нейронной сети. Такой приём значительно увеличивает скорость обучения, качество обучения на тренировочных данных, а также повышает качество предсказаний модели на новых тестовых данных.
В разрабатываемой архитектуре, в основе которой лежит сверточная нейронная сеть, будут использоваться ядра разного размера, которые предназначены для параллельной обработки n-граммы текста соответственно.
После обработки слоями свертки, карты признаков поступают на слои субдискретизации, которые извлекают наиболее значимые n-граммы из текста. После, происходит объединение в общий вектор признаков. Затем полученный вектор подается в скрытый полносвязный слой. На последнем шаге полученная карта признаков подается на выходной слой нейронной сети с сигмоидальной функцией активации.
Число последовательно идущих сверточных слоев, размер ядер сверточного слоя и субдискретизации определяется экспериментально.
Ядра размером 1, 2, 3, 4 и 5 предназначены для обработки одного слова, биграмм, триграмм, 4-грамм и 5-грамм соответственно.
На рисунке 1 представлена одна из возможных архитектур сверточной нейронной сети для классификации текста [2].
Рис. 1. Архитектура сверточной нейронной сети для классификации текста.
СПИСОК ЛИТЕРАТУРЫ:
Официальный сайт библиотеки Keras - URL: https://keras.io (дата обращения: 20.07.2020 г.).
Zhang Y., Wallace B. A Sensitivity Analysis of (and Practitioners' Guide to) Convolutional Neural Networks for Sentence Classification //arXiv preprint arXiv:1510.03820. — 2015.