Какие фильтры используются по умолчанию в Keras Convolution2d ()?


18

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

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

model.add(Convolution2D(nb_filter = 32, nb_row = 3, nb_col = 3,
                        border_mode='valid',
                        input_shape=input_shape))

Это, кажется, применяет в общей сложности 32 фильтра 3х3 к изображениям, обработанным CNN. Но что это за фильтры? Как бы я описал их математически? Документация keras не поможет.

Заранее спасибо,


2
Это происходит из понимания части свертки CNN. Вы можете прочитать здесь: cs231n.github.io/convolutional-networks
Кристиан Сафка

Ответы:


15

По умолчанию фильтры W инициализируются случайным образом с использованием glorot_uniformметода, который извлекает значения из равномерного распределения с положительными и отрицательными границами, описанными так:

WU(6nin+nout,6nin+nout),

ninnout

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

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

визуализация фильтров сети

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


5
glorot_uniformне использует нормальное распределение. Я думаю, что вы описываете glorot_normal. Я не думаю, что это имеет большое значение для ответа - ключевые моменты - это случайная инициализация, за которой следуют эффекты обучения. Возможно, стоит объяснить, как обученные фильтры в конечном итоге выглядят как краевые / угловые фильтры и т. Д. (Возможно, с одним из классических изображений фильтров первого слоя до / после обучения).
Нил Слэйтер

Тим, спасибо за предоставление математики. @Neil Slater - ваше понимание того, что фильтры после тренировки с обратным распространением могут выглядеть как обнаружение краев и т. Д., Было весьма полезным. Если бы у меня было больше репутации, я бы добавил оба ваших вклада.
ChrisFal

@NeilSlater Спасибо за ваш комментарий - вы правы, я запутался glorot_normalи glorot_uniformобновил ответ, чтобы отразить это. Я также добавил немного дополнительной информации о том, как фильтры заканчиваются, как вы предложили.
Timleathart

6

AFkBk(i,j)

Bk(i,j)=(FkA)(i,j)=l=0,1,2m=0,1,2Fk(l,m)A(il,jm)

введите описание изображения здесь

Транзитная модель будет обучать ядра в соответствии с вашей функцией стоимости, и, в конце концов, эти ядра являются фильтрами вашей модели.


Я понял эту математику, но я уверен, что многие читатели этой ветки найдут диаграмму полезной. Тогда спасибо!
ChrisFal

imghost.in/images/2018/03/06/XvatD.jpg может быть картинка должна быть с координатами (0,0) на B?
Винниту

@vinnitu, да, действительно. На самом деле мне также нужно изменить B на Bk (i, j), (i = 0,1,2, j = 0,1,2).
lucky6qi
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.