卷积神经网络中的反向传播以及如何更新过滤器

时间:2018-05-13 05:49:41

标签: machine-learning neural-network deep-learning artificial-intelligence convolutional-neural-network

我正在学习Convolutional Neural Network,现在我对如何实现它感到困惑。

我了解常规神经网络和Gradient DescentBack Propagation等概念,我可以理解CNN是如何直观地运作的。

我的问题是关于CNN的反向传播。怎么回事?最后完全连接的层是常规神经网络,没有问题。但我如何更新卷积层中的滤镜?我怎样才能将完全连接层的错误传播到这些过滤器?我的问题是更新过滤器!

过滤器只是简单的矩阵?或者他们有像常规NN的结构,层之间的连接模拟这种能力?我读到了Sparse ConnectivityShared Weights但我无法将它们与CNN联系起来。我真的很困惑实施CNN,我找不到任何谈论这些概念的教程。我不能读论文,因为我是这些东西的新手,我的数学并不好。

我不想使用TensorFlow或类似这样的工具,我正在学习主要概念并使用纯Python

1 个答案:

答案 0 :(得分:0)

首先,我可以向CNN推荐this。也许你可以用这个来更好地理解它。

简要回答一些问题:

我们假设您想使用CNN进行图像分类。图片由NxM像素组成,有3个通道(RBG)。要在其上应用卷积图层,请使用过滤器。滤波器是(通常但不一定)二次形状(例如PxP)的矩阵,以及与其所应用的表示的信道数相等的多个信道。因此,第一个Conv层滤波器也有3个通道。通道是过滤器的层数,可以这么说。

将过滤器应用于图片时,您会执行称为离散卷积的操作。您将过滤器(通常小于图像)并逐步将其滑过图片,然后计算卷积。这基本上是矩阵乘法。然后在其上应用激活功能,甚至可以应用池化层。需要注意的重要一点是,此层上所有已执行卷积的滤波器保持不变,因此每层只有P * P参数。您以某种方式调整过滤器,以便尽可能地适合训练数据。这就是为什么它的参数被称为共享权重。应用GD时,您只需将其应用于所述滤镜权重即可。

另外,你可以找到一个很好的演绎here

实现这些东西当然是可能的,但是对于初学者来说,你可以尝试使用tensorflow进行实验。至少这是我学习新概念的方式:)