较深层如何从前一层学习到卷积网络中的特征图

时间:2019-02-05 06:54:49

标签: neural-network conv-neural-network convolution biological-neural-network

我读了很多有关卷积网络的文章,但我仍然想念一个重要的部分。

假设我们有一个带有32个滤镜的conv2D层:

我知道这些过滤器权重是在开始时随机初始化的,在训练过程中会形成这些过滤器。 因此,在第一层,它们开始检测边缘。

现在,在池化之后,我们有了另一个转换层(再说32个过滤器),它将对上一层的结果应用过滤器。

因此,第2层将对第一层的这32个输出中的任何一个应用32个过滤器。 我看到了许多这些特征贴图的示例:第一层产生边缘的图片,第二层产生形状,耳朵,鼻子等。 我的问题是这怎么可能?

如果第2层在第1层结果上应用了过滤器,而第1层结果是边缘,那么如何从边缘获得表单?

我在这里显然错过了一些事情,请帮助我理解卷积网中的下一层如何使用上一层(线条和边线只是特征)的上一层来生产更丰富的特征,例如形状,眼睛,面部?

在我丢失的过程中是否存在一些信息合并?或者更多?

预先感谢

1 个答案:

答案 0 :(得分:2)

简单示例:假设您尝试区分简单的几何形式。例如。钻石制成的矩形。

在第一层上,您具有各种边缘检测器。当他们检测到水平边缘时会触发某些事件,当它们检测到垂直边缘时会触发某些事件,而当看到对角线边缘时就会触发其他事件。

第二层现在可以将这些输入组合成更复杂的形状。 因此,如果在第一层检测到垂直边缘和水平边缘,则会触发一个过滤器/检测器。这是矩形的过滤器。

当第一层检测到对角线边缘时,另一个滤镜将触发。这是钻石的过滤器。

您可能会让自己熟悉卷积层的尺寸和输出。

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/