CNN的发展历程:算法
1962年,卷积神经网络的研究起源于Hubel和Wiesel研究毛脑皮层的发现局部互连网络能够有效下降反馈神经网络的复杂性。网络
1980年,CNN的第一个实现网络:Fukushima为解决模式识别问题基于神经元间的局部连通性和图像的层次组织转而提出的新识别机。架构
1998年,第一个多层人工神经网络——LeNet5,也是第一个正式的CNN模型(LeCun,用于手写数字分类)。共7层:2个卷积层,2个池化层,3个全链接层,利用BP算法训练参数。机器学习
(以后十年停滞,一因BP算法训练计算量极大,硬件计算能力不足。二因浅层机器学习算法(如SVM)开始发展。)函数
2012年,AlexNet在ImageNet大赛上夺冠,掀起CNN学习热潮。AlexNet总体架构与LeNet-5类似,可是更深。在卷积层使用ReLU函数做为非线性激活函数,在全链接层使用Dropout机制来减小过拟合。学习
2014年,GooleNet在ImageNet夺冠,达到22层。主要创新在于Inception(核心结构),是一种网中网的结构,即原来的节点也是一个网络。深度学习
2015年,ResNet将网络作到152层,引入残差,解决了网络层比较深时没法训练的问题。io
2016年,商汤作到了1207层的CNNM,是截止目前在ImageNet上最深的深度学习网络。神经网络
CNN与普通网络的区别:硬件
CNN能够避免前期对图像复杂的预处理,能够直接输入原始图像,所以在模式分类领域获得了普遍的应用。
CNN包含了一个由卷积层(Convolution Layer)和池化层(Pooling Layer)构成的特征提取器。在普通的神经网络中,一个神经元通常与所有邻接神经元链接,称之为全链接神经网络。而CNN的卷积层,一个神经元只与部分邻接神经元链接。在CNN的一个卷积层中,一般包含若干个特征图(feature map),每一个特征图由一些矩形排列的神经元组成,同一特征图的神经元共享权值,即卷积核(Covolutional Kernel)。卷积核通常以随机小数矩阵的形式初始化,在网络的训练过程当中它进行学习并获得合理的权值。共享权值带来的直接好处是减小了网络各层之间的链接,同时又下降了过拟合的风险。池化能够看作是一个特殊的卷积过程。卷积核池化大大下降了模型的复杂度,减小了模型的参数。
CNN主要用于识别位移、缩放及其余形式扭曲不变的二维图像。一方面,CNN的特征检测层经过训练数据进行学习,这样避免了显式的特征抽取,而是隐式的从训练数据中学习。另外一方面,同一特征图上的神经元权值相同,网络能够并行学习,这是卷积网络相比全链接层的优点。
CNN结构:
CNN基本结构一般包含三层:卷积层+池化层+全链接层。为防止过拟合,有的网络添加了Dropout层。