Как более глубокие слои учатся на предыдущих слоях, отображают карты в сетях Conv

Я много читаю о коннетах, но все же скучаю по важной части.

Допустим, у нас есть слой conv2D с 32 фильтрами:

Я понимаю, что веса этих фильтров инициализируются случайным образом в начале, и в процессе обучения эти фильтры формируются. Так что на первом слое они начинают обнаруживать края.

И теперь после объединения у нас есть еще один слой конвоя (скажем, 32 фильтра снова), который будет применять фильтры к результату предыдущего слоя.

Таким образом, уровень 2 будет применять 32 фильтра к ЛЮБОМ из этих 32 выходов первого уровня. Я видел очень много примеров таких карт: на первом слое создаются изображения ребер, на следующем слое - формы, уши, нос и т. Д. Мой вопрос: как это возможно?

Если слой 2 применяет фильтры к результату слоя 1, а результат слоя 1 - это ребра, то как вы получите форму из ребра?

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

Есть ли какая-то информация, сливающаяся во время процесса, который я пропускаю, или это нечто большее?

заранее спасибо

1 ответ

Решение

Простой пример: допустим, вы пытаетесь различить простые геометрические формы. Например, прямоугольники из бриллиантов.

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

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

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

Вы можете ознакомиться с размерами входного и выходного сверточного слоя.

Input = W1xW1xD1

Output:
W2 = (W1 - F + 2P)/S + 1
D2 = K

Terminology: K = Number of Filters, F= Spatial Size of Filter, P=ZeroPadding, S=Stride

Вы можете найти это полезным:

https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner's-Guide-To-Understanding-Convolutional-Neural-Networks/

http://cs231n.github.io/convolutional-networks/

Другие вопросы по тегам