lecture5 CNN
结构
- CNN与一般神经网络类似,特点就是图像在卷积网络中大幅减少了网络中的参数。
- 普通神经网络是全连接结构,数据量大的话参数太多。既浪费资源,又容易过拟合。
- 卷积层神经元按三维排列,深度、宽度、高度。卷积网络包含卷积层、池化层和全连接层。
- 以CIRAR-10为例,Input是[32*32]的RGB图,维度为32*32*3。卷积层计算一小部分区域与权重的点积,如果用12个核,输出维度32*32*12. RELU层是激活函数,输出矩阵32*32*12。池化层进行下采样,输出16*16*12,全连接层计算10类别得分,输出矩阵1*1*10。
- 每个层的输入是3D数据,用一个可导的函数变换为3D的输出数据。
卷积层
- 卷积层参数包含一系列滤波器,用每个小滤波器,逐步在整个图像滑动,与图像每一小部分做点积运算,产生2维激活图。网络会让滤波器学习到它看到某些视觉特征被激活,可能是边界或一些斑点、形状等。
- 3个超参数控制卷积层输出数据体的尺寸:深度、步长和零填充(用0填充边缘)。输出数据体的深度和滤波器数量一致,每个滤波器寻找不同的东西。输入数据体尺寸W,感受野尺寸(核)F,步长S,零填充数量P,则输出尺寸为(W−F+2P)S+1 ( W − F + 2 P ) S + 1 。如输入7*7,滤波器3*3,步长为1,填充为0,则输出5*5。这个尺寸如果不是整数就会引发错误。
- 参数共享减少了参数个数。如果滤波器能激活图像这一部分该特征,也能激活另一部分。有时候参数共享假设没有意义,特别是一些中心结构,我们就期望图片不同位置学习到不同特征。如人脸,眼睛特征或头发特征会在图片的不同位置被学习,成为局部连接层。
- 如下图,输入尺寸W=5,步长S=2,填充P=1,滤波器尺寸F=3,输出为3.输入图像的三层,分别于滤波器对应位置相乘求和(可以看做输入的矩阵与滤波器矩阵都拉成一行),再加偏置得到输出。
- 这个方法占用太多内存,因为很多输入值被复制了很多次,可以用BLAS接口高效做矩阵乘法。-
- 过滤器可以不是连续的,可以有间隔。扩张卷积,如w[0]x[0]+w[1]x[2]+w[2]x[4]。扩张卷积常常与正常卷积联合起来用,因为可以用更少的层数汇集图片特征。
池化层
- 池化层减少参数,防止过拟合。常用的形式是取每2*2区域中最大值,另外还有平均数等形式。一般的,最大汇聚效果比平均汇聚好。
- 在生成模型时,如变化自编码器和生产性对抗网络,弃用汇聚层很重要。有时候通过在卷积层中使用更大的步长降低数据体尺寸。
- 归一化层:归一化层效果有限,逐渐不流行。
层的尺寸设置规律
- 输入层,2的倍数,常用32,64,96,224,384,512
- 卷积层,一般3*3最多5*5,步长为1,将空间维度降采样都由汇聚层完成。零填充为了保持输入数据空间维度不变,边缘信息不被过快损失。如果受内存限制,有时候第一层选用较大滤波器,步长为2。如AlexNet中,滤波器11*11,步长为4.
- 汇聚层或叫池化层,2*2感受野。