CNN(Convolutional Neural Network)卷积神经网络
一、引入
解决图像分类问题,假设图像是固定大小的,并且是一个Tensor(张量:超过二维的矩阵),我们考虑将这个Tensor变为一个多维向量作为网络的输入,同时使用全连接的方式,这样的结果是参数会非常的多,从而产生过拟合的情况。
这个时候,就要根据图像的特性去对网络进行调整,人类识别物体时大多数情况是根据物体特征来判断的,根据这种的特点,我们可以考虑让一个神经元来处理一个特定的部分(Receptive field),但是这个特定部分可以被多个神经元处理。
程序处理问题,一般都是规规矩矩的,按照某种特定预设模式,所以对于Receptive field的选择也是根据某种策略,一般是通过kernal size的设置,stride的设置和padding的设置。
为了更加减少参数的数量,可以通过共享参数来实现,共享参数实际就是用一个filter扫过整张图片,这个过程就叫做卷积。
Pooling——在卷积后的tensor上根据某些规则在卷积核的范围内选出一个代表。
filter的高度就是上一层的channels的数目 网络越深,同样大小的卷积核可以侦测到的图像范围也就越大
二、CNN做影像识别的过程
Flatten:将张量拉直成向量
思考
1、为什么参数越多,就会过拟合?
2、如何划分Receptive field会更好?
答:一般用正方形,kernal size一般为3*3,一般使用64或128个神经元去连接。
3、那么使用Receptive field和参数共享,参数数量减少,模型弹性下降,会不会出现覆盖不到最优的情况?
答:CNN就是根据图像的特点进行设计的,所以即使参数很少也能表现的不错,但是放到其他应用场景可能就不太行。
4、难道RGB三个通道之间是没关系的吗?
5、Pooling起什么作用有什么好处?
答:我觉得使用了pooling会使一个卷积核可以侦测到更大的的范围,看的更广了,同时可以减少convolution的次数,但是使用了pooling会使得侦测细节的能力降低。
6、softmax是干嘛的?
答:输出节点的输出值范围映射到[0, 1],并且约束各个输出节点的输出值的和为1的函数
7、卷积的次数是有限的,如果图片比较小,那么卷积的次数不就也非常小?这样会不会影响结果?