本篇主要阅读、朗读周飞燕的《卷积神经网络研究综述》,2017年,计算机学报。点击
“阅读原文”,可以下载。
综述的文章公式较少,如果希望能够深度研究懂各种 Filtering, Pooling,还需参考其他文章。
本篇前半段,参考 《
神经网络模型 扩展阅读
》。
DeepFace 简介
DeepID
Extra: Problem from Capability Insufficient.
ECG
LCNN
YOLO
ECG Analysis based on CNN
若干个表格比较不同的 CNN 模型
CNN 特点综述
文章摘要
01 深度神经网络特点概述
深度网络结构具有两 个优点:
- (1)可以促进特征的重复利用;
- (2)能够获取 高层表达中更抽象的特征,由于更抽象的概念可根 据抽象性更弱的概念来构造,因此深度结构能够获 取更抽象的表达,例如在CNN中通过池化操作来建立这种抽象,更抽象的概念通常对输入的大部分 局部变化具有不变性。
CNN 网络结构设置为:在增加网络深度时适当减少特征面的数目,同时卷积核的大小保持不变,实验结果表明,深度越深,网络的性能越好;然而随着深度的增加,网络性能也逐渐达到饱和。
02 池化层
池化层紧跟在卷积层之后,同样由多个特征面组成,它的每一个特征面唯一对应于其上一层的一个特征面,不会改变特征面的个数。卷积层是池化层的输入层,卷积层的一个特征面与池化层中的一个特征面唯一对应。
03 全连接层
在 CNN 结构中,经多个卷积层和池化层后,连接着1个或1个以上的全连接层.与 MLP 类似,全连接层中的每个神经元与其前一层的所有神经元进行全连接。全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息。
为了提升CNN 网络性能,全连接层每个神经元的激励函数一般采用 ReLU 函数。最后一层全连接层的输出值被传递给一个输出层,可以采用 Softmax 逻辑回归 (Softmax Regression) 进行分类,该层也可称为 Softmax 层 (Softmax Layer)。对于一个具体的分类任务,选择一个合适的损失函数是十分重要的,Gu 等人介绍了 CNN 几种常用的损失函数并分析了它们各自的特点。通常,CNN 的全连接层与 MLP 结构一样,CNN 的训练算法也多采用 BP 算法。
当一个大的前馈神经网络训练一个小的数据集时,由于它的高容量,它在留存测试数据 (Held-out Test Data 也可成为校验集)上通常表现不佳。为了避免训练过拟合,常在全连接层中采用正则化方法—— 丢失数据 (Dropout) 技术,即使隐层神经元的输出值以 0.5 的概率变为0,通过该技术部分隐层节点失效,这些节点不参加 CNN 的前向传播过程,也不会参加后向传播过程。
对于每次输入到网络中的样本,由于 Dropout 技术的随机性,它对应的网络结构不相同,但是所有的这些结构共享权值。由于一个神经元不能依赖于其它特定神经元而存在,所以这种技术降低了神经元间相互适应的复杂性,使神经元学习能够得到更鲁棒的特征。目前,关于 CNN 的研究大都采用 ReLU + Dropout 技术,并取得了很好的分类性能。
04 特征面
特征面数目作为 CNN 的一个重要参数,它通常是根据实际应用进行设置的,如果特征面个数过少,可能会使一些有利于网络学习的特征被忽略掉,从而不利于网络的学习;但是如果特征面个数过多,可训练参数个数及网络训练时间也会增加,这同样不利于学习网络模型。
Chou 等人提出了一种理论方法用于确定最佳的特征面数目,然而该方法仅对极小的接受域有效,它不能够推广到任意大小的接受域。该文献通过实验发现:
与每层特征面数目均相同的 CNN 结构相比,金字塔架构(该网络结构的特征面数目按倍数增加)更能有效利用计算资源。目前,对于 CNN 网络特征面数目的设定通常采用的是人工设置方法,然后进行实验并观察所得训练模型的分类性能,最终根据网络训练时间和分类性能来选取特征面数目。
05 CNN结构说明
CNN 的实现过程实际上已经包含了特征提取过程,以图5、图6 为例直观地显示CNN提取的特征。
Cao 等人采用 CNN 进行指纹方向场评估,图5 为其模型结构,图5 共有3个卷积层(C1、C3、C5),2个池化层(M2、M4)、1个全连接层(F6)和 1个输出层(O7).输入的大小为 160×160,C1中 96×11×11×1 表示 C1 层有 96 个大小为 11×11 的卷积核,1为它的输入特征面个数,4是卷积核在其输入特征面上的滑动步长,38×38 为每个输出特征面的大小。
卷积层通过卷积操作提取其前一层的各种不同的局部特征,由 图5 可看出,C1 层提取输入图像的边缘、轮廓特征,可看成是边缘检测器.池化层的作用是在语义上把相似的特征合并起来,池化层通过池化操作使得特征对噪声和变形具有鲁棒性。从图上可看出,各层所提取的特征以增强的方式从不同角度表现原始图像,并且随着层数的增加,其表现形式越来越抽象。全连接层 F6 中的每个神经元与其前一层进行全连接,该层将前期所提取的各种局部特征综合起来,最后通过输出层得到每个类别的后验概率
。
06 训练方法
CNN 通过 BP 算法进行有监督训练,也需经过信息的正向传播和误差的反向传播两个阶段。CNN 开始训练之前,需要采用一些不同的小随机数对网络中所有的权值和偏置值进行随机初始化。
使用“小随机数”以保证网络不会因为权过大而进入饱和状态,从而导致训练失败;“不同”用来保证网络可正常地学习训练,如果使用相同的数值初始化权矩阵,那么网络将没有学习的能力。随机初始化的权值和偏置值的范围可为 [-0.5, 0.5] 或者 [-1,1](或者是其它合适的区间)。
在实际应用中,无标注的数据远多于有标注的数据,同时对数据进行人工标注也需要耗费较大的人力。但是为了使有监督 CNN 得到充分的训练并获得较好的泛化能力,又需要大量有标注的训练样本,这一定程度上制约了 CNN 在实际中的应用。
现存的一些无监督学习算法一般都需要调整很多超参数(Hyperparameter),这使得它们难以被利用,对此 Ngiam 等人提出了一种只需调整一个超参数的无监督学习算法—稀疏滤波(Sparse Filtering)。
稀疏滤波只优化一个简单的代价函数 —— L2范数稀疏约束特征,从而得到好的特征表示。在稀疏滤波中,其特征分布矩阵具有如下特点:样本分布稀疏性 (Population Sparsity)、高分散性(High Dispersal)、存在稀疏(Lifetime Sparsity)。文中指出可将稀疏滤波用于深度网络模型中,先用稀疏滤波训练得到一个单层的归一化特征,然后将它们作为第 2 层的输入来训练第 2 层,依此类推。
通过实验,发现使用稀疏滤波贪心算法逐层训练,可学习到一些很有意义的特征表示。Dong等人将稀疏滤波应用于 CNN 的无监督学习,同时使用该 CNN 模型识别交通工具类型。在文献中,采用稀疏滤波作为预训练,并将 CNN 学习到的高级全局特征和低级局部特征输入到 Softmax 层中进行分类。
随后,Dong 等人又采用一种半监督学习 CNN 用于交通工具类型识别中。文中采用大量无标注的数据无监督训练卷积层的卷积核,该无监督算法为稀疏拉普拉斯滤波器,再用一定量的有标注数据有监督训练 CNN 输出层的参数,最后通过 BIT-Vehicle 数据库验证该 CNN 模型的可行性。如果数据集中只有少量的标注数据,同时还需要训练一个大的 CNN 网络,传统的做法是首先进行无监督预训练,然后再采用有监督学习(如 BP算法)进行微调(Fine-Tuning)。
显性训练,是传统的神经网络训练方法,其最大特点是训练过程中有一部分样本不参与 CNN 误差反向传播过程,将该部分样本称为“校验集”。在显性训练过程中,为了防止发生过拟合现象,每隔一定时间就用当前分类模型测试校验样本,这也表明了校验集中样本选取的好坏会影响最终分类模型的性能。在 CNN 分类模型中,为了增加训练样本数,可采用“平移起始点”和“加躁”这两种技术。不妨以一个采样点数为 1×1900 的一维信号为例,设置起始点的范围为 [1,200]。训练过程中,每个样本随机选定一个起始点,截取其后连续的 1700 个点作为网络的输入参与 BP 训练过程,则 CNN 输入维数为 1×1700,显然起始点不同,截取所得的子段也不同。
在文献的校验集中,每幅 ECG 的起始点均为1,实际上起始点也可以不一样,但是在 CNN 的整个训练过程中,必须保持该校验集不变,同时校验集和训练集完全没有交集,其样本为来自不同病人的不同记录。此外,只要对类别的最终判断没有影响,也可通过加躁处理或者对原始数据做某种扭曲变换从而达到增加训练样本的目的。
07 人脸识别
……
点击
“阅读原文” 获取更多信息。