Описание и анализ топологий свёрточных нейронных сетей
Бутылочное горлышко" заключается в первоначальном уменьшении количества свойств для обработки их с помощью обычной операции свёртывания. После, данный уменьшенный набор карт свойств преобразовывался с помощью того же фильтра единичной размерности в новый набор карт свойств, но уже с изначальной размерностью. Такой способ позволяет, не теряя в качестве, сократить несколько раз объем операций… Читать ещё >
Описание и анализ топологий свёрточных нейронных сетей (реферат, курсовая, диплом, контрольная)
Существует несколько основных разновидностей архитектур свёрточных нейронных сетей. Сеть LeNet5 — первая успешная реализация свёрточной нейронной сети, разработанная Яном ЛеКун в 1990;х годах [14]. Она является наиболее простой топологией свёрточных нейронных сетей, где каждый свёрточный слой чередуется с слоем субдискретизации, тем самым уменьшая размерность при поиске абстракций. Данная сеть завершается несколькими полносвязанными слоями, которые, связывают абстракции с классами. Всего в данной топологии 60 тыс. параметров, она является сравнительно небольшой и поэтому толерантна к любым модификациям.
Начиная с 2012, топология AlexNet [2], которая популяризовала свёрточные нейронные сети (и нейронные сети в целом) для задач классификации и была разработана Алексом Крижевским для конкурса ImageNet, показала достаточно хорошие результаты. Она содержит около 60 млн. параметров, что увеличило время на обучение сети. По сравнению с предшественником LeNet, данная сеть по своей структуре во многом аналогична LeNet, с тем условием, что AlexNet в разы превышает предшественника в объемах. Данное решение обоснованно тем, что с момента создания LeNet аппаратные мощности вычислительных процессоров значительно увеличились, а также увеличилось количество открытых данных, с помощью которых можно было обучить нейронную сеть.
Разработанная оксфордскими учеными топология свёрточной нейронной сети VGG является одной из первых свёрточных нейронных сетей, которая использовала небольшие фильтры размерами 3Ч3 в каждом свёрточном слое, которые были объединены в последовательность. Данный подход является противоположностью к подходу, использованному в LeNet5 и в подобных свёрточных сетях. В отличие от AlexNet, по мере продвижения вглубь сети, фильтры уменьшались в размерах, приближаясь к крайне нежелательному для AlexNet фильтру размерами 1Ч1. Но главным достоинством VGG является открытия эффекта от последовательного расположения свёрточных слоев. Так, несколько фильтров 3Ч3 могли давать аналогичных результат, как от применения намного более обширных рецептивных полей, например, размерами 5Ч5 и 7Ч7. Данные открытия в дальнейшем были применены в современных топологиях свёрточных нейронных сетей. К сожалению, данный подход приводит к увеличению издержек на обучение нейронной сети и её дальнейшее использование, что в дальнейшем привело к развитию новых подходов, связанных с оптимизацией данной топологии.
Таким подходом стала топология «Сеть внутри сети» (Network in Network, NiN) [15], которая позволила использовать свёрточные слои с фильтрами размером 1Ч1 для увеличения комбинаций возможных значений на картах свойств. В рамках данной архитектуры, после каждого свёрточного слоя используется подобие многослойного персептрона, чтобы лучше связать свойства перед тем, как передать их на вход следующему свёрточному слою. Такой подход значительно увеличил эффективность каждой свёрточной карты свойств, объединяя их в более сложные группы. Это идея в дальнейшем стала использоваться в более современных глубоких нейросетях. Данная топология так же использует на выходе усредняющий субдискретизирующий слой, что в дальнейшем стало достаточно обыденной и эффективной практикой «сглаживания» результатов свёртки для последующей привязки наиболее абстрактных свойств к необходимым классам.
Идею «Сети внутри сети» в дальнейшем развила компания Google, создав две похожи топологии GoogleLeNet и Inception [16], представленной на Рисунке 1.5 Мотивом к созданию данного рода топологий послужило желание оптимизировать процесс обучения, уменьшив накладные расходы в виде процессорных мощностей и расхода памяти, при этом увеличив качество результата.
Разработанный командой Google модуль Inception проектировался для параллельной обработки данных слоями, с разной размерностью рецептивного поля, при этом используя подход NiN для уменьшения количества карт свойство с помощью фильтра единичной размерности. Данный способ был в дальнейшем назван «Бутылочным горлышком» в контексте топологий нейронных сетей.
" Бутылочное горлышко" заключается в первоначальном уменьшении количества свойств для обработки их с помощью обычной операции свёртывания. После, данный уменьшенный набор карт свойств преобразовывался с помощью того же фильтра единичной размерности в новый набор карт свойств, но уже с изначальной размерностью. Такой способ позволяет, не теряя в качестве, сократить несколько раз объем операций на этапе выявления свойств в обычном свёрточном слое.
Анализируя особенности топологий свёрточных нейронных сетей и мотивов их возникновения, можно предположить, что для задачи преобразования изображения низкого качества в изображения повышенной четкости, необходимо использовать более прогрессивный подход сетей NiN или Inception, а именно слой «Бутылочного горлышка» для эмуляции работы многослойного персептрона и для оптимизации вычислительных мощностей на этапе конволюции. Так же размер фильтра должен уменьшатся по мере продвижения вглубь нейронной сети, что доказано опытом разработки топологии VGG.