Conv-Neural-Network

為什麼要在卷積層的多個通道上構建濾波器的總和?

  • February 3, 2018

假設我有 RGB 輸入數據(3 個通道)和一個卷積層,它只有一個深度為 3 的濾波器。如果我們對每個通道的捲積結果求和,輸出數據的深度將為 1。但為什麼要總結結果呢?為什麼不建立平均值或一直添加 17?

一些想法:

看起來我們可能會因為求和而丟失信息。例如,如果紅色通道上有一個正邊緣,而藍色通道上有一個負邊緣,它們將相互抵消。好的,每個通道的權重可能會有所不同,這可能會有所幫助,但我仍然看不到求和相對於其他操作的優勢。

R (1. channel) conv Filter 1 [x:x:1] \
                                     \
G (2. channel) conv Filter 1 [x:x:2]    => Sum => output [x:x:1] WHY?
                                     /
B (3. channel) conv Filter 1 [x:x:3] /

編輯:

這是一個更好的圖形(向下滾動到 gif)。 http://cs231n.github.io/convolutional-networks/#conv

好的,每個通道的權重可能會有所不同,這可能會有所幫助,但我仍然看不到求和相對於其他操作的優勢。

確切地。你錯過了權重是可學習的這一事實。當然,最初來自不同通道的邊緣可能會相互抵消,並且輸出張量會丟失此信息。但這將導致較大的損失值,即較大的反向傳播梯度,這將相應地調整權重。實際上,網絡學習捕捉任何通道中的邊緣(或角落或更複雜的模式)。當過濾器與patch不匹配時,卷積結果非常接近於零,而不是大的負數,因此求和中沒有任何損失。(事實上,經過一些訓練,內核中的大部分值都接近於零。)

進行求和的原因是因為它很有效(前向和後向操作都是可矢量化的)並且允許良好的梯度流動。您可以將其視為具有共享權重的複雜線性層。如果你表達的擔憂是真實的,你會在任何網絡的所有線性層中看到同樣的問題:當不同的特徵用一些權重相加時,它們可以相互抵消,對吧?幸運的是,由於前面描述的原因,這不會發生(除非特徵是相關的,例如特製的),因此線性運算是任何神經網絡的關鍵構建塊。

引用自:https://stats.stackexchange.com/questions/326643

comments powered by Disqus