Task06 卷积神经网络(CNN)
学习地址
最流行的神经网络架构—CNN
如何用FullyConnectedNetwork分类image
- 全连接网络的问题
- 将输入image转为3-D的Tensor,再flatten,送进全连接网络
- 存在的问题:参数量太多,容易过拟合
- 图像处理里,用全连接提取特征并不好用
- 考虑图像本身的特性,每个neuron为了提取某种特征,并不需要通过整张图片,只关心一小部分即可(局部特征) —> 引申出卷积连接
- 同一特征可能出现在图片的不同位置 —> 引申出权重共享
- 卷积连接 + 权重共享 —> 使得参数量大为减少
构建ConvolutionalNeuralNetwork分类image
-
简化1:卷积连接取代全连接
- Receptive field:感受野
- 每个neuron只关心一片感受野,并非考虑所有输入
- 不同neuron也可以关心同一片感受野(输出多个通道)
- 感受野也可以定制,比如矩形
- 一般图片处理里,kernel size 设置为 3x3,stride 设置为1或2
- 如果Receptive field超出imgae外面了,可以通过padding解决
-
简化2:权值共享(Parameter sharing)
- 因为同一 pattern 可能出现在不同的区域,所以我们可以让不同的receptive field 的 neuron 共享卷积核参数
- 注意:同一 receptive field 的 不同 neuron 不会共享参数
- 输出的 feature map 的个数取决于 filter 的个数即通道数
- 权值共享其实就是将卷积核依次扫过整张输入image,这其实就是 convolution,也就是卷积层名字的原因
-
简化3:Pooling
- 原因:将pixels 进行下采样不会改变图片的object
- pooling 比较像 activate function,没有参数需要学习,只是一个 operator
- 常见的版本有 Max Pooling 和 Average Pooling,常见的尺寸 2x2,3x3
-
卷积层的益处
- 通过限制网络的弹性,降低 overfitting
- 通过限制网络的弹性,降低 overfitting
whole CNN
- 卷积层 + 池化层 (交替连接) + flatten + fully connected + softmax
- 也可以不用池化层
CNN局限
- 不能处理scaling和rotation
- 考虑spatial transformer layer