Как работают сверточные нейронные сети после шага объединения? - PullRequest
0 голосов
/ 01 декабря 2018

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

enter image description here

Итак, начиная слева мы имеем нашу матрицу 28x28, представляющую нашу картинку.Мы применяем три фильтра 5x5 к нему, чтобы получить три карты характеристик 24x24.Затем мы применяем максимальное объединение к каждой квадратной карте объектов 2x2, чтобы получить три объединенных слоя 12x12.Я все понимаю до этого шага.

Но что теперь происходит?В документе, который я читаю, говорится:

"Последний уровень соединений в сети - это полностью подключенный уровень. То есть этот уровень соединяет каждый нейрон из слоя с максимальным пулом к ​​каждому из10 выходных нейронов. "

В тексте не описывалось, что происходит дальше, и у меня остались несколько вопросов.

Как три объединенных слоя сопоставляются с10 выходных нейронов?Под полным подключением означает ли это, что каждый нейрон в каждом из трех слоев объединенных слоев 12x12 имеет вес, соединяющий его с выходным слоем?Таким образом, есть весы 3x12x12x10, связывающие объединенный слой с выходным слоем?Все еще активирована функция активации на выходе нейрона?

Снимки и выдержки, взятые с этого онлайн-ресурса: http://neuralnetworksanddeeplearning.com/chap6.html

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Да, вы на правильном пути.Существует слой с весовой матрицей 4320 записей.

Эта матрица обычно имеет размер 432x10.Это потому, что эти 432 числа являются представлением фиксированного размера входного изображения.На данный момент вам не важно, как вы его получили - CNN, прямая прямая связь или сумасшедший RNN, попиксельный, просто хотите превратить описание в классификацию.В большинстве наборов инструментов (например, TensorFlow, PyTorch или даже просто numpy) вам необходимо явно преобразовать вывод пула 3x12x12 в вектор длиной 432.Но это всего лишь перестановка, отдельные элементы не меняются.

Кроме того, обычно будет вектор смещений длиной 10 * , по одному на каждый выходной элемент.

Наконец о нелинейности : Поскольку речь идет о классификации, вы обычно хотите, чтобы выходные 10 единиц представляли апостериорные вероятности того, что входные данные принадлежат определенному классу (цифре).Для этого используется функция softmax : y = exp(o) / sum(exp(o)), где exp(o) обозначает поэлементное возведение в степень.Это гарантирует, что его вывод будет правильным категориальным распределением, все элементы в <0;1> и суммируя до 1. В книге Deep Learning есть подробное обсуждение softmax в нейронных сетях (я рекомендую прочитать Раздел 6.2.1 в дополнение к самому подразделу softmax.)

Также обратите внимание, что это вообще не относится к сверточным сетям, вы найдете этот блок fully connected layer - softmax в конце практически каждой сети классификации .Вы также можете рассматривать этот блок как фактический классификатор, в то время как все, что перед ним (мелкий CNN в вашем случае) просто пытается подготовить хорошие функции.

0 голосов
/ 02 декабря 2018

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

(0,1)

(0,01)

(0,2)

(0,9)

(0,2)

(0,1)

(0,1)

(0,1)

(0,1)

(0,1))

, где каждый нейрон содержит вероятность того, что выборка принадлежит этому классу.В этом случае, если вы классифицируете изображения рукописных цифр, и каждый нейрон соответствует прогнозу, что изображение 1-10, тогда прогноз будет 4. Надеюсь, это поможет!

...