Авторы: Суханов А.А. Федяев О.И.
Источник:
Информатика, управляющие системы, математическое и компьютерное моделирование –
2023 (ИУСМКМ-2023). – Донецк: ДонНТУ, 2023.
Аннотация: Представлена и проанализирована архитектура свёрточной нейронной сети, ориентированная на распознавание образов. Рассмотрен алгоритм глубокого обучений этого класса нейронных сетей. Приведен пример, который показывает, как архитектура свёрточной нейросети позволяет путём послойного анализа изображений выделить характерные черты распознаваемых объекта и осуществить его идентификацию. Abstract: The architecture of a convolutional neural network focused on pattern recognition is presented and analyzed. The deep learning algorithm of this class of neural networks is considered. An example is given which shows how the architecture of a convolutional neural network allows, through layer-by-layer analysis of images, to identify the characteristics of the recognized object and to carry out its identification.
Способ обработки информации человеческим мозгом, отличается от методов, применяемых обычными цифровыми компьютерами. Мозг представляет собой чрезвычайно сложный, нелинейный, параллельный вычислитель. Он обладает способностью организовывать свои структурные компоненты, которые называются нейронами, таким образом, что они могут выполнять конкретные задачи во много раз быстрее, чем самые быстродействующие современные компьютеры. Примером такой задачи обработки информации может быть обычное зрение. Для реализации этой сложной функции зрения мозг последовательно выполняет ряд подзадач распознавания, на которые у него уходит всего лишь 100 – 200 миллисекунд.
Биологический мозг достигает такую производительность при обработке информации за счёт своей особой структуры, позволяющей строить собственные правила, которые нейрофизиологи называют «опытом». Опыт накапливается с течением времени, фактически, продолжается на протяжении всей жизни человека. Развитие нейронов мозга связано с понятием пластичности мозга – адаптации нервной системы к окружающим условиям. Именно пластичность играет самую важную роль в работе нейронов в качестве единиц обработки информации в человеческом мозге.
Определённая аналогия отражена в функционировании искусственной нейронной сети. В частном случае она может быть представлена, как компьютерная система, которая, по мнению специалистов, моделирует способ обработки мозгом зрительные образы. Технически она реализуется с помощью электронных компонентов или же моделируется программой, выполняемой на цифровом компьютере [1]. Таким образом, искусственная нейронная сеть может использоваться для решения проблемы компьютерного зрения.
Предметом рассмотрения данной статьи является одна из лучших в настоящее время нейронных сетей, осуществляющих распознавание различных объектов по аналогии со зрительной системой человека. В частности, проведен параметрический анализ архитектуры и алгоритма обучения многослойной свёрточной нейронной сети, которая благодаря глубокому обучению формирует многомерную нелинейную функцию зависимости распознаваемых объектов от их графического изображения.
Свёрточная нейронная сеть – это класс искусственных нейронных сетей, которые используют свёрточные слои для анализа входных данных с целью выделения в них характерных признаков. Структура сети состоит из нескольких слоёв, каждый из которых выполняет свою функцию (рисунок 1):
Операция свёртки предполагает сравнение входных данных с ядром свёртки для формирования карты признаков (процедура фильтрации). Фильтры в свёрточных слоях подбираются таким образом, чтобы извлечь наиболее полезную информацию для конкретной задачи. Свёрточные сети автоматически настраиваются для поиска наилучшей характеристики в зависимости от специфики задачи. В результате свёрточный слой фильтрует информацию о специфике формы и цвете объекта при решении задачи распознавания.
Рисунок 1 – Типовая архитектура свёрточной нейронной сети
В архитектуре свёрточной нейронной сети используется комбинация этих слоев, образующих своего рода стек слоёв. В зависимости от конкретной задачи, эти слои могут различаться в соотношении и количестве. Но в целом, их комбинация и последовательность направлены на извлечение признаков из входных данных, на основе которых сеть может научиться классифицировать эти данные. Свёрточные нейронные сети также улучшают способность к обнаружению объектов при их искажении, используя слои объединения (пулинг) для обеспечения инвариантности к смещениям и вращениям. Объединённые слои также позволяют использовать большее количество свёрточных слоев, но сокращают, при этом, потребление памяти. Слои нормализации используются для нормализации локальных входных областей путем приведения всех входных данных в слое к среднему значению, равному нулю, и дисперсии, равной единице. Также могут использоваться другие методы регуляризации, такие как пакетная нормализация, когда нормализуется активация для всей партии, или отсев, когда игнорируем случайно выбранные нейроны в процессе обучения. Полностью связанные слои имеют нейроны, которые функционально похожи на свёрточные слои, но отличаются тем, что они связаны со всеми активациями в предыдущем слое.
Более современные свёрточные нейронные сети используют модули инцепции, которые используют 1×1 свёрточные ядра для дальнейшего уменьшения потребления памяти и более эффективного вычисления, и, следовательно, обучения. Это делает такую сеть эффективную для ряда приложений машинного обучения.
Модули ввода в свёрточной нейронной сети позволяют создавать более глубокие и большие слои свёрток, одновременно ускоряя вычисления [2]. Это достигается за счёт использования свёрток 1×1 с небольшим размером карты признаков, например, 192 карты признаков размером 28×28 можно уменьшить до 64 карт признаков размером 28×28 с помощью 64 сверток 1×1. Благодаря уменьшенному размеру эти свёртки 1×1 могут быть дополнены более крупными свёртками размером 3×3 или 5×5. В дополнение к свёртке 1×1 для уменьшения размерности можно также использовать максимальное объединение. На выходе начального модуля все большие свёртки объединяются в большую карту признаков, которая затем поступает на следующий слой (см. рисунок 1).
Функции активации нейронов сети выполняют нелинейные преобразования к взвешенным ядром входным данным. Популярной функцией активации для свёрточной нейронной сети является функция ReLu (выпрямленная линейная функция), которая обнуляет отрицательные входные данные (формула 1). Опыты показали, что она ускоряет обучение, не снижая при этом точности.
y=max (0,x)
Одним из плюсов свёрточной нейронной сети является пулинг. Пулинг – это процедура, которая уменьшает входные данные в определённой области до одного значения. В свёрточных нейронных сетях такое сжатие информации обеспечивает сохранение выделенных признаков для анализа на следующих слоях свёртки с меньшим потреблением памяти. Пулинг обеспечивает базовую инвариантность к поворотам и переводам и улучшает способность свёрточных сетей к обнаружению объектов. Например, лицо на участке изображения, которое находится не в центре изображения, а немного смещено, все равно может быть обнаружено свёрточными фильтрами, поскольку информация попадает в нужное место благодаря операции объединения. Чем больше размер области объединения, тем больше информации сжимается, что приводит к созданию тонких сетей, которые легче помещаются в памяти (например, при использовании GPU). Однако, если область объединения слишком велика, слишком много информации отбрасывается, и качество выделения признаков снижается [3].
Процедура, которая используется для настройки нейросети, называется алгоритмом обучения. Алгоритм вычисляет значения синаптических весов нейронов сети по критерию минимизации ошибки распознавания образов из обучающего множества. То есть свёрточные нейронные сети обучаются также с использованием градиентных методов оптимизации. После обучения сети на обучающих примерах она может точно предсказывать выходные данные при предъявлении входных данных. Для распознавания обученная нейронная сеть может быть развёрнута на различных платформах - от облачных вычислений, корпоративных центров обработки данных до устройств на границе с ограниченными ресурсами [4].
В настоящее время для обучения сети используется популярный метод обратного распространения ошибки. Он по стратегии «обучение с учителем» настраивает веса связей так, чтобы ошибка на всём обучающем множестве была минимальной. Величина ошибки определяется по формуле (2) как среднеквадратическая ошибка
где, Ep – величина функции ошибки для образа p; tpj – желаемый выход нейрона j для образа p; ypj – активированный выход нейрона j для образа p. Неактивированное состояние каждого нейрона j для образа p определяется как взвешенная сумма по формуле (3).
где, Spj – взвешенная сумма выходов связанных нейронов предыдущего слоя на вес связи, по-другому еще обозначается как неактивированное состояние нейрона j для образа p; wij – вес связи между i и j нейронами; ypi – активированный состояние нейрона j предыдущего слоя образа p. Выход каждого нейрона j является значением активационной функции fj, которая переводит нейрон в активированное состояние. В качестве функции активации может использоваться любая непрерывно дифференцируемая монотонная функция. Активированное состояние нейрона вычисляется по формуле (4)
где, ypj – активированное состояние нейрона j для образа p; fj – функция активации; Spj – неактивированное состояние нейрона j для образа p. В качестве метода минимизации ошибки используется метод градиентного спуска, суть этого метода сводится к поиску минимума или же максимума функции за счет движения вдоль вектора градиента. Для поиска минимума движение должно осуществляться в направлении антиградиента. Градиент функции потери представляет собой вектор частных производных, который вычисляется по формуле (5)
где, E(W)– градиент функции потери от матрицы весов; dE/dw – частная производная функции ошибки по весу нейрона; n – общее количество весов сети. А производную функции ошибки по конкретному образу можно записать по правилу цепочки (6)
где, ∂E/∂wij – значение производной функции ошибки по весу wij, между i и j нейронами; ∂E/∂yj – ошибка нейрона j; ∂yj/∂Sj – значение производной функции активации по ее аргументу для нейрона j; ∂Sj/∂wij – выход i нейрона предыдущего слоя, по отношению к нейрону j. Суть алгоритма заключается в последовательном вычислении ошибок скрытых слоёв, начиная от выходного к входному слою. Ошибка для скрытого слоя рассчитывается по формуле (7)
где, ∂yi)/∂Si – значение производной функции активации по ее аргументу для нейрона j; δi – ошибка нейрона i скрытого слоя; δj – ошибка нейрона j следующего слоя; wij – вес связи между нейроном i текущего скрытого слоя и нейроном j выходного или точно такого же слоя [5].
В качестве примера обучения нейронной сети рассмотрим распознавание дорожного знака (см. рисунок 2). Входное изображение дорожного знака фильтруется 4 свёрточными ядрами 5×5, которые создают 4 карты признаков, эти карты признаков подвергаются субдискретизации путём максимального объединения. Следующий слой применяет 10 свёрточных ядер 5×5 к этим поддискретизированным изображениям и снова объединяет карты признаков. Последний слой (классификатор) – это полносвязный обученный слой нейронов, в котором все признаки, обнаруженные в исходном графическом изображении дорожного знака, используются для идентификации объекта на снимке. На рисунке единичные выходные сигналы нейронов, обозначающие результат распознавания, отмечены красными линиями.
Рисунок 2 – Распознавание дорожного знака свёрточной нейросетью
Таким образом, обучение нейронной сети сводится к минимизации функции ошибки, путём корректировки весовых коэффициентов синаптических связей нейронов в слоях сети. Благодаря особенностям архитектуры, обучение многослойной сети позволяет путём послойного анализа изображений выделить характерные черты распознаваемых объектов и осуществить их классификацию.
Так как свёрточная нейронная сеть хорошо себя зарекомендовала в проектах Google (для поиска среди фотографий пользователя), Amazon (для генерации рекомендаций товаров), Pinterest (для персонализации домашней страницы пользователя), её можно эффективно использовать для построения различных систем компьютерного зрения.