1. 卷积神经网络CNN——起源
参考链接:CNN简史:https://zhuanlan.zhihu.com/p/39068853
神经网络的概念最早是由生物界提出来的,而人工智能界的神经网络很大程度上是在模拟人类的神经元。
影响到CNN起源的相关研究是有关视觉皮层的,其中较著名的是Hubel 和Wiesel1968年做出的工作:将猫麻醉后,把电极插到其视觉神经上连接示波器,并给它们看不同的图像,观察脑电波的反应。
他们在实验中发现:
- 人的视觉皮层是多层级结构的,不同的细胞分层次实现不同的功能:研究发现几层不同的细胞,最早的视网膜和外侧膝状核(lateral geniculate nucleus, 简称LGN)用于接受视觉信息并做初步处理响应光点,然后简单细胞开始响应线条,再之后复杂细胞和超复杂细胞做进一步处理。(多层级结构)
- 不同细胞只对特定的输入感兴趣,而会过滤掉其他的信息。例如有的细胞只响应45°的线条,有的只响应某些颜色。(过滤)
- 即使我们在屏幕上平移灯条,猫的复杂视觉神经元仍然被激活。 (平移不变性)
- 每个神经元不会对整个图像做出反应,它只会对其局部邻域感兴趣。 (局部感知)
Hubel和Wiesel共享了1981年的诺贝尔奖。这项发现不仅在生物学上留下浓墨重彩的一笔,而且对20年后人工智能的发展埋下了伏笔。熟悉CNN的同学可能已经察觉到这项发现和人工神经网络中很多概念都有呼应:多层级结构、过滤、平移不变性、局部感知。
2. CNN发展简史概述
刘昕博士总结了CNN的演化历史,如下图所示:
CNN的起点是神经认知机模型,此时已经出现了卷积结构,经典的LeNet诞生于1998年。然而之后CNN的锋芒开始被SVM等模型盖过。随着ReLU、dropout的提出,以及GPU和大数据带来的历史机遇,CNN在2012年迎来了历史突破:AlexNet。随后几年,CNN呈现爆发式发展,各种CNN模型涌现出来。
CNN的主要演进方向如下:
- 深化网络结构
- 增强卷积功能
- 从分类到检测
- 新功能模块
接下来追逐历史的脚步来了解CNN的发展。
3. Neocoginitro 1980
日本科学家福岛邦彦提出了neocognitron,其目标是构建一个能够像人脑一样实现模式识别的网络结构从而帮助我们理解大脑的运作。在这篇工作中,他创造性的从人类视觉系统引入了许多新的思想到人工神经网络,被许多人认为是CNN的雏形。
论文链接:http://www.scholarpedia.org/article/Neocognitron
Neocoginitro的贡献:
- 脑神经科学结构的计算机模拟
- 提出了现在CNN常用的step-by-step的filter
- 使用ReLU来给网络提供非线性(自组织网络中的赢家通吃和V细胞抑制机制)
- 采用平均池化来做downsampling(C Cell的模糊处理)
- 保证网络的平移不变性(抗变形识别原理)
- 实现稀疏交互
- 提出了卷积神经网络三大重要思想中的2个:稀疏交互(局部感知)和等变表示(池化)
4. LeCun BP 1989
LeCun将反向传播应用到了类似Neocoginitro的网络上来做有监督学习。这下子就像是解开了五指山上的封条,CNN开始逐渐走向各个应用领域。我们先来看这个网络里面定义的卷积操作,他吸取了Neocognitro的稀疏交互的优点,但他和福岛邦彦的网络最大不同在于,我们在生成每个feature map时,在所有的感受野都只用单个神经元。那么整个卷积操作就等价于用一个小尺寸的卷积核去扫描这个输入然后接一个squashing function。这个特性也就是权值共享。
LeCun BP 1989的贡献:
- 使用单个小尺寸卷积核扫描整个特征图输入,提出卷积操作的第三个重要思想:权重共享(卷积操作的三个重要思想:稀疏交互(局部感知)、参数共享(权重共享) )和等变表示(池化))。此操作减少了自由变量的数量,从而降低了过度拟合的风险并提高了泛化能力。参数的减少也加快了训练过程。
- 引入了反向传播(Back Propagation,BP)
- BP神经网络是一种多层的前馈神经网络,其主要的特点是:信号是前向传播的,而误差是反向传播的。
- BP神经网络的过程主要分为两个阶段,第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。
5. Cresceptron 1992
1992年,美籍华裔科学家翁巨杨发表了他的Cresceptron,虽然从结构上来看他的模型没有非常出彩之处,但是这篇论文中的两个trick却被广泛应用至今。
Cresceptron 1992的贡献:
- 数据增强(Data Augmentation),我们将训练的输入进行平移,旋转,缩放等变换操作然后加入到训练集中,一方面这可以扩充训练集,另一方面也提高了算法的鲁棒性,减少了过拟合的风险。
- 最大池化的提出,改变了千篇一律的用平均池化做downsampling的状况
- 均值池化与最大值池化详解:https://blog.csdn.net/appleyuchi/article/details/86571089
6. 开山之作 LeNet-5 1998
LeNet是卷积神经网络的祖师爷LeCun在1998年提出,用于解决手写数字识别的视觉任务。自那时起,CNN的最基本的架构就定下来了:卷积层、池化层、全连接层。LenNet-5共有7层(不包括输入层),每层都包含不同数量的训练参数,如上图所示。
LeNet的特点:
- 卷积神经网络使用三层作为一个系列:卷积、池化、非线性激活函数;
- 使用卷积提取空间特征;
- 使用映射到空间均值下采样(subsample);
- 双曲线(tanh)或S型(sigmoid)形式的非线性(当时网络层数不深,还没有梯度消失的问题);
- 多层神经网络(MLP)作为最后的分类器;
- 层之间的稀疏连接矩阵避免了大的计算成本(局部感知)。
LeNet的贡献:
- 定义了CNN的基本组件,是CNN的鼻祖
7. GPU-CNN 2006
进入到新世纪,第一个突破并不是在算法上的,而是工程上。2006年,研究人员成功利用GPU加速了CNN,相比CPU实现快了4倍。虽然这里没有算法的提升,但是其意义可能比一般的算法提升更大。
GPU-CNN的贡献:
- 开启了神经网络的GPU时代。
8. 王者归来AlexNet 2012
但是由于计算能力限制和SVM的大放异彩,神经网络在21世纪初迷失了近10年。 AlexNet在2012年ImageNet竞赛中以超过第二名10.9个百分点的绝对优势一举夺冠,从此深度学习和卷积神经网络名声鹊起,深度学习的研究如雨后春笋般出现,AlexNet的出现可谓是卷积神经网络的王者归来。
论文链接:ImageNet Classification with Deep Convolutional
Neural Networks
- AlexNet与LeNet模型对比:
AlexNet和LeNet的设计理念非常相似,但也存在显著差异。 首先,AlexNet比相对较小的LeNet5要深得多。 AlexNet由八层组成:五个卷积层、两个全连接隐藏层和一个全连接输出层。 其次,AlexNet使用ReLU而不是sigmoid作为其激活函数。 - 模型结构直观展示:
AlexNet的特点:
- 减少过拟合
- 数据增强(起源于Cresceptron 1992)
- 图像平移、水平反射、光照调整、尺寸缩放等。
- 数据增强总结博文参考:CNN中的数据增强简单总结
- dropout
- dropout详解:CNN 入门讲解:什么是dropout?
- drouput应用场景详解:经验之谈|别再在CNN中使用Dropout了
- 更深的网络
- ReLU
- 使用了ReLU作为激活函数,其实我们之前提到这在1980年的时候就已经被应用过了,不过十几年前LeNet又因为种种原因改为tanh。
- 激活函数的应用场景分析:Sigmoid/Tanh/ReLu激活函数的优缺点
- LRN
- 后来,很多研究者发现 LRN 起不到太大作用,因为并不重要,而且我们现在并不用 LRN 来训练网络
AlexNet的贡献:
- 全新的深层结构
- AlexNet的架构与LeNet相似,但使用了更多的卷积层和更多的参数来拟合大规模的ImageNet数据集。今天,AlexNet已经被更有效的架构所超越,但它是从浅层网络到深层网络的关键一步。
- Dropout
- 实现了Dropout层来避免过拟合
9. ZF Net 2013
ILSVRC 2013的冠军是纽约大学Matthew Zeiler 和 Rob Fergus设计的网络 ZF Net,错误率 11.2%。ZF Net模型更像是AlexNet架构的微调优化版。开发CNN可视化技术“解卷积网络”(Deconvolutional Network)。
论文链接:Visualizing Features from a Convolutional Neural Network
DeConvNet工作的基本原理:
- 每层训练过的CNN后面都连一层“deconvet”,它会提供一条返回图像像素的路径。
- 输入图像进入CNN之后,每一层都计算激活。然而向前传递。
- 现在,假设我们想知道第4层卷积层某个特征的激活值,我们将保存这个特征图的激活值,并将这一层的其他激活值设为0,再将这张特征图作为输入送入deconvnet。
- Deconvnet与原来的CNN拥有同样的滤波器。输入经过一系列unpool(maxpooling倒过来),修正,对前一层进行过滤操作,直到输入空间满。
ZF Net的贡献:
- 开发可视化技术“解卷积网络”(Deconvolutional Network),有助于检查不同的特征激活和其对输入空间关系。CNN领域可视化理解的开山之作,这篇文献告诉我们CNN的每一层到底学习到了什么特征,然后作者通过可视化进行调整网络,提高了精度。名字之所以称为“deconvnet”,是因为它将特征映射到像素(与卷积层恰好相反)
- CNN隐藏层可视化讨论:https://blog.csdn.net/weixin_40500230/article/details/84935287
后续模型敬请期待【卷积神经网络CNN历史漫步(二)】
参考:
- 一文带你了解卷积神经网络CNN的发展史:https://www.jiqizhixin.com/articles/2019-05-27-4
- CNN简史:http://www.lunarnai.cn/2018/07/03/Brief_history_CNN/
- 论文解读(神经网络平移不变性研究):https://zhuanlan.zhihu.com/p/64978969
- 卷积网络的平移不变性:https://blog.csdn.net/niguodehaoma_/article/details/123541301
- CNN中的平移不变性、相等性、位置信息感知:https://www.cnblogs.com/jins-note/p/14170183.html
- (四十二)通俗易懂理解——CNN网络框架演进:LeNet至DenseNet
文章出处登录后可见!