СРАВНИТЕЛЬНЫЙ АНАЛИЗ МОДЕЛЕЙ НЕЙРОННЫХ СЕТЕЙ В ЗАДАЧЕ РАСПОЗНАВАНИЯ МАТЕМАТИЧЕСКИХ ДЕЙСТВИЙ

Жеребцова Ксения Владимировна
Уфимский университет науки и технологий, Нефтекамский филиал
студент 5 курса, Факультет экономико-математический

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

Ключевые слова: , , , ,


Рубрика: 05.00.00 ТЕХНИЧЕСКИЕ НАУКИ

Библиографическая ссылка на статью:
Жеребцова К.В. Сравнительный анализ моделей нейронных сетей в задаче распознавания математических действий // Современные научные исследования и инновации. 2024. № 6 [Электронный ресурс]. URL: https://web.snauka.ru/issues/2024/06/102172 (дата обращения: 23.04.2025).

Научный руководитель: Вильданов Алмаз Нафкатович
Уфимский университет науки и технологий, Нефтекамский филиал, к.ф.-м.н.

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

В TensorFlow константы создаются с использованием функции: constant(value, dtype=None, shape=None, name=’Const’, verify_shape=False), где value постоянное значение, которое будет использоваться при дальнейших вычислениях, dtype является параметром, указывающим тип данных (например, float32/64, int8/16), shape является необязательным параметром, указывающим размер массива данных, name является необязательным задающим имя для тензора. Если вам нужны константы с определенными значениями внутри вашей обучающей модели, тогда объект типа constant может использоваться как в следующем примере: z = tf.constant(5.2, name=”x”, dtype=tf.float32).

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

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

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

Google Colab – блокнот для программирования на языке Python. В нем есть возможность для работы с серьезными технологиями при разработке реальных приложений data science и ML, предоставляет все необходимое для решения задач по анализу и обработке данных (с применимостью к Python).

Python – высокоуровневый язык программирования, который опирается на повышение производительности разработчика и читаемости кода. Это интерпретируемый язык программирования, то есть не требует компиляции в байт-код.

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

– достаточность — число обучающих примеров должно быть достаточным для обучения;

– разнообразие;

– равномерность представления классов.

Датасеты – это то, на чем основывается наука о данных, материал, на котором основаны все исследования. В основном рассматривают два типа данных: традиционные и большие (Big Data).

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

Большие данные (массивнее, чем традиционные, основываются как на разнообразии (числа, текст, изображения, аудио, видео и т. д.), так и скорости извлечения и вычисления в реальном времени, и объема.)

Датасеты разделяются на три категории:

1. Простая запись – это самая простая форма, не имеющая явной связи между строками-наблюдениями или столбцами-признаками (каждая строка имеет одинаковый набор характеристик).

2. Графы (отношения между объектами фиксируются связями).

3. Упорядоченные записи (некоторые данные упорядочены во времени или пространстве).

Разработка моделей нейронной сети выполняется в облачном сервисе Google Colab. На первом этапе создается папка, в которой будет находится датасет и скрипт с нейронной сетью.

Работа над нейронной сетью начинается с добавления библиотек Tensorflow. Загружаем нужные библиотеки:

from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense, Flatten

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

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

from google.colab import drive

drive.mount(‘/content/drive/’)

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

Drive mounted at /content/drive/; to attempt to forcibly remount, call drive.mount(“/content/drive/”, force_remount=True).

Переменная PATH показывает путь сети к ранее созданному датасету.

PATH = ‘/content/drive/My Drive/II/nf/’

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

target_name = ["","","<",">","±","•","–","="]

DIR = “dataset_ _mathdeystvo ”

PATH = ‘/content/drive/My Drive/’+ DIR + ‘/’

PATH – корневой каталог для всех имеющихся на диске датасетов.

Переменные train_dir, test_dir, pred_dir – это пути, которые указывают на каталоги с данными для: обучения, тестирования, предсказания.

Следующим шагом указываем размер изображения. Тензоры можно рассматривать как матрицы, с формами. В Keras сам входной слой – это не слой, а тензор. Это стартовый тензор, который отправляется на первый скрытый слой. Этот тензор должен иметь ту же форму, что и тренировочные данные. Размер изображений в датасете составляет 20*20. Более удобно вводить переменную input_shape, которая в себе содержит сразу размерность изображений и количество фильтров.

В данной сети фильтр 1, так как используемые изображения в черно-белом цвете. Указываем размер мини-выборки с помощью переменной batch_size, которая отображает количество изображений, которые изучает модель за один проход. Нейронная сеть работает с данными постепенно, обработка происходит последовательно (частями).

