【问题标题】:Can I view convolutional neural network as fully connected neural network我可以将卷积神经网络视为完全连接的神经网络吗
【发布时间】:2017-06-14 21:30:13
【问题描述】:
例如,有一个 3 x 3 的图像,
一个具有两个 2x2 滤波器的卷积神经网络对图像进行卷积
最终输出尺寸为2x2x2
我可以将上面的过程看成如下吗?
由于 2x2 滤镜,在整个图像上滑动后,我得到了 4 个小图像
并使用这 4 个小图像作为全连接神经网络的输入
最后,我也能得到8个输出
我不太了解 CNN 中的反向传播,所以我试图从经典的全连接神经网络中理解它。
通过输入一个小图像,我们可以更新一次全连接神经网络中的权重,和更新CNN中过滤器的权重是一样的吗?
我想对了吗?
【问题讨论】:
标签:
machine-learning
backpropagation
【解决方案1】:
简而言之,是的。您可以将 CNN 视为(以及其他可能的解释):
- 具有卷积运算和直接为其计算梯度的神经网络(典型方法)
-
一个具有权重共享的全连接网络,因此为简单起见,我们假设输入是大小为 3 的 1d,并且您的内核大小为 2,所以看起来像
[X1 X2 X3] 转换 [w1 w2] = [X1w1+X2w2 X2w1+X3w3]
这相当于拥有一个权重 vij 的全连接网络,意思是“第 i 个输入神经元和第 j 个隐藏神经元之间的权重”
X1
X2 h1 = X1v11+X2v21+X3v31
X3 h2 = X1v12+X2v22+X3v32
因此,如果您输入v31=v12=0 和v11=v22,v21=v32,您将获得完全相同的网络。所谓平等,我的字面意思是这是同一个变量(因此称为权重共享)。
-
小型神经网络的集合(同样,具有权重共享),它们连接到不同的小块输入(您正在提议)。所以你的整个模型看起来像:
/-patch 1 -- shared fully connected net\
Input --splitting----patch 2 -- shared fully connected net--merging---
. .
. .
\-patch K -- shared fully connected net/
这只是同一对象的三个视图,在这两种情况下,如果您计算偏导数(梯度),您最终会得到完全相同的方程。