卷积神经网络

图像分类问题与前面的回归是不一样的,模型的输入是固定尺寸的图片,输出是一个Vector(向量)\hat{y}!其长度等于可预测的目标类别数。

首先思考一个问题:一张图片的每个Pixel都是重要的吗?很明显并不是也没必要。对于当前高清图像,考虑每个像素势必会带来大量参数计算,这有可能使模型过拟合。参考动物的视觉功能,理解receptive field(感受野)的概念。它指的是网络中某一层的一个神经元在输入图像上的有效感知区域。

虽然感受野的可以自己定义,但也有常规的方法:默认考虑图像的每个channel,长宽的尺寸被叫做kernel size,下图中的kernel size是3×3。每一个感受野被多个神经元处理。感受野并不是划分的,而是有重叠的,移动的步长是stride,这也是人工设定的hyperparameters。那么怎么应对边缘像素不足一个kernel size的情况呢?这里通常使用padding(铺0等方式)。

接下来是另一个简化:让一些Neuron共享参数。它的出发点是:以图像识别为例,一只鸟的“喙”可能出现在不同的区域,如果在每个区都用一个neuron侦查“喙”,过多的重复工作会带来过多参数量。形象一点理解:学校为大大小小的学院开一门大教室的选修课是合理的。如下图所示,每个感受野内相同功能的神经元共享着相同参数,这组参数被称为Filter_i

感受野+参数共享,这就是卷积层(Convolutional Layer),虽然使得模型弹性减小,Model Bias大,但它是专为影像设计的,不一定适用于非影像任务。

下面来看另一种理解卷积神经网络的理解。

一个卷积层中的Filter,它的内容其实是学习得到的weight,作用是提取对应的pattern,Filter处理得到的结果被叫做Feature Map(特征图)。不同的感受野共享一个pattern的参数,也就等价于用Filter扫过一张图片,这就是Convolution。

Pooling(池化)的概念

如下图所示,去除图片的奇数列和奇数行,并不影响图中目标的特征。池化不需要学习权重参数,它是设定好的工具,主要用于降低特征图的维度,从而减少计算量和防止过拟合。

池化层通常是与卷积层搭配使用,做下采样,降低计算量。在卷积和池化之后,还有一个步骤叫做Flatten,作用是将图片处理的矩阵结果拉直为一个Vector!然后就是输入后面全连接层进行分类等任务了。池化层有时候也不是必要的,比如AlphaGo的设计就不包含Pooling,因为棋局的细微变化就会产生很大的影响。

CNN的局限性:它并不能处理影像的放大、缩小和旋转,因为这些操作都会使矩阵向量发生很大的变化。解决的思路也很简单,使用包括旋转、缩放等操作的数据增强,另外Spatial Transformer Layer可以应对这些变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值