卷积神经网络 CNN
感受野
感受野(Receptive Field)在卷积神经网络(CNN)中是一个非常重要的概念,它描述了网络中某一层的输出(通常是特征图上的一个像素点)所对应的输入图像上的空间范围。
1. 定义与基本概念
感受野:指的是神经网络中神经元"看到"的输入区域,即卷积神经网络每一层输出的特征图上的像素点在输入图片上映射的区域大小。再通俗点说,就是特征图上的一个点对应输入图上的区域。
局部连接:在卷积层中,每个神经元只与输入数据的一个局部区域相连接,这个局部区域通过卷积核(或滤波器)进行处理。
2. 感受野的特点
层次性:随着网络层次的加深,单个神经元的感受野会逐渐增大。这是因为每一层的输出会成为下一层的输入,从而使得信息的聚合范围扩大。
抽象程度:较低层的神经元通常具有较小的感受野,它们倾向于捕捉局部特征,如边缘等细节信息。而较高层的神经元具有较大的感受野,能够捕捉更抽象的特征,如形状、纹理或对象的部分。
3. 感受野的计算
感受野的大小可以通过数学方式进行计算,这通常涉及到考虑卷积核大小、步长(stride)、填充(padding)以及前面所有层的组合效应。
初始感受野:在第一层,感受野直接等于卷积核的大小。
递归计算:对于后续的每一层,可以使用以下公式来计算感受野:
考虑池化层:如果在卷积层之间有池化层,池化层会减少感受野的增长。如果池化层的步长为Sp ,则需要调整感受野的计算。
4. 感受野的作用
影响网络的感知能力:较小的感受野可以捕捉到更细节的特征,但可能会忽略掉更大范围内的信息;较大的感受野可以捕捉到更全局的信息,但可能会忽略掉更细节的特征。
影响网络的计算复杂度:较小的感受野需要更多的卷积层来提取特征,从而增加了计算复杂度;较大的感受野可以通过较少的卷积层来提取特征,从而减少了计算复杂度。
卷积层
CNN 里面最重要的构建单元就是卷积层
神经元在第一个卷积层不是连接输入图片的每一个像素,只是连接它们感受野的像素, 以此类推,第二个卷积层的每一个神经元仅连接位于第一个卷积层的一个小方块的神经 元
在处理 MNIST(手写数字)数据集 的时候,把图像变成 1D 的,现在直接用 2D
卷积的计算
假设有一个 5*5 的图像,使用一个 3*3 的 filter 进行卷积,想得到一个 3*3 的 Feature Ma
bisa是截距b
计算结果为
彩色图片
在一个特征图里面,所有的神经元共享一样的参数(weights bias),权值共享
不同的特征图有不同的参数
3D图像就是三维图像,三通道图像,例如RGB图像
stride步长
设定卷积核(滤波器)在2D图像上水平与垂直方向上每次运动的跨度
Padding 模式
1.VALID
不适用 zero padding,有可能会忽略图片右侧或底下,这个得看 stride 的设置
2.SAME
必要会加 zero padding,这种情况下,输出神经元个数等于输入神经元个数除以步长 ceil(13/5)=3
SAME 模式在图像外围填充0时会以左少右多的方式去填
VALID模式对于不够下一次卷积的部分会丢弃,会导致一定的特征丢失
Pooling 池化
目标就是降采样 subsample shrink,也可以理解为降维,减少计算负荷,内存使用,参数数量(一定程度上可以防止过拟合)
减少输入图片大小也使得神经网络可以经受一点图片平移,不受位置的影响
正如卷积神经网络一样,在池化层中的每个神经元被连接到上面一层输出的神经元,只 对应一小块感受野的区域。我们必须定义大小,步长,padding 类型
池化神经元没有权重值,它只是聚合输入根据取最大或者是求均值
2*2 的池化核,步长为 2,没有填充,只有最大值往下传递,其他输入被丢弃掉了
1.最大池化
2. 平均池化
上图的卷积核中
1 5
3 2
会得到2,取平均值,向下取整
长和宽两倍小,面积 4 倍小,丢掉 75%的输入值
一般情况下,池化层工作于每一个独立的输入通道,所以输出的深度和输入的深度相同