Daha sonraki evrişim katmanları nasıl çalışır?


29

Bu soru, "evrişim katmanlarının tam olarak nasıl çalıştığını" gösterir.

Bir gri tonlamalı görüntüm olduğunu varsayalım . Yani görüntünün bir kanalı var. Birinci tabaka içinde, bir uygulama 3 x 3 ile kıvrım k 1 filtre ve dolgu. Sonra başka bir büklüm katmanı 5 x 5 kıvrımlar ve k 2 filtreler. Kaç tane özellik haritam var?n×m3×3k15×5k2

Tip 1 evrişim

İlk katman idam edilir. Ondan sonra özellik haritasına sahibim (her filtre için bir tane). Bunların her biri n × m boyutundadır . Her bir piksel, yastıklı giriş görüntüsünden 3 ~ 3 = 9 piksel alınarak oluşturulmuştur .k1n×m33=9

Sonra ikinci katman uygulanır. Her bir filtre , özellik haritalarının her birine ayrı ayrı uygulanır . Bu sonuçlar özelliğin her için eşleyen k 1 haritalarda. Böylece , ikinci katmandan sonra k 1 × k 2 özellik haritaları vardır. Yeni özellik haritalarının her birinin her bir piksel alarak oluşturulan got 5 5k2k1k1×k2önceden doldurulmuş özellikli harita haritasından = 25 "piksel".55=25

Sistem k 13 3 + k 25 öğrenmek zorundadır parametrelerini.k133+k255

Tip 2.1 evrişim

Daha önce olduğu gibi: İlk katman uygulanır. Ondan sonra özellik haritasına sahibim (her filtre için bir tane). Bunların her biri n × m boyutundadır . Her bir piksel, yastıklı giriş görüntüsünden 3 ~ 3 = 9 piksel alınarak oluşturulmuştur .k1n×m33=9

Daha önce farklı olarak: Sonra ikinci katman uygulanır. Her bir filtre aynı bölgeye uygulanır, ancak hepsinde önceleri harita bulunur . Bu, özellik haritalarının, ikinci katman yürütüldükten sonra toplamda sonuçlanır . Her yeni özellik haritasının her bir pikseli k 25 5 = 25 k alınarak oluşturulmuşturk2önceden doldurulmuş özellik haritalarının 2 "piksel" değeri alınarak oluşturulmuştur.k255=25k2

Sistem parametrelerini öğrenmek zorundadır .k133+k255

Tip 2.2 evrişim

Yukarıdaki gibi, ancak öğrenilmesi ve diğer giriş özelliği haritaları için basitçe kopyalanması gereken, filtre başına parametre olması yerine, k 13 3 + k 2k 15 5 paragraf öğrenilmesi gereken.55=25k133+k2k155

Soru

  1. Tip 1 mi yoksa tip 2 tipik olarak mı kullanılıyor?
  2. Alexnet'te hangi tip kullanılır ?
  3. GoogLeNet'te hangi tip kullanılır ?
    • Tip 1 diyorsan: Neden konvolüsyonlar mantıklı geliyor? Verileri sadece sabitle çarpmazlar mı?1×1
    • Tip 2 diyorsanız: Lütfen ikinci dereceden maliyeti açıklayın ("Örneğin, derinlemesine bir ağda, iki katlanır zincir zincirlenmişse, filtrelerin sayısındaki herhangi bir eşit artış, ikinci dereceden bir hesaplama artışıyla sonuçlanır")

Tüm cevaplar için, lütfen cevabınızın doğru olduğuna dair bazı kanıtlar (belgeler, ders kitapları, çerçevelerin dokümantasyonu) verin.

Bonus sorusu 1

Havuzlama her zaman yalnızca özellik haritası için mi uygulanır yoksa birden fazla özellik haritası üzerinde de yapılır mı?

Bonus soru 2

Tip 1'in doğru olduğundan ve GoogLe makalesinde yanlış bir şey yaptığımdan eminim. Ancak bir de 3D konvolüsyonu var. boyutunda 1337 özellik haritanız olduğunu ve 3 × 4 × 542×3143×4×5 filtreyeFiltreyi özellik haritaları üzerinde nasıl kaydırırsınız? (Soldan sağa, yukarıdan aşağıya, ilk özellik haritasına kadar ilk özellik haritası?) Tutarlı yaptığınız sürece önemli mi?

Araştırmam