# Размеры изображения

img_width, img_height = 20, 20

input_shape = (img_width, img_height, 1)

# Размер мини-выборки

batch_size = 128

# количество классификации

N = len(classes)

Загружаем данные для обучения с помощью метода pd.read_csv:

train = pd.read_csv(PATH + ‘train.csv’, sep=”,”) #, nrows=3975

Загружаем данные для тестирования:

val = pd.read_csv(PATH + ‘validate.csv’)

Исследуем данные. Просматриваем данные для обучения:

train[:5]

Выбираем 8 видов изображений (знак умножения, знак сложения, знак больше, знак меньше, знак плюс-минус, точка, знак минус, знак равно). Посмотрим на тренировочные данные:

plt.figure(figsize=(10,10))

start = 0

for i in range(start,start+50):

plt.subplot(5,10,i-start+1)

plt.xticks([])

plt.yticks([])

plt.grid(False)

plt.imshow(x_train[i].reshape((img_width, img_height)), cmap=plt.cm.binary)

plt.xlabel(classes[y_train[i]])

Был собран датасет в количестве нескольки тысяч изображений в черно-белом цвете (рисунок 6), так как для отработки нейронной сети необходимо большое количество изображений (при малых объемах датасета сеть свою работу не выполняет).


Рисунок 1. Датасет

Работа нейронной сети рассматривается в трех моделях.

1.    Двухслойная нейронная сеть.

Рассматривается сеть из двух нейронных слоев. Для создания модели используется класс Sequential. На входном слое находятся 1000 нейронов. Функция активации (запуска) relu, размер входных данных = 1024. На последнем слое должно быть 4 нейрона, так как это количество должно совпадать с количеством классификаций изображений (треугольник, квадрат, окружность, ромб).

Активация последнего слоя выполняется с помощью функции softmax.


Рисунок 2. Характеристики двухслойной модели


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

С помощью функции summary просматриваются все характеристики полученной трехслойной модели (рисунок 5).


Рисунок 4. Характеристики трехслойной модели

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


Рисунок 5. Характеристики сверточной нейронной сети

Для распознавания дальнейших изображений используется метод predict, который позволяет распознавать, а далее выводить распознанные и истинные объекты. Подготовим в Paint собственные изображения и загрузим их на гугл-диск (рисунок 6)


Рисунок 6. Собственные изображения для проверки работы нейронной сети

По итогам распознавания собственных изображений можно сделать следующий вывод (таблица 1):

Таблица 1. Качество распознавания собственных изображений

Структура НС

Качество распознавания

Полносвязная нейронная сеть из двух слоев

99.85 %

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

99.72 %

Сверточная нейронная сеть с двумя сверточными слоями

99.94 %

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

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

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


Библиографический список
  1. Бонцанини, М. Анализ социальных медиа на Python. Извлекайте и анализируйте данные из всех уголков социальной паутины на Python / М. Бонцанини ; перевод с английского А. В. Логунова. — Москва : ДМК Пресс, 2018. — 288 с. — ISBN 978-5-97060-574-5. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/108129 (дата обращения: 06.10.2020). — Режим доступа: для авториз. пользователей.
  2. Буйначев, С.К. Основы программирования на языке Python : учебное пособие / С.К. Буйначев, Н.Ю. Боклаг ; Уральский федеральный университет имени первого Президента России Б. Н. Ельцина. – Екатеринбург : Издательство Уральского университета, 2014. – 92 с. : табл., ил. – Режим доступа: по подписке. – URL: http://biblioclub.ru/index.php?page= book&id=275962 (дата обращения: 06.10.2020). – Библиогр. в кн. – ISBN 978-5-7996-1198-9. – Текст : электронный..
  3. Гласснер, Э. Глубокое обучение без математики. Том 2. Практика : руководство / Э. Гласснер ; перевод с английского В. А. Яроцкого. — Москва : ДМК Пресс, 2020. — 610 с. — ISBN 978-5-97060-767-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/131710 (дата обращения: 06.10.2020). — Режим доступа: для авториз. пользователей.
  4. Душкин, Р. В. Искусственный интеллект / Р. В. Душкин. — Москва : ДМК Пресс, 2019. — 280 с. — ISBN 978-5-97060-787-9. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/ book/131703 (дата обращения: 06.10.2020). — Режим доступа: для авториз. пользователей.


Все статьи автора «Жеребцова Ксения Владимировна»


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

Связь с автором (комментарии/рецензии к статье)

Оставить комментарий

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

Если Вы еще не зарегистрированы на сайте, то Вам необходимо зарегистрироваться: