Структура и алгоритм работы свёрточной нейронной сети
Таким образом свёрточные слои порождают набор карт свойств, где количество карт равно количеству фильтров, на которых был применен фильтр, и где каждая карта содержит обобщение о местонахождении области с определенным элементом, на поиск которого был настроен фильтр. Данный фильтр перемещается по изображению на один пиксель, формируя новый элемент карты свойств и так продолжается до того момента… Читать ещё >
Структура и алгоритм работы свёрточной нейронной сети (реферат, курсовая, диплом, контрольная)
Данный тип нейронной сети содержит 3 основных вида скрытых слоёв: свёрточного, слоя субдискретизации (получения подвыборок) и полносвязанного. На Рисунке 1.1 представлен пример архитектуры свёрточной нейронной сети для классификации изображений:
Рисунок 0.1. Пример архитектуры CNN.
Свёрточный слой (Convolution) обычно идет сразу после входного слоя. Каждый последующий нейрон свёрточного скрытого слоя получает на вход данные о некотором наборе выходов группы нейронов на предыдущем слое. Данная группа так же называется рецептивным полем слоя [10], которое представляет собой окно (матрицу), как например, на Рисунке 1.2:
Рисунок 0.2. Пример рецептивного окна.
Данное окно просчитывает значение выхода для данной области и пересылает его на вход следующему нейрону. Это окно так же называется фильтром, так как при умножении области на данную матрицу, активируются те области (пиксели) которые совпали в фильтре и в матрице. Чем больше совпадений области и фильтра, тем больше вероятность того, что в данной области содержится то, что ищет фильтр. Результат поэлементного умножения двух матриц (области и фильтра) складывается и сохраняется в качестве значения текущего элемента карты свойств.
Данный фильтр перемещается по изображению на один пиксель, формируя новый элемент карты свойств и так продолжается до того момента, пока фильтр не обработает последнюю оставшуюся область на исходном изображении. Пример работы данного фильтра изображен на Рисунке 1.3:
Рисунок 0.3. Пример работы конволюционного фильтра.
Свёрточный слой определяется 3 гиперпараметрами, которые устанавливаются на этапе моделирования архитектуры нейронной сети:
- — Глубина, которая равна числу фильтров свёрточного слоя, так как для каждого фильтра формируется своя карта свойств для изображения или матрицы.
- — Шаг, который определяет на какое количество пикселей будет перемещаться фильтры по исходному изображению (в примере выше он был равен 1).
- — Параметр неявного заполнения нулями, который определяет насколько фильтр на крайних позициях может «вылезть» за границы изображения, позволяя тем обработать больше пикселей изображения, при этом игнорируя область, за которую пришлось выйти, принимая эти пиксели за нули.
Данная идея была взята [12] и адаптирована на основе открытий в области нейробиологии, где было доказано, что различные участки зрительной коры головного мозга реагируют на разные виды объектов [13].
Таким образом свёрточные слои порождают набор карт свойств, где количество карт равно количеству фильтров, на которых был применен фильтр, и где каждая карта содержит обобщение о местонахождении области с определенным элементом, на поиск которого был настроен фильтр.
Субдискретизирующие слои (Pooling) используются для уменьшения размерности карт свойств, усредняя значение каждой напускающейся области на карте признаков, тем самым ещё больше обобщая изображения, усиливая те области, в которых признак оказался доминирующим. Данные слои обычно бывают 3 типов, в зависимости от операций, которые применяют для уменьшения матрицы: максимизирующие, усредняющие и суммирующие. При максимизации, из матрицы выделяется наибольшее значение и применяется в качестве выхода для данной ячейки. В отличии от данного метода, усредняющий слой находит среднее арифметическое значение для данной области. Суммирующий же для выводит сумму элементов каждой области. На практике считается, что максимизирующий слой действует лучше, так как позволяет избавиться от лишних деталей.
Применение субдискретизирующего слоя положительно влияет на состояние свёрточной нейронной сети:
- — Размерность входа нейронной сети уменьшается, что делает его более управляемым.
- — Уменьшается количество параметров и вычислений, что позволяет контролировать эффект переобучения.
- — Модель становится более инвариантной к небольшим изменениям, вроде графического шума, артефактов и трансформаций.
- — Поскольку модель становится более инвариантной к трансформациям, то сам процесс поиска объекта с помощью фильтра становится инвариантным и позволяет находить объекты в разных местах изображения.
Традиционная свёрточная нейронная сеть обычно завершается одним или несколькими полносвязанными слоями (Fully Connected), которые принимают на вход значения карт свойств и на выход передают вектор определенной длины, которая, обычно равна количеству классов для решаемой задачи. То есть данный слой формирует вектор с вероятностями отношений исходного изображения к определенным классам. Комбинация полносвязанных слоев имеет вид многослойного персептрона, которая помогает классифицировать высокоуровневые признаки на последних свёрточных и субдискретизирующих слоях.
Данный вид нейронных сетей, как в случае с большинством глубоких нейронных сетей, обучается с помощью алгоритма обратного распространения ошибки. Так же для улучшения и привнесения нелинейности в работу нейронной сети, на выходе у свёрточных, субдискретизирующих или полносвязанных слоев может использоваться активационная функция. При задаче классификации наиболее подходящим вариантом является функция Softmax, так как сумма результатов данной функции для вектора аргументов будет равна 1, тем самым интерпретируя каждый результат как вероятность принадлежности к какому-либо классу:
(1.1).
Наиболее популярным выбором для свёрточного слоя является рамповая функция выпрямленного линейного элемента (ReLU) или функция выпрямитель (Rectifier), а также её вариации. Данный вид нелинейной активационной функции имеет следующий вид:
(1.2).
Результат данной функции можно представить в виде системы, где до 0 по X значение функции равно 0, а после линейно возрастает, что представлена на Рисунке 1.4:
Рисунок 0.4. График ReLU.
Применение данной активационной функции привносит в модель, дополнительную нелинейность, так как сама операция конволюции является линейной. В случае применения данной функции для матрицы, все её элементы станут неотрицательными.
Так же помимо ReLU можно использовать любую другую нелинейную функцию, например, Гиперболический Тангенс или Сигмоидальную функцию, но как показывает практика, ReLU имеет лучший эффект в большинстве случаев.