一、卷积神经网络基础
由于全连接网络有着以下的问题:链接权过多,算的慢,难收敛,同时可能进入局部极小值,也容易产生过拟合。对于算的慢问题,可以减少权值连接,每一个节点只连到上一层的少数神经元,即局部连接网络。对于权值过多极易产生过拟合的问题,可以信息分层处理,每一层在上层提取特征的基础上获取进行再处理,得到更高级别的特征。由此,我们得到了“深度”学习中的卷积神经网络(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
后面:连着全连接网络
学习算法:
卷积NN的BP算法:下采样层
如果当前是卷积层,下一层为下采样层,误差如何从下采样层回传
假设为2*2核平均池化
卷积NN的BP算法:卷积层+卷积层
卷积NN的BP算法:卷积层+全连接层