#本贴仅做课程作业使用,感谢课程老师愿意提供学习材料#
一、卷积神经网络基础
由于全连接网络有着以下的问题:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合。对于算的慢问题,可以减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络。对于权值过多极易产生过拟合的问题,可以信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。由此,我们得到了“深度”学习中的卷积神经网络(CNN)基础。
1.进化史
卷积神经网络的发展,最早可以追溯到1962年,Hubel和Wiesel对猫大脑中的视觉系统的研究。Hubel和Wiesel记录了猫脑中各个神经元的电活动。他们使用幻灯机向猫展示特定的模式,并指出特定的模式刺激了大脑特定部位的活动。他们通过这些实验系统地创建了视觉皮层的地图。
1980年,日本科学家福岛邦彦在论文《Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position》提出了一个包含卷积层、池化层的神经网络结构。1998年,在这个基础上,Yann Lecun在论文《Gradient-Based Learning Applied to Document Recognition》中提出了LeNet-5,将BP算法应用到这个神经网络结构的训练上,就形成了当代卷积神经网络的雏形。
原始的CNN效果并不算好,而且训练也非常困难。直到2012年,Imagenet图像识别大赛中,Hinton组的论文《ImageNet Classification with Deep Convolutional Neural Networks》中提到的Alexnet引入了全新的深层结构和dropout方法,一下子把error rate从25%以上提升到了15%,颠覆了图像识别领域。
顺着Alexnet的思想,Lecun组2013年提出一个Dropconnect,把error rate提升到了11%。而NUS的颜水成小组则提出了Network in Network,NIN的思想是CNN原来的结构是完全可变的,然后加入了一个1*1conv层。Network in Network的思想是CNN结构可以大胆去变化,由此,Inception和VGG在2014年把网络加深到了20层左右,图像识别的error rate也大幅提升到6.7%,接近人类的5.1%。
2015年,MSRA的任少卿、何凯明、孙剑等人,尝试把identity加入到神经网络中。最简单的Identity却出人意料的有效,直接使CNN能够深化到152层、1202层等,error rate也降到了3.6%。后来,ResNeXt, Residual-Attention,DenseNet,SENet等也各有贡献,各自引入了Group convolution,Attention,Dense connection,channelwise-attention等,最终Imagenet上error rate降到了2.2%。
而在图像检测中,任少卿等人优化了先前的R-CNN, fast R-CNN方法。他们通过其他方法提出region proposal,然后用CNN去判断是否是object的方法,由此提出了faster R-CNN方法。Faster R-CNN的主要贡献是使用和图像识别相同的CNN feature,不仅可以识别图片是什么东西,还可以用来识别图片在哪个位置。
随着人们的深入研究,CNN结构越来越复杂,而CNN突飞猛进的发展,又引发其他领域很多变革。
2.基本概念
CNN的基本思想是用卷积获得图形的特征,一般是用一个3乘3的卷积矩阵,如图所示的卷积矩阵是【1 0 1;0 1 0;1 0 1】,与图像上相应的格子相乘后得到的数就是卷积输出(我们需要的图形“特征”)。
常用的几个步骤:
选择卷积矩阵:一般选择常用的卷积矩阵,比如高斯卷积矩阵【1 2 1;2 4 2;1 2 1】等。
填充(Padding),也就是在矩阵的边界上填充一些值,以增加矩阵的大小方便与卷积矩阵进行卷积,通常用0或者复制边界像素来进行填充。
设置步长:也就是根据图像的大小和卷积矩阵的大小,决定卷积的次数。卷积过程一般是从左往右,从上到下,所得到的结果一般也是一个矩阵数据。
对于多输入通道,卷积核的通道数和输入通道数相同,在每一个通道上进行互相关运算后,把所有通道的值加起来就是输出的值。而对于多输出通道,则是各个通道分开独立进行计算,不同通道采用不同的卷积核。
在通过卷积得到图形的特征矩阵图后,还要进行池化操作(池化的思想是使用局部统计特征,如均值或最大值,解决特征过多问题)
如果使用均值,就是平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。如果使用最大值,就是最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。
3.卷积神经网络的构成:
由多个卷积层和下采样层构成,后面可连接全连接网络
卷积层:𝑘个滤波器
下采样层:采用mean或max
后面:连着全连接网络
学习算法:
二、LeNet-5网络
图中各个结构如下:
INPUT:输入的32*32像素图形
C1卷积层:由6个Feature map构成 ,每个神经元对输入进行5*5卷积 ,每个神经元对应5*5+1个参数,共6个feature map,共有28*28个神经元,因此共有 (5*5+1)*6*(28*28)=122,304连接。
S2池化层:使用平均池化(pooling)操作,窗口大小为2x2,步长也为2,进行下采样,输出特征图尺寸简化至14x14。
C3卷积层:该卷积层有16个卷积核,每个卷积核大小为5x5,输出后特征图的尺寸为10x10。
S4池化层:与S2一样的平均池化和2x2的窗口,输出尺寸为5x5.
C5全连接层:有120个神经元,每个神经元同样对输入进行5*5卷积,与S4全连接,总连接数(5*5*16+1)*120=48120。
F6全连接层:有84个神经元与C5全连接 ,总连接数(120+1)*84=1016。
OUTPUT:由欧式径向基函数单元构成,每类一个单元,输出RBF单元计算输入向量和参数向量之间的欧式距离。
LeNet-5网络与现在网络的区别:卷积时不进行填充(padding) -池化层选用平均池化而非最大池化 -选用Sigmoid或tanh而非ReLU作为非线性环节激活函数 -层数较浅,参数数量小(约为6万)
三、基本卷积神经网络
1.AlexNet网络
网络一共有8层可学习层——5层卷积层和3层全连接层
相对LeNet-5网络的改进
-池化层均采用最大池化
-选用ReLU作为非线性环节激活函数
-网络规模扩大,参数数量接近6000万
-出现“多个卷积层+一个池化层”的结构
-采用ReLU替代 Tan Sigmoid
-用于卷积层与全连接层之后
-在每个全连接层后面使用一个 Dropout 层,以概率 p 随机关闭激活函数
-AlexNet使用两块GTX580显卡进行训练,两块显卡只需要在特定的层进行通信
2.VGG-16网络
进一步的改进
-网络规模进一步增大,参数数量约为1.38亿
-由于各卷积层、池化层的超参数基本相同,整体结构呈现出规整的特点。
3.残差网络
残差网络可以解决梯度消失问题