УДК 004.8 

 Применение сверточных сетей в задаче классификации текста

Абрамов Дмитрий Александрович – студент кафедры Автоматизированных систем обработки информации и управления Института электроники и светотехники Федеральное Национального исследовательского Мордовского государственного университета им. Н. П. Огарёва»; разработчик искусственного интеллекта компании ООО «Инлайн» г. Санкт-Петербург.

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

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

Введение

Сверточные сети на данный момент показывают высокие результаты в задачах компьютерного зрения, классификации, сегментации и других. Их неоспоримая эффективность вызывает интерес исследователей в применении данных слоёв не только в задачах компьютерного зрения, но и других, например, анализе текстовых последовательностей, в которых отдаётся предпочтение таким архитектурам рекуррентных нейронных сетей, включающие в себя: LSTM (долгая краткосрочная память) [1], GRU (управляемый рекуррентный блок) [2]. Решения на основе рекуррентных сетей демонстрируют высокие результаты для классификации текста, существенных улучшений можно добиться с выбором архитектур, включающих в себя несколько рекуррентных блоков. Количество текстовых данных увеличивается с каждым днём, поэтому задача классификации текста – определения к какой категории относится образец, является актуальной.

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

Сбор данных

При анализе имеющихся данных в распоряжении компании [3] было выявлено 28 156 уникальных имен пользователей, 21 430 из которых являются некорректными, они включают: случайные последовательности символов, слова с заменёнными русскими буквами на английские, указанием нецензурные и случайно взятых слов.

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

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

Теоретический обзор сверточных одномерных сетей

Архитектуры, построенные на сверточных слоях, являются сетями прямого распространения (рис. 1) – информация проходит от начала до конца сети, они разрабатывались как средство для задач компьютерного зрения. Особенность сверточных сетей является чередование блоков сверки и субдискретизации. Сложность и объем используемой архитектуры нейронной сети зависит от решаемой задачи.

1

Рисунок 1. Модель сверточной нейронной сети.

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

Сверточный слой состоит из ядра – весовой матрицы, инициализированной весовыми коэффициентами, например, с использованием инициализации Кайминга [7], которая позволяет учесть особенность используемых активаций ReLU. Матрица весов используется для вычисления свертки - поэлементного произведения входных данных на весовую матрицу. Размер используемого ядра являются настраиваемым гиперпараметром. Между слоями используется выпрямленная линейная функция активации ReLU [8], позволяющая сократить количество необходимых вычислений, возвращая значения большие нуля и нуль для отрицательных значений.

Вычисление выхода свертки, к которому будет применена функция активации

2

Вычисления свертки (рис. 2) влияют на размерность исходных данных, снижая её в зависимости от следующих параметров: шага, размера ядра, используемого прореживания(расстоянием между весами в ядре свертки).

Формула размера выходной последовательности

3

Где Lin – длина исходной последовательности, padding – дополнение нулями, которое предотвратить снижение размерности данных при вычислениях в сверточном слое, stride – шаг свертки, dilation – прореживание позволяет включать расстояние между элементами в ядре свертки.

Для вычисления количества нулей, которое необходимо добавить:

4

где kernel size – размер ядра

5

Рисунок 2. Процесс вычислений в ядре свертки.

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

6

Рисунок 3. Вычисление подвыборки.

Предподготовка данных и обучение

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

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

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

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

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

Результаты

Таблица 1. Результаты разработанных алгоритмов.

Модель

Архитектура

Правильность на обучающей выборке

Правильность на проверочной выборке

Сверточная сеть

Embedding(300)

conv1d(300, 16)

maxpool(4)

conv1d(300, 8)

conv1d(300, 8)

maxpool(2)

conv1d(200, 4)

maxpool(2)

FC(256, relu)

0,9954

0,9930

Рекуррентная сеть на основе ячеек LSTM

Embedding(300)

Lstm(256)

Lstm(128)

FC(256, relu)

0,9864

0,9806

Сверточная сеть с применением ячеек LSTM

Embedding(300)

LSTM(256)

conv1d(300, 8)

maxpool(2)

conv1d(200, 4)

maxpool(2)

FC(256, relu)

0,9958

0,9946

Многослойный персептрон

Embedding(300)

FC(512, relu)

FC(256, relu)

FC(64, sigmoid)

0,9681

0,95

Алгоритм CatBoost

30000 итераций

Скорость обучения 0.1

с усечением длины дерева до 7

0,991

0.988

Embedding – слой вложения слов, conv1d – одномерная свертка, maxpool – подвыборка по максимальному значению, FC – полносвязный слой

7

где TP – положительные правильно классифицированные образцы, TN – отрицательные правильные классифицированные образцы, N – количество образцов 

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

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

Алгоритм CatBoost обучался в течение 30000 итераций, показав уровень, превосходящий модель на основе рекуррентных слоёв. Гиперпараметр максимальной длины решающего дерева был равен 7 на основе выполнения решетчатого поиска, алгоритм показал снижение определения класса на 5% без регуляризации этого параметра. Применение мешка слов ухудшило правильность прогнозирования до 95%.

Случайный лес [11], который отсутствует в таблице результатов, не справился с поставленной задачей, было выявлено переобучение под обучающий набор без усечения деревьев и недообучение при настройке длины деревьев.

Заключение

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

Список литературы

  1. Pengfei Liu, Xipeng Qiu, Xuanjing Huang. Recurrent Neural Network for Text Classification with Multi-Task Learning, 2016.
  2. Rahul Dey and Fathi M. Salem. Gate-Variants of Gated Recurrent Unit (GRU) Neural Networks, 2017.
  3. Foodtech Платформа M16[сайт]. – 2023 – URL: https://m16.tech/
  4. Набор русских слов [сайт]. – 2023 – URL: https://github.com/LussRus/Rus_words
  5. База данных имён и фамилий[сайт]. – 2023 – https://mydata.biz/ru/catalog/databases/names_db
  6. Jiuxiang Gua, Zhenhua Wangb, Jason Kuenb, Lianyang Mab, Amir Shahroudyb, Bing Shuaib, Ting Liub, Xingxing Wangb, Li Wangb, Gang Wangb, Jianfei Caic, Tsuhan Chenc. Recent Advances in Convolutional Neural Networks, 2017.
  7. Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification, 2015.
  8. Abien Fred M. Agarap, Deep Learning using Rectified Linear Units (ReLU), 2019.
  9. Diederik P. Kingma, Jimmy Lei Ba. Adam: a method for stochastic optimization, 2017
  10. Sebastian Ruder. An overview of gradient descent optimization algorithms, 2017.
  11. Gilles Louppe. Understanding randomforests from theory to practice, PhD dissertation, 2015.
  12. Документация Tensorflow[сайт]. – 2023 – URL: https://www.tensorflow.org.
Интересная статья? Поделись ей с другими: