训练卷积神经网络

机器算法验证 机器学习 神经网络 卷积 反向传播 卷积神经网络
2022-04-10 17:33:36

根据我对卷积神经网络的研究,这种网络中的每一层都有一个下采样操作,其中降低了图像的分辨率,以提高网络的泛化能力。因此,CNN 可以由卷积和子采样层的交替组成。然而,当使用反向传播来训练卷积神经网络时,我不太明白如何训练卷积层。当你在训练一个卷积层的时候,难道不需要下一层的权重来计算delta吗?根据我对反向传播的理解,找到隐藏层增量的方程如下:

Neuron.Delta = Neuron.Output * (1 - Neuron.Output) * ErrorFactor

但是,要找到 ErrorFactor,您需要当前层与下一层之间的连接权重。如果下一层是子采样层,则不会有任何权重可用于计算 delta。我目前对这个问题的解决方案是简单地查看下一层的权重来计算当前层的增量。所以,如果第 1 层是卷积层,第 2 层是子采样层,第 3 层是卷积层,我会查看连接第 2 层和第 3 层的权重来计算第 1 层的 delta。这是对如何训练卷积神经网络?

2个回答

如果我理解正确,问题是如果你有池化层,如何训练网络?好吧,池化层中的权重与“正常”层中的权重没有太大区别。想象一下,您有一个网格大小为 3x3 的最大池化层。进一步想象,对于给定的训练示例,第 5 个像素(即位置 (2,2) )在前向传播中具有最大值,即其值已通过最大池化层。在对该样本进行反向传播时,您的 5 号像素和池化输出之间的权重仅为 1,而其他 8 个像素的权重为零。并且由于最大池化不做任何进一步的转换,因此使用的误差来自最大池化层之后的层。对于更数学的公式,有一个不错的网站:http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/

反向传播“只是”将链式法则与动态规划相结合的一个很好的方法,这样您就可以获得一种有效的方法来计算网络相对于其参数的梯度。

能不能计算梯度不取决于有没有权重。即使没有权重,您仍然需要计算子采样层的导数。如果您认为二次采样只是一种非常特殊的传递函数,则很容易想象这一点。