Вопрос о смещении в сверточных сетях

11

Я пытаюсь выяснить, сколько весов и уклонов необходимо для CNN.

Скажем, у меня есть (3, 32, 32) -изображение и я хочу применить (32, 5, 5) -фильтр. Для каждой карты объектов у меня есть веса 5x5, поэтому у меня должно быть 3 x (5x5) x 32 параметра. Теперь мне нужно добавить уклон. Я считаю, что у меня есть только (3 x (5x5) + 1) x 32 параметра, поэтому смещение одинаково для всех цветов (RGB)?

Это правильно? Сохраняю ли я одинаковое смещение для каждого изображения по всей его глубине (в данном случае 3), в то время как я использую разные веса? Это почему?

пользователь
источник

Ответы:

6

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

На картах объектов, которые являются выходом первого скрытого слоя, цвета больше не хранятся отдельно *. Фактически каждая карта объектов представляет собой «канал» в следующем слое, хотя они обычно визуализируются отдельно, где вход визуализируется с объединением каналов. Другой способ думать об этом состоит в том, что отдельные каналы RGB в исходном изображении представляют собой 3 «карты характеристик» на входе.

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

В CNN, как вы объясняете в этом вопросе, одинаковые веса (включая вес смещения) распределяются в каждой точке выходной карты объектов. Таким образом, каждая карта объектов имеет свой собственный вес смещения, а также previous_layer_num_features x kernel_width x kernel_heightвес соединений.

Так что да, ваш пример, приводящий к (3 x (5x5) + 1) x 32общему весу для первого слоя, верен для CNN с первым скрытым слоем, обрабатывающим вход RGB в 32 отдельных картах объектов.


* Вы можете запутаться, увидев визуализацию весов CNN, которые можно разделить на цветовые каналы, с которыми они работают.

Нил Слэйтер
источник
Я думал, что было одно смещение на фильтр ... у нас есть разные определения виртуальных нейронов?
Чарли Паркер
@CharlieParker С точки зрения количества параметров одно смещение на фильтр равно одному смещению на нейрон. Есть несколько эквивалентных способов просмотра архитектуры карты объектов CNN. Один из них может быть как «полностью расширенный» слой с большим количеством нейронов, имеющих одинаковые параметры. Другим было бы думать о каждом сверточном фильтре как о описании локальных связей одного нейрона, и слой неоднократно использует этот же нейрон. Поэтому я думаю, что у нас, вероятно, одно и то же определение нейрона, но ответ описывает вещи только с одной точки зрения.
Нил Слэйтер
Интересно, я думаю, вы думаете о каждом нейроне для каждого фильтра, я почему-то думал о каждой активации для каждого нейрона, но фильтр активируется во многих местах изображения, поэтому, конечно, я имел в виду гораздо больше нейронов.
Чарли Паркер
1

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

http://deeplearning.net/tutorial/lenet.html
http://neuralnetworksanddeeplearning.com/chap6.html#introduction_convolutional_networks

enterML
источник
Я задаю другой вопрос. Мой вопрос о предвзятости. Из формулы видно, что для каждой карты объектов существуют разные веса, но одинаковое смещение используется для всех карт объектов.
пользователь