与传统神经网络的区别
卷积神经网络与常规神经网络具有不同的架构。
常规神经网络通过将输入放入一系列隐藏层来转换输入。每一层由一组神经元组成,其中每一层都与前一层中的所有神经元完全连接。最后,最后一个全连接层——输出层——代表预测。
卷积神经网络有点不同。首先,层被组织成 3 个维度:宽度、高度和深度。此外,一层中的神经元不会连接到下一层中的所有神经元,而只是连接到其中的一小部分。最后,最终输出将减少为单个概率分数向量,沿深度维度组织。
组成部分
- 隐藏层/特征提取部分
在这部分中,网络将执行一系列卷积和池化操作,在此期间检测特征。如果你有一张斑马的照片,这就是网络识别它的条纹、两只耳朵和四条腿的部分。 - 分类部分
在这里,全连接层将作为这些提取特征之上的分类器。他们将为图像上的对象分配一个概率,即算法预测的对象。
特征提取
使用过滤器或内核(这些术语可互换使用) 对输入数据执行卷积,然后生成特征图。
过滤器:绿色方块,权重矩阵
输入:蓝色方块
特征图:红色方块。计算方式是对应方块的乘积相加
绿色方块按照一定步长不断滑动
实际上的卷积是在三维进行(有宽度、高度和深度),有深度是因为图形使用了RGB的颜色通道。
我们对输入进行了多次卷积,其中每个操作使用不同的过滤器。这会导致不同的特征图。最后,我们将所有这些特征图放在一起作为卷积层的最终输出。
就像任何其他神经网络一样,我们使用激活函数来使我们的输出非线性。在卷积神经网络的情况下,卷积的输出将通过激活函数。这可能是ReLU激活函数。
ReLU激活函数:
f(x) = max(0,x)
步幅
步幅是卷积滤波器每次移动的步长。步幅大小通常为 1,这意味着过滤器逐个像素地滑动。通过增加步幅大小,您的过滤器以更大的间隔在输入上滑动,因此单元格之间的重叠更少。
eg:步幅是1
填充
因为特征图的大小总是小于输入,所以我们必须做一些事情来防止我们的特征图缩小。这是我们使用padding (也就是对输入矩阵的填充)的地方。
添加了一层零值像素,用零包围输入,这样我们的特征图就不会缩小。除了在执行卷积后保持空间大小不变之外,填充还可以提高性能并确保内核和步长大小适合输入。
在卷积层之后,通常会在 CNN 层之间添加一个池化层。池化的作用是不断降低维数以减少网络中的参数数量和计算量。这缩短了训练时间并控制过拟合。
池化
最常见的池化类型是max pooling, 它在每个窗口中取最大值。这些窗口大小需要事先指定。这减少了特征图的大小,同时保留了重要信息。
ps:图片资源来自于python小甲鱼