В настоящее время свёрточные нейронные сети (СНС) являются одним из наиболее эффективных инструментов в области компьютерного зрения и обработки изображений. Однако, процесс проектирования и настройки архитектуры СНС остаётся сложной задачей, требующей глубокого понимания взаимосвязей между различными параметрами сети. Существующие библиотеки машинного обучения предоставляют широкий спектр инструментов для создания СНС, но отсутствие единого параметрического описания затрудняет процесс их систематического изучения и моделирования.
Актуальность данного исследования обусловлена необходимостью создания структурированного подхода к описанию и моделированию СНС, который позволит упростить процесс изучения, проектирования и обучения нейронных сетей. Целью работы является системный анализ СНС как объекта имитационного моделирования на основе изучения принципов работы нейросетей и выявления ключевых компонентов и гиперпараметров, определяющих процесс создания, обучения и применения нейронных сетей.
Для достижения поставленной цели необходимо провести анализ архитектур СНС, выявить основные структурные элементы, разработать параметрическую модель сети, оценить возможности инструментальных средств реализации СНС с помощью библиотек машинного обучения, проанализировать существующие программные реализации СНС и выполнить объектно-ориентированный анализ системы моделирования СНС на основе полученных данных.
Результаты данного исследования могут быть использованы для создания системы моделирования СНС, что позволит упростить процесс обучения и разработки моделей нейронных сетей для решения различных задач.
Свёрточная нейронная сеть (англ. convolutional neural network, CNN) представляет собой специализированный тип алгоритма глубокого обучения, который используется в основном для задач распознавания образов, включая классификацию образов, обнаружение объектов и их сегментацию. СНС аналогичны традиционным искусственным нейронным сетям тем, что они состоят из нейронов, которые самонастраиваются через процесс обучения. Каждый нейрон получает входной сигнал и осуществляет определённую операцию (например, скалярное произведение, за которым следует нелинейная функция активации). Обобщённая архитектура свёрточной нейронной сети приведена на рисунке 1. Сигнал проходит через набор слоёв свёртки, в которых извлекаются признаки в так называемые карты признаков. После свёртки обычно используются слои пулинга, которые уменьшают размерность карт признаков с целью оптимизировать модель СНС. Расчёт состоит в том, что с каждым следующим слоем нейросеть извлекает всё более сложные признаки. Пример карт признаков приведен на рисунке 2.
Как можно видеть на рисунке 2, модель сначала обнаруживает элементарные характеристики в изображении и по мере продвижения алгоритма дальше приходит к более сложным признакам.
СНС состоят из трёх типов слоев: слоёв свёртки, слоёв пулинга и полносвязных слоёв.
Входящий слой хранит пиксельные данные о входном изображении.
На этапе свёрточного слоя (или слоя свёртки) алгоритм осуществляет так называемую операцию свёртки, которая представляет собой применение функции скользящего окна к матрице пикселей предыдущего слоя. Скользящая функция, которая применяется к матрице, называется ядром или фильтром (оба термина могут использоваться взаимозаменяемо).
Особая область входного изображения, которая влияет на выходное значение нейрона, называется рецептивным полем. Другими словами, это часть входного изображения, которую «видит» нейрон. Свёрточные слои способны значительно снизить сложность модели путем оптимизации выходных значений. Этими оптимизациями являются три гиперпараметра: глубина, паддинг и страйд.
Глубина настраивается вручную путем изменения количества фильтров, которые используются в сверточном слое. Каждый фильтр в свёрточном слое генерирует отдельную двумерную карту признаков. Накладывая эти двумерные карты признаков вдоль новой оси, мы получаем трехмерную выходную карту признаков с глубиной, равной количеству фильтров.
Паддинг (англ. padding) — это процесс добавления дополнительных пикселей по границе входного изображения перед применением операции свёртки. Паддинг помогает сохранить пространственные измерения, так что размер изображения не уменьшается слишком быстро при прохождении через несколько слоев.
Страйд (англ. stride) это размер шага, с которым свёрточный фильтр двигается по входному изображению. При страйде равном 1 фильтр перемещается по одному пикселю за раз, генерируя карты признаков с большей детализацией и перекрывающимися рецептивными полями. Страйд равный больше 1 заставляет фильтр «пропускать» пиксели при перемещении, что приводит к меньшему количеству перекрывающихся рецептивных полей и созданию меньшей карты признаков.
Целью слоя пулинга является извлечение наиболее значимых признаков из свёрнутой матрицы. Это делается путём применения некоторых операций агрегации, которые уменьшают размерность признаков (свёрнутой матрицы), тем самым уменьшая объем памяти, используемой при обучении сети, но сохраняя главные признаки в изображении. Пулинг также актуален для смягчения переобучения.
Полносвязные слои находятся в конце СНС, и их входные значения соответствуют сглаженной одномерной матрице, сгенерированной последним слоем пулинга. Функции активации (например, ReLU) применяются к ним для нелинейности системы.
Наконец, слой прогноза softmax используется для генерации значений вероятности для каждой из возможных выходных меток (заранее определённых наименований объектов на изображении). Окончательная метка — это метка с наивысшей оценкой вероятности.
Переобучение (англ. overfitting) является частой проблемой в моделях машинного обучения. Это происходит, когда модель вроде бы хорошо обучается на обучаемых данных, включая шум и наличие выпадающих значений. Переобучение можно заметить, когда на этапе обучения точность оценивается значительно выше, чем на этапе прогнозирования. Таким образом, точность модели на обучаемых данных высокая, а на совершенно новых данных низкая. Чтобы уменьшить данную проблему применяются методы изменения данных и следующие стратегии регуляризации: dropout, батч-нормализация (англ. batch normalization), ранняя остановка (англ. early stopping), добавление шума (англ. noise injection), регуляризации L1 и L2.
Формально архитектура свёрточной нейронной сети описана в виде параметрической модели. На теоретико-множественном уровне модель свёрточной нейронной сети CNN представлена в виде кортежа
где M – количество слоёв свёртка-пулинг; m – номер слоя (1≤m≤M); Nm – число плоскостей (карт-признаков) в m слое.
Фигурные скобки в кортеже обозначают множество. Первые четыре элемента в этом множестве определяют параметры карт-признаков, т.е. свёрточных (англ. convolution) плоскостей. Приняты следующие обозначения параметров для этих плоскостей: c – свёрточный слой; lm – номер плоскости в m слое; Xci,j,m,lm – тензор 2-го или 3-го ранга входных сигналов для свёрточного нейрона (i, j) слоя m плоскости lm; Ccm,lm – тензор (2-го ранга для первого слоя или 3-го ранга для других слоёв) весовых коэффициентов у свёрточного нейрона (i,j) слоя m плоскости lm; fcm – функция активации у свёрточных нейронов слоя m; Ycm,lm – выходные сигналы С-нейронов (i,j) слоя m в плоскости с номером lm (тензор 2-го ранга).
Следующие четыре элемента множества обозначат параметры нейронов субдискретизирующих плоскостей (плоскостей пулинга): s – слой пулинга; Xsi,j,m,lm – тензор 2-го ранга входных сигналов для пулинг нейронов (i, j) слоя m в плоскости lm; Ssm,lm – тензор 2-го ранга для весовых коэффициентов у пулинг нейрона (i, j) слоя m в плоскости lm; fsm – функция активации у пулинг нейронов слоя m; Ysm,lm – выходные сигналы S-нейронов (i, j) слоя m в плоскости с номером lm (тензор 2-го ранга).
Параметры последнего полносвязного слоя CNN определяются следующими элементами: p – обозначение персептрона (полносвязного (плотного) слоя); v – номер слоя нейронов многослойного персептрона; Xpi,v – тензор 2-го ранга входных сигналов для нейрона i в слое v персептрона; Wpi,v – тензор (2-го ранга для первого слоя или 1-го ранга для других слоёв) весовых коэффициентов у нейрона i в слое v персептрона; fpv – функция активации нейронов v слоя персептрона; Ypi,v - выходные сигналы нейронов i в слое v персептрона (тензор 1-го ранга).
Тензоры входных сигналов определяются через тензоры выходных сигналов предыдущих слоёв по следующим формулам:
где a, b, d, e - координаты границ рецептивной области (i, j) нейрона соответственно в плоскостях c, s или p слоя m или v.
Помимо рассмотренных структурных параметров модели, применяются другие важные характеристики, связанные с процессом моделирования нейронной сети. К ним относятся следующие характеристики.
Оптимизационные гиперпараметры: скорость обучения (англ. learning rate) — контролирует размер шага обновления весов во время оптимизации; затухание скорости обучения (англ. learning rate decay) — снижает скорость обучения с течением времени, чтобы помочь модели сойтись к минимуму; оптимизаторы (англ. optimizers) — алгоритмы для минимизации потерь; моментум (англ. momentum) и коэффициенты бета1 и бета2 — изменяют поведение оптимизаторов; размер батча (англ. batch size) — количество батчей, обработанных перед обновлением параметров модели.
Регуляризационные гиперпараметры: скорость dropout (англ. dropout rate) — процент нейронов, значения которых случайно выставлены как ноль во время обучения для предотвращения переобучения; затухание весов (англ. weight decay) — «наказывает» большие веса, добавляя штрафные значения L2 к функции потерь, помогая снизить переобучение; нормализация батчами (англ. batch normalization) — нормализует активации в батче, стабилизируя и ускоряя обучение.
Гиперпараметры изменения данных: диапазон вращения (поворота); сдвиг по ширине и высоте; диапазон увеличения/уменьшения; диапазон сдвига; отражение по вертикали/горизонтали; настройка яркости; сдвиг по каналам — случайным образом сдвигает значения в цветовых каналах изображения, что может помочь сделать модель более устойчивой к изменениям цвета.
Гиперпараметры стратегии обучения: эпохи (англ. epochs) — общее количество проходов по всему набору данных, увеличение эпох позволяет больше обучаться, но есть риск возникновения проблемы переобучения; порог терпения ранней остановки (англ. early stopping patience) — количество эпох, в течение которых необходимо дождаться улучшения в потере валидации, прежде чем прекратить обучение; сохранение контрольных точек (англ. checkpointing) — сохранение модели через определённые интервалы времени или на основе результатов проверки, чтобы не потерять лучшую версию; разделение на валидационный набор (англ. validation split) — процент данных, используемых для проверки с целью оценки обобщения модели во время обучения.
Прочие гиперпараметры: случайный сид — фиксированное значение для инициализации генераторов случайных чисел, обеспечивающее воспроизводимость между запусками; размер входного изображения — разрешение входных изображений, подаваемых в СНС, которое влияет на вычислительные затраты и детализацию получаемых данных; функция потерь — определяет целевую функцию, которую необходимо минимизировать (например, перекрёстную энтропию (англ. cross-entropy) для задач классификации и среднеквадратическую ошибку (англ. mean squared error) для задач регрессии); метрики оценки — дополнительные метрики для мониторинга (например, точность, достоверность, полнота) помимо основной функции потерь, в зависимости от задачи.
Эти гиперпараметры желательно учесть при разработке имитационной модели СНС, чтобы иметь возможность настраивать по отдельности или вместе для улучшения производительности, надежности и способности модели СНС к обобщению на заданном наборе данных.
Проведённый параметрический анализ описывает статический аспект СНС как объекта имитационного моделирования. Он выявил и упорядочил основные абстракции СНС как будущего объекта моделирования и проектирования. В текущем разделе были выделены часто используемые компоненты СНС, а также их гиперпараметры. Но данные разделы не отражают поведенческий (функциональный) аспект элементов нейронной сети. Этот недостаток могут устранить функциональные модели СНС, представленные в существующих инструментальных библиотеках. Поэтому в следующем подразделе проведен соответствующий анализ.
Библиотеки машинного обучения (МО), такие как Keras, TensorFlow и PyTorch, предоставляют мощные инструменты для создания, обучения и развёртывания свёрточных нейронных сетей. Эти библиотеки делают разработку СНС доступной для исследователей и практиков за счет абстрагирования сложных математических вычислений, что позволяет сосредоточиться на проектировании и применении моделей СНС.
Выполнен анализ функциональных возможностей и возможностей подключения указанных библиотек к другим ресурсам на программном уровне. Библиотека Keras предлагает несколько способов создания моделей: Sequential API и Functional API. Способ Functional API — это способ создания моделей, которые являются более гибкими, чем Sequential API. Functional API может обрабатывать модели с нелинейной топологией, общими слоями и даже несколькими входами и выходами. Основная идея заключается в том, что модель глубокого обучения обычно представляет собой направленный ациклический граф слоев. Фактически, Functional API — это способ построения графов слоев. В то же время, Sequential API подходит для простого стека слоев, где каждый слой имеет ровно один входной тензор и один выходной тензор [9]. Некоторые слои абстрагированы в классы.
Библиотека самостоятельно производит дифференцирование и градиентные вычисления.
В библиотеке Keras определены потери, оптимизаторы и метрики. Среди потерь можно выделить вероятностные потери и регрессионные потери. Метрики можно разделить на точностные метрики, вероятностные метрики и регрессионные метрики [10].
Библиотеки Keras и TensorFlow предлагают широчайший выбор готовых наборов данных. Библиотека Keras содержит такие популярные наборы данных, как: MNIST, CIFAR10, CIFAR100, IMDB, Reuters, Fashion MNIST, California Housing [11]. В библиотеке TensorFlow встроена поддержка инструмента под названием TFDS. Это коллекция готовых к использованию наборов данных, разработанных для упрощения процесса построения и обучения моделей машинного обучения. Эти наборы данных контролируются, стандартизируются и оптимизируются для эффективного использования в пайплайне TensorFlow [13], [14].
Кроме того, библиотеки TensorFlow, Keras и Pytorch позволяют также выполнять: кастомизацию слоёв и архитектур моделей; предобработку данных (в библиотеки встроены функции нормализации, изменения данных и батчинга наборов изображений); работу с большими наборами данных с помощью API по типу tf.data; изменение (повышение/понижение) точности обучения; оценивание модели с помощью множества метрик.
К продвинутым возможностям можно отнести: возможность реализовать обучение с переносом (англ. transfer learning); возможность настройки кастомных циклов обучения; возможность интеграции с средствами поиска оптимальных гиперпараметров; поддержка таких технологий как Grad-CAM или интегрированные градиенты для визуализации решений, принимаемых моделью.
Также библиотеки поддерживают создание таких архитектур как ResNet, GRU, LSTM, EfficientNet и Vision Transformer (ViT).
Библиотеки машинного обучения совместимы с другими библиотеками, такими как OpenCV или scikit-learn. Библиотеки предоставляют средства визуализации (например, TensorBoard). Библиотеки поддерживают исполнение алгоритмов либо на процессорах (CPU), либо на видеопроцессорах (GPU), либо на специализированных тензорных процессорах (TPU). Библиотеки поддерживают возможность распределенного обучения на серии GPU или узлов другого типа. Помимо TensorFlow существует ряд особых средств для интеграции моделей в веб, мобильные или периферийные устройства, такие как TensorFlow Lite, TensorFlow.js, TensorFlow Serving.
Для создания системы имитационного моделирования СНС потребуется декомпозировать её на отдельные компоненты (см. рис. 3). Подобное разложение модели на компоненты является хорошим подходом к ясной организации функций системы и обеспечению модульности, модифицируемости и удобства системы.
Модель будет базироваться на интерфейсе пользователя, который будет являться первичным инструментом взаимодействия пользователя с моделью. Интерфейс будет предоставлять доступ к другим компонентам системы. Он упростит навигацию, гарантируя, что даже пользователи с ограниченными техническими знаниями смогут интуитивно взаимодействовать с моделью. Также, он позволит получать обратную связь в реальном времени через его динамические обновления или подсказки.
Ключевым компонентом системы будет построитель структуры СНС. Он позволит пользователям определять архитектуру СНС путём добавления, изменения или удаления слоёв. Такая модульная структура обеспечит гибкость и возможность экспериментирования над разными архитектурами СНС. В построителе компонентов можно определить шаблоны базовых архитектур, составить список частных компонентов (слоёв, функций потерь, оптимизаторов, метрик), которые пользователь сможет выбирать для легкого изменения архитектуры СНС. У каждого компонента будет перечень гиперпараметров, которые пользователь также сможет изменять.
Администратор процесса моделирования (АПМ), как следует из названия, будет контролировать процесс имитационного моделирования. АПМ можно представить собой как определённого вида пайплайн, который можно разложить на серию этапов. Среди этапов в этом пайплайне можно будет выделить: этап выбора данных (путём использования встроенных датасетов или создания новых), этап обработки данных (в котором по усмотрению пользователя будет проводиться нормализация, изменение и разделение данных на обучающие и тестовые наборы), этап компиляции модели, этап обучения модели и этап тестирования модели.
Частью АПМ могут выступить определенные детали интерфейса, которые позволят выполнять алгоритм только до тех компонентов, которые выберет пользователь.
Визуализатор параметров моделирования будет помогать формировать интуитивное понимание состояния имитационной модели. Визуализатор параметров моделирования СНС предоставит информацию о внутренней работе СНС, отобразит веса, коэффициенты смещения и градиенты для каждого слоя. Это может быть полезно для отладки и понимания того, как модель нейросети настраивается при обучении. Визуализатор поможет пользователям понять, какие признаки СНС извлекает в разных слоях и сделает процесс более интерпретируемым, визуально показывая карты признаков. Это позволит сравнивать активации на разных слоях или после разных эпох. Помимо этого, визуализатор будет выполнять ключевую функцию — визуализировать все выбранные компоненты и их соединения и визуализацию ранее упомянутого пайплайна. Визуализатор структуры предоставит общий обзор архитектуры СНС и гарантирует, что пользователь сможет сразу увидеть всю структуру и настроить ее в интерактивном режиме.
Формирователь будет контролировать датасеты и модели. Со стороны формирования моделей, он предоставит возможности сохранения моделей в постоянную память, импорта и экспорта конфигураций моделей. Экспортироваться модели будут в отдельные файлы. Он обеспечит возможность экспериментировать с несколькими моделями без потери прогресса. Он также позволит загружать предварительно обученные модели или предыдущие эксперименты для дальнейшей их настройки и оценки. Со стороны датасетов, он централизует обработку наборов данных, гарантируя согласованность предварительной обработки и изменения данных, а также обеспечит бесшовную интеграцию между данными и пайплайном. В функции формирователя будут входить создание пользовательских наборов данных, а также модификация существующих под конкретные задачи.
Модуль постоянной памяти будет представлен жестким диском или твердотельным накопителем на устройстве, где имитационная модель запущена. Постоянная память обеспечит долгосрочное хранение моделей и наборов данных, гарантируя пользователям возможность возвращаться к работе над прошлыми экспериментами или делиться своими моделями с другими. Сохранение моделей может происходит в одном из следующих популярных форматов: HDF5, ONNX и др.
Вся эта структура будет являться лишь той частью системы, с которой будет взаимодействовать пользователь, а также той частью, которая будет отвечать за логику такого интерфейса. Однако, такая «надстройка» будет базироваться на реализации процессов обучения и функционирования СНС с помощью библиотек TensorFlow, Keras или Pytorch. В них встроены функциональные абстракции СНС, которые значительно упрощают работу с данной технологией. Однако, допускается самостоятельная разработка собственных алгоритмов реализации процессов обучения и функционирования СНС.
Такой дизайн модели обеспечит модульность, интерактивность, прозрачность, гибкость и масштабируемость. Каждый компонент фокусируется на определенном аспекте, что упрощает понимание, обслуживание и расширение системы. Обратная связь в режиме реального времени с помощью визуализатора и динамического пользовательского интерфейса делают систему интересной и подходящей для обучения. Визуализация весов, карт признаков и логов повышает доверие пользователей и улучшает обучение.
Формирователь предоставляет возможности выбора моделей и датасетов для пользователей с различными потребностями и опытом. Эта структура с легкостью поддерживает как простые эксперименты, так и сложные крупномасштабные модели.
Данная архитектура обеспечивает баланс между простотой и глубиной, что подходит как начинающим пользователям, так и экспертам, желающим экспериментировать со свёрточными нейронными сетями.
В результате проведенного анализа была рассмотрена архитектура свёрточной нейронной сети, что позволило выявить ключевые структурные элементы и их взаимосвязи. Разработано параметрическое описание СНС, включающее основные гиперпараметры, определяющие архитектуру и условия реализации процесса имитационного моделирования. Проведён анализ инструментальных возможностей современных библиотек машинного обучения для функциональной и программной реализации модели СНС.
Предложена структура системы имитационного моделирования СНС, учитывающая выявленные характеристики, что создает основу для разработки интерактивного образовательного средства изучения и анализа работы нейронной сети.
Дальнейшая работа будет направлена на разработку алгоритмов и программного обеспечения для системы моделирования СНС на основе предложенного параметрического описания в образовательных целях.