Выбор размера фильтра, шагов и т. Д. В CNN?

12

Я смотрел лекции CS231N из Стэнфорда и пытался обдумать некоторые проблемы в архитектуре CNN. Я пытаюсь понять, есть ли какие-то общие рекомендации по выбору размера сверточного фильтра и тому подобное, или это больше искусство, чем наука?

Я понимаю, что объединение существует главным образом для того, чтобы вызвать некоторую форму неизменности перевода в модель. С другой стороны, у меня нет хорошего представления о том, как выбирается размер шага. Существуют ли какие-то другие рекомендации, кроме как сжимать текущий размер слоя или пытаться достичь большего восприимчивого поля для нейрона? Кто-нибудь знает какие-либо хорошие документы или аналогичные, которые обсуждают это?

ДСТ
источник

Ответы:

9

В качестве вводного текста по всем названным вами вопросам я бы порекомендовал книгу глубокого обучения . Это обеспечивает широкий обзор области. Это объясняет роль каждого из этих параметров.

На мой взгляд, очень полезно прочитать о некоторых из самых популярных архитектур (resnet, inception, alex-net), и извлечь ключевые идеи, ведущие к проектным решениям. Прочитав вышеупомянутую книгу.

В программе лекций, на которые вы ссылаетесь, очень подробно объясняется, как слой свертки добавляет большое количество параметров (весов, смещений) и нейронов. Этот слой, однажды обученный, способен извлекать смысловые узоры из изображения. Для нижних уровней эти фильтры выглядят как краевые экстракторы. Для более высоких слоев эти примитивные формы объединяются для описания более сложных форм. Эти фильтры включают в себя большое количество параметров и большую проблему при проектировании глубоких сетей, заключающуюся в том, как уметь описывать сложные формы и при этом уменьшать количество параметров.

Поскольку соседние пиксели сильно коррелированы (особенно в нижних слоях), имеет смысл уменьшить размер выходного сигнала путем подвыборки (объединения) отклика фильтра. Чем дальше друг от друга два пикселя, тем меньше корреляция. Следовательно, большой шаг на уровне пула приводит к большой потере информации. Грубо говоря. Шаг 2 и размер ядра 2х2 для уровня пула - общий выбор.

Более сложным подходом является начальная сеть ( углубляясь в свертки ), где идея состоит в том, чтобы увеличить разреженность, но при этом иметь возможность достигать более высокой точности, торгуя количеством параметров в сверточном слое по сравнению с начальным модулем для более глубоких сетей.

SqueezeNet: Точность уровня AlexNet с 50-кратным уровнем параметров и размером модели <0,5 МБ - хорошая статья, в которой даны подсказки о текущих архитектурах и роли некоторых проектных измерений в структурированном и систематическом виде . Он основан на идеях, представленных в моделях, упомянутых ранее.

jpmuc
источник
1

Если вы считаете, что лучше учиться с течением времени, я хочу предложить эти размеры ядра и шага;

Что касается размера фильтра, я думаю, что это зависит от характеристик вашего изображения. Например, большое количество пикселей необходимо для того, чтобы сеть распознала объект, вы можете использовать фильтры большего размера, с другой стороны, если объекты имеют небольшие размеры или локальные объекты, вы можете применить фильтры меньшего размера относительно размера входного изображения.

Для размера шага, для меня, маленький шаг был бы лучше при захвате мельчайших деталей входного изображения.

Для меня преимущество объединения заключается в том, что оно извлекает самые резкие черты изображения. В общем, самые резкие особенности выглядят как лучшее представление изображения на нижнем уровне.

Облако Чо
источник