A while later: Analysis and Optimization of Convolutional Neural Network Architectures, especially chapter 2 and Figure 2.2 and Figure 2.3.
Martin Thoma

Yanıtlar:


5

I am not sure about the alternatives described above, but the commonly used methodology is:

Before the application of the non-linearity, each filter output depends linearly on all of the feature maps before within the patch, so you end up with k2 filters after the second layers. The overall number of parameters is 3˙3˙k1+k1˙5˙5˙k2.

Bonus 1: Pooling is done per feature map, separately.

Bonus 2: The order of "sliding" does not matter. In fact, each output is computed based on the previous layer, so the output filter responses do not depend on each other. They can be computed in parallel.


1
I totally forgot about this question. Meanwhile, I wrote my masters thesis about CNNs. Chapter 3 explains how they work.
Martin Thoma

1
To clarify: Type 2.2 is the correct one (described in this answer)
Martin Thoma

1
In case anyone really wants to see this in action, I implemented a deep convolutional neural net in google sheets. You can see the filters, and the input image, pixel for pixel as it works it's way through the CNN, until the CNN predicts the answer: docs.google.com/spreadsheets/d/…
bwest87

5

I have just struggled with this same question for a few hours. Thought I'd share the insite that helped me understand it.

The answer is that the filters for the second convolutional layer do not have the same dimensionality as the filters for the first layer. In general, the filter has to have the same number of dimensions as its inputs. So in the first conv layer, the input has 2 dimensions (because it is an image). Thus the filters also have two dimensions. If there are 20 filters in the first conv layer, then the output of the first conv layer is a stack of 20 2D feature maps. So the output of the first conv layer is 3 dimensional, where the size of the third dimension is equal to the number of filters in the first layer.

Now this 3D stack forms the input to the second conv layer. Since the input to the 2nd layer is 3D, the filters also have to be 3D. Make the size of the second layer's filters in the third dimension equal to the number of feature maps that were the outputs of the first layer.

Now you just convolve over the first 2 dimensions; rows and columns. Thus the convolution of each 2nd layer filter with the stack of feature maps (output of the first layer) yields a single feature map.

The size of the third dimension of the output of the second layer is therefore equal to the number of filters in the second layer.


2

Check this lecture and this visualization

Usually it is used type 2.1 convolution. In the input you have NxMx1 image, then after first convolution you will obtain N_1xM_1xk_1, so your image after first convolution will have k_1 channels. The new dimension N_1 and M_1 will depend on your stride S and padding P: N_1 = (N - 3 + 2P)/S + 1, you compute M_1 in analogy. For the first conv layer you will have 3x3xk_1 + k_1 weights. There is added k_1 for biases in nonlinear function.

In the second layer you have as an input image with size N_1xM_1xk_1, where k_1 is new number of channels. And after second convolution you obtain N_2xM_2xk_2 image (array). You have 5x5xk_2xk_1+k_2 parameters in the second layer.

For 1x1 convolution with k_3 filters and input NxMxC (C is number of input channels) you will obtain new image (array) NxMxk_3, so 1x1 make sense. They were introduced in this paper

Bonus 1: pooling is applied per feature map.

For details please see slides for CNN course on Stanford - you have there nice visualisation how convolution is summed from several input channels.


2
Link-only answers are discouraged -- links can stop working. Can you inline relevant info?
Sean Owen

1
visualization was really helpful. My moment of epiphany was when I realized that the filters are 3D, and not 2D.
kmace

1
Great links, sorten stuff out for me. But your answer seems inconsistent with what’s said in the links, specifically in conv layer 2 each receptive field is 3D with dimensions 5x5xk_1 so the number of parameters should be 5*5*k_1*k_2 (plus bias).
Daniel Schlaug

@DanielSchlaug you are right, I corrected the answer.
pplonski

1

The first layer consists of k1 kernels with size 331 to give k1 feature maps which are stacked depth-wise.

The second layer consists of k2 kernels with size 55k1 to give k2 feature maps which are stacked depth-wise.

That is, the kernels in a convolutional layer span the depth of the output of the previous layer.

A layer with 1×1 convolutional layer actually has kn kernels of size 11kn1.

Speculation:

Bonus question 2 is not something I'm familiar with, but I will guess the depth parameter in the convolution becomes an extra dimension.

e.g. If the output of a layer is size mnkn, a 3D convolution with padding would result in an output of size mnkn+1kn

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.