初识卷积神经网络
卷积神经网络的结构图如下:
卷积神经网络的三元素:
1,卷积层conv:每个卷积层由多个卷积矩阵组成,不同卷积矩阵的作用是提取输入对象的不同特征。靠前的卷积层的卷积矩阵提取的越简单的特征,越往后的卷积层提取的特征越复杂和具体。卷积矩阵中的值也可以理解为神经网络的权重的参数,这些参数就是需要训练得到的参数。
卷积矩阵对图像的操作过程如下图:
卷积操作这里还牵扯到卷积矩阵的移动步长,和输入矩阵的padding。
2,池化层pool:池化层的作用是将参数的数量进一步缩小而不影响特征的质量。通过池化函数对前面提取得到的特征进行操作进而减少参数数量。
最大池化的例子如下图:
3,输出层output:
3.1:输出维度
理解每个卷积层输入和输出的尺寸可能会有点难度。以下三点或许可以让你了解输出尺寸的问题。有三个超参数可以控制输出卷的大小。
(1)过滤器数量-输出卷的深度与过滤器的数量成正比。请记住该如何堆叠每个过滤器的输出以形成**映射。**图的深度等于过滤器的数量。
(2)步幅(Stride)-如果步幅是 1,那么我们处理图片的精细度就进入单像素级别了。更高的步幅意味着同时处理更多的像素,从而产生较小的输出量。
(3) 零填充(zero padding)-这有助于我们保留输入图像的尺寸。如果添加了单零填充,则单步幅过滤器的运动会保持在原图尺寸。
我们可以应用一个简单的公式来计算输出尺寸。输出图像的空间尺寸可以计算为([W-F + 2P] / S)+1。在这里,W 是输入尺寸,F 是过滤器的尺寸,P 是填充数量,S 是步幅数字。假如我们有一张 32*32*3 的输入图像,我们使用 10 个尺寸为 3*3*3 的过滤器,单步幅和零填充。
那么 W=32,F=3,P=0,S=1。输出深度等于应用的滤波器的数量,即 10,输出尺寸大小为 ([32-3+0]/1)+1 = 30。因此输出尺寸是 30*30*10。
3.2:输出层
在多层卷积和填充后,我们需要以类的形式输出。卷积和池化层只会提取特征,并减少原始图像带来的参数。然而,为了生成最终的输出,我们需要应用全连接层来生成一个等于我们需要的类的数量的输出。仅仅依靠卷积层是难以达到这个要求的。卷积层可以生成 3D **图,而我们只需要图像是否属于一个特定的类这样的内容。输出层具有类似分类交叉熵的损失函数,用于计算预测误差。一旦前向传播完成,反向传播就会开始更新权重与偏差,以减少误差和损失。
4,小结
-
我们将输入图像传递到第一个卷积层中,卷积后以**图形式输出。图片在卷积层中过滤后的特征会被输出,并传递下去。
-
每个过滤器都会给出不同的特征,以帮助进行正确的类预测。因为我们需要保证图像大小的一致,所以我们使用同样的填充(零填充),否则填充会被使用,因为它可以帮助减少特征的数量。
-
随后加入池化层进一步减少参数的数量。
-
在预测最终提出前,数据会经过多个卷积和池化层的处理。卷积层会帮助提取特征,越深的卷积神经网络会提取越具体的特征,越浅的网络提取越浅显的特征。
-
如前所述,CNN 中的输出层是全连接层,其中来自其他层的输入在这里被平化和发送,以便将输出转换为网络所需的参数。
-
随后输出层会产生输出,这些信息会互相比较排除错误。损失函数是全连接输出层计算的均方根损失。随后我们会计算梯度错误。
-
错误会进行反向传播,以不断改进过滤器(权重)和偏差值。
-
一个训练周期由单次正向和反向传递完成。
参考链接:
http://36kr.com/p/5093311.html
学习补充:卷积神经网络和普通神经网络的区别和联系
卷积神经网络说到底也是神将网络的一种,基本神经元和之间的连接等含义一样。
下面说一下不一样的地方:
1:普通神经网络的上一层节点的输出经过权值全部会算出下一层的某个结点的输入,即所有下一层节点的输入计算包含了上一层所有结点的输出。而卷积神经网络的上一层部分结点(数量和一个卷积矩阵的元素数量一致)的输出经过权值计算作为下一层某个结点的输入,即下一层结点的输入计算只用到了上一层的部分节点的输出而不是全部,如下图所示。
2:卷积神经网络的所有卷积矩阵的元素值就是权值,某一层的所有卷积矩阵的元素值就组成了这一层的所有权值。
3:卷积神经网络的每一层计算权值更换时,按每个卷积矩阵的线来计算。
4:卷积的计算和池化的计算导致卷积神经网络的前向传播和后向传播的计算过程有所不一样,但是原理是一样的。
下面讲一下卷积神经网络的前向个后向传播过程,在这之前要先讲一下普通神经网络的前向和后向传播。