Сверточные нейронные сети (ConvNets) являются широко используемыми инструментами для глубокого обучения. Они специально подходят для изображений в качестве входов, хотя они также используются в других приложениях, таких как текст, сигналы и другие непрерывные отклики. От других типов нейронных сетей они отличаются несколькими способами:
Сверточные нейронные сети вдохновлены биологической структурой зрительной коры, которая содержит расположения простых и сложных камер [1]. Обнаружено, что эти камеры активируются на основе субрегионов поля зрения. Эти субрегионы называются рецептивными полями. Вдохновленные результатами этого исследования, нейроны в сверточном слое соединяются с субрегионами слоев перед этим слоем вместо того, чтобы быть полностью связанными, как в других типах нейронных сетей. Нейроны не реагируют на области за пределами этих субрегионов на изображении.
Эти субрегионы могут перекрываться, следовательно, нейроны ConvNet дают пространственно коррелированные результаты, в то время как в других типах нейронных сетей нейроны не имеют никаких связей и дают независимые результаты.
В сложение в нейронной сети с полностью связанными нейронами количество параметров (весов) может быстро увеличиться, так как размер входа увеличений. Сверточная нейронная сеть уменьшает количество параметров с уменьшенным количеством соединений, общих весов и понижающей дискретизации.
ConvNet состоит из нескольких слоев, таких как сверточные слои, слои с максимальным или средним объединением и полносвязные слои.
Нейроны в каждом слое ConvNet расположены 3-D образом, преобразуя вход 3-D в выход 3-D. Для примера, для входа изображений, первый слой (вход слой) содержит изображения как 3-D входы, причем размерности являются высотой, шириной и цветовыми каналами изображения. Нейроны в первом сверточном слое соединяются с областями этих изображений и преобразуют их в 3-D выход. Скрытые модули измерения (нейроны) в каждом слое изучают нелинейные комбинации исходных входов, что называется редукцией данных [2]. Эти выученные функции, также известные как активации, из одного слоя становятся входами для следующего слоя. Наконец, выученные функции становятся входами в классификатор или регрессионую функцию в конце сети.
Архитектура ConvNet может варьироваться в зависимости от типов и количества включенных слоев. Типы и количество включенных слоев зависят от конкретного приложения или данных. Например, если у вас есть категориальные ответы, у вас должны быть функция классификации и слой классификации, тогда как если ваш ответ непрерывен, у вас должен быть слой регрессии в конце сети. Меньшая сеть, имеющая только один или два сверточных слоя, может быть достаточной для изучения небольшого количества данных о серой шкале изображения. С другой стороны, для более сложных данных с миллионами цветных изображений может потребоваться более сложная сеть с несколькими сверточными и полносвязными слоями.
Можно конкатенировать слои сверточной нейронной сети в MATLAB® следующим образом:
layers = [imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer];
После определения слоев сети необходимо задать опции обучения с помощью trainingOptions
функция. Для примера,
options = trainingOptions('sgdm');
Затем можно обучить сеть с помощью обучающих данных с помощью trainNetwork
функция. Данные, слои и опции обучения становятся входами в функцию обучения. Для примера,
convnet = trainNetwork(data,layers,options);
Для подробного обсуждения слоев ConvNet, смотрите Задать слои сверточной нейронной сети. Для настройки параметров обучения смотрите Set Up Parameters и Train Convolutional Neural Network.
[1] Hubel, H. D. and Wiesel, T. N. «Receptive Fields of Single Neurones in the Cat's Striate Cortex». Журнал физиологии. Том 148, стр. 574-591, 1959.
[2] Мерфи, К. П. Машинное обучение: вероятностная перспектива. Кембридж, Массачусетс: The MIT Press, 2012.
trainingOptions
| trainNetwork