Эволюция ИИ в процессе решения практических задач
Известно, что изображения обладают свойством локальной связности, то есть если мы говорим, например, о том, что на фотографии изображен человек, то точки, принадлежащие отдельным элементам его лица, будут располагаться рядом, а не разбросаны по разным частям изображения. Когда мы двумерную матрицу 18Двумерной матрица будет при кодировании черно-белого изображения, в случае цветного изображения это будет тензор , отображающую изображение, переводим в вектор, то информация о связности точек теряется (см. схему рис. 1.29). В отличие от персептрона, сверточные сети используют так называемые локальные рецепторные поля, которые обеспечивают локальную двумерную связность нейронов и за счет этого обеспечивают инвариантность к повороту, сдвигу и пространственным искажениям в изображении.
Описать подробно, как работает сверточная сеть в рамках данного курса (где мы планируем дать концептуальный обзор многих технологий), не предоставляется возможным, поэтому остановимся на описании только ключевых идей.
Идея сверточных сетей базируется на сведениях о некоторых механизмах зрительного восприятия у живых организмов. Согласно исследованиям Хьюбела и Визеля, проведенным еще в 1962 году, отдельные клетки нейронов в мозге реагируют при наличии в изображении краев определенной ориентации. Например, некоторые нейроны реагируют на вертикальные грани, другие на горизонтальные или диагональные.
Можно сказать, что именно идея наличия нейронов в зрительной коре, ответственных за поиск определенных характеристик изображения, лежит в основе сверточных нейронных сетей.
Существует достаточно много попыток художников проиллюстрировать механизм работы сверточных нейронных сетей (СНС), при этом каждая схема не идеальна в том смысле, что использует те или иные упрощенные аналогии. Мы приведем несколько подходов иллюстрирования работы сверточных сетей, которые интерпретируют идею на разном уровне абстракции и в сочетании дают возможность понять принцип работы СНС. Начнем с самого общего представления сверточной сети (рис. 2.7).
На рис. 2.7 (в верхней части) показано, что сеть изначально обучается распознавать разные виды животных. Это стадия первичного обучения, когда сеть учится распознавать размеченные изображения, то есть такие, к которым прикреплены теги, несущие информацию о свойствах каждого объекта (принадлежность тому или иному классу животных). После того как сеть обучена, ей на распознавание дается новое неразмеченное изображение - как показано на рис. 2.7 - это изображение собаки, которое сеть должна отнести к одному из классов животных, которые она "знает". Сверточная сеть состоит из нескольких скрытых слоев, так что при обработке изображения на этих слоях выявляются разные группы признаков - от наиболее простых до все более сложных. СНС может иметь десятки или даже сотни слоев, каждый из которых учится обнаруживать различные признаки. Выходные данные сверточного слоя используются в качестве входных данных для следующего слоя. В результате сеть дает заключение о том, к какому классу и с какой вероятностью относится исследуемое изображение.
Первые слои отвечают за распознавание простейших паттернов - уже упомянутых краев различной ориентации или определенной текстуры. Следующий слой отвечает за комбинирование паттернов предыдущего слоя - например, из двух наклонных штрихов он может составить "угол", напоминающий ухо. Последующие слои учатся комбинировать результаты предыдущих слоев, тем самым образуя иерархию фрагментов различной степени содержательности.
Более подробно работу СНС рассмотрим на рис. 2.8. Здесь обозначены ранее упомянутые слои: сверточные (convolutional) слои, слои подвыборки или субдискретизации (subsampling, называемых также слоями пулинга / pooling) и слои "обычной" нейронной сети - персептрона.
Сверточные сети получили свое название от "операции свертки". Свертка в данном случае - это механизм выявления особенностей (признаков) из входных изображений. Свертка сохраняет пространственные отношения между пикселями, изучая особенности изображения, используя каждый раз небольшую площадь входных данных. Работа СНС заключается в том, что изображение "пропускается" через ряд сверточных (convolution), субдискретизирующих (subsampling) и полностью связанных (dense) слоев для получения на выходе результата ( рис. 2.8).
В рассматриваемом случае выходной сигнал является вероятностью принадлежности классу изображений, который наилучшим образом подходит к исследуемому изображению. На рис. 2.7 это показано как вероятность того, что исследуемое изображение принадлежит классу "собаки", составляет 90%.
Далее разберемся более подробно, что делает каждый из упомянутых слоев.
Первым слоем в СНС является сверточный слой. Лучший способ объяснить работу свертки - это рассмотреть графическую интерпретацию процесса рис. 2.9. Здесь показано окно, которое перемещается по всем областям входного изображения. Это же окно показано и на рис. 2.8.
Упомянутое окно называют фильтром или ядром, а область, на которую оно в данный момент проецируется, - рецептивным полем. Фильтр (ядро) - это матрица небольшого размера с определенным набором параметров (весов). По мере того, как фильтр перемещается по исходному изображению, он производит операцию свертки, то есть поэлементно перемножает значения (веса) матрицы фильтра с исходными значениями пикселей рецепторного поля, получая число для каждого положения фильтра. На рис. 2.8 пунктирными линиями показан процесс преобразования матрицы рецептивного поля в точку - число (значение на сверточном поле). После серии последовательных перемещений фильтра по изображению получится массив чисел, который называется картой признаков.
Фильтр можно интерпретировать как графическое кодирование какого-либо признака, например, наличие вертикальной, горизонтальной или наклонной линии. Для исследования разных признаков используется множество фильтров, кодирующих разные типы графических элементов. Важно отметить, что ядра свертки не закладываются разработчиками, а формируются автоматически путем обучения сети с использованием метода обратного распространения ошибки. Фильтры на первом слое обрабатывают простейшие характеристики изображения и усложняются до характеристик, которые определяют объект целиком. Этот процесс мы уже абстрактно изобразили на рис. 2.7.
На рис. 2.8 показан один сверточный слой, на практике их могут быть десятки и даже сотни, и на каждом слое формируется несколько каналов (независимых карт признаков). На рис. 2.8 условно показано шесть каналов.