Machine learning 卷积神经网络中的反向传播及滤波器的更新

Machine learning 卷积神经网络中的反向传播及滤波器的更新,machine-learning,neural-network,deep-learning,artificial-intelligence,convolutional-neural-network,Machine Learning,Neural Network,Deep Learning,Artificial Intelligence,Convolutional Neural Network,我正在学习卷积神经网络,现在我对如何实现它感到困惑 我了解常规神经网络和概念,如梯度下降和反向传播,我可以直观地理解CNN的工作原理 我的问题是关于CNN的反向传播。这是怎么发生的?最后一个完全连接的层是规则的神经网络,这没有问题。但是我如何在卷积层中更新过滤器呢?如何将错误从完全连接的层反向传播到这些过滤器?我的问题是更新过滤器 过滤器只是简单的矩阵?或者他们有类似常规NN的结构,层与层之间的连接模拟了这种能力?我读过有关稀疏连接和共享权重的文章,但我无法将它们与CNN联系起来。我真的对CNN

我正在学习卷积神经网络,现在我对如何实现它感到困惑

我了解常规神经网络和概念,如
梯度下降
反向传播
,我可以直观地理解CNN的工作原理

我的问题是关于CNN的反向传播。这是怎么发生的?最后一个完全连接的层是规则的神经网络,这没有问题。但是我如何在卷积层中更新过滤器呢?如何将错误从完全连接的层反向传播到这些过滤器?我的问题是更新过滤器

过滤器只是简单的矩阵?或者他们有类似常规NN的结构,层与层之间的连接模拟了这种能力?我读过有关稀疏连接和共享权重的文章,但我无法将它们与CNN联系起来。我真的对CNN的实现感到困惑,我找不到任何关于这些概念的教程。我不会看报纸,因为我对这些东西不熟悉,而且我的数学不好


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

首先,我可以推荐CNNs简介。也许你可以用这个更好地理解它

简单地回答您的一些问题:

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

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

此外,您还可以找到一个很好的卷积演示


实现这些东西当然是可能的,但对于开始,您可以尝试tensorflow进行实验。至少这是我学习新概念的方式:)

谢谢你的回答。你知道,我读了很多关于CNN的文章,但我读的每一篇文章都以Tensorflow等结尾。但我想知道在幕后发生了什么。例如,为了做卷积层,在阅读了一些教程之后,我认为这可以通过im2col方法实现,但我不知道反向传播是如何发生的。在另一个教程中,我看到conv层的实现是一种使用快速傅立叶变换(fft)的方法。我很困惑!im2col方法是错误的?这有什么标准吗?有效的方法是什么?我的主要问题是conv层和backp…有几种方法可以实现这一点,没有真正的对错。只要选一个,试着让它运行。如果您关心性能,那么最终将使用为此目的开发的解决方案,如tensorflow或pytorch。如果你陷入困境,只需发布你的代码,我们就可以帮助你。你知道,我认为我困惑的原因是我读的每一篇论文或教程都有自己的方法!他们中没有人注意到,这只是一种与其他方法不同的方法,可以通过多种方式实现。我想把它们连接起来,最终得到一个实现方法,但我读到的每一篇文章都让我更加困惑。。。谢谢你在这方面帮助我。你让我开心!