本文主要是介绍CV学习笔记:综述论文赏析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
学习内容:
卷积神经网络研究综述论文学习笔记
一. 引言部分
二. 卷积神经网络概述(对各部分进行解释)
三. 至今为止,对CNN进行的改进与尝试
四. 训练模型的方法与开源工具
五. 实际生活中的应用
六. CNN参数设置的一些探索
七. 总结
八. 参考文献
论文简介:
以上,便是该篇论文的八个板块。
本文从计算机视觉的历史出发,着重介绍了CNN各部分的作用与网络合理化设置的方法,之后点明了CNN后期进行的算法的改进与实际训练方式。再之后引入生活中的例子和探索参数设置的合适值或区间。最后总结并给出参考文献
二.概述CNN:
作为CNN—Model的基本组成单元。起作用如下图
其中:
X1……Xn表示上层神经元传出的信号值
Ωij表示上层第i个神经元传向该层第j个神经元的权值
Bj表示该层第j个神经元的偏置
∑表示对上述w1j * X1+……+Xi * wij+……+Xn * win+bj求和,作为该神经元的总输入
F为激活函数
Yj为该层第j个神经元的信号输出值
2.2多层感知器(Multilayer Perceptron ,MLP)
结构:输入层 ——> (多个)隐层 ——> 输出层
特征:可以解决单层感知器无法解决的线性不可分问题
例如:异或门
0 0 1
0 1 1
1 0 1
1 1 0
无论如何,我们都无法在单层(线性)条件下,用一根直线将实心点与空心点分开,仅由上述一种办法——曲线(MLP)
2.3 卷积神经网路
引入:感受野,仿生学知识,可以有效挖掘出存在于自然的局部相关性
结构:输入层——卷积层——取样层——全连接层——输出层
每个卷积层输出特征面的大小如下图
激活函数设置:Sigmoid(多用于早期以及二分类)tanh ReLU
以上均为不饱和非线性函数(Non—Saturating Nonlinearity)
解决梯度爆炸/消失问题
同时加快收敛速度
CNN性能影响因素
- 层数
- 特征面数目
- 网络结构
实验表示:
1).增大深度可以显著提高准确率(一般为最优)
2).增加特征面数量也可以提升准确率
3).一个卷积层比一个全连接层作用更大
4).网络深度比卷积核大小更重要
5).过度的减少特征面数目和卷积核大小会损害网络准确性,并且会导致网络更快的饱和
取样层(Pooling Layer)
特点:紧跟在卷积层之后
每个特征面唯一对应上一层的一个特征面(不改变特征面个数)
作用:通过降低特征面的分辨率来获得具有空间不变性(Invariance)的特征起到二次提取特征的作用
保留主要特征的同时减少参数(防止过拟合,提高model泛化能力)
池化方法
1) 最大池化
2) 均值池化
3) 随机池化
4) 混合池化
5) 重叠池化
全连接层
结构:输入,隐层,输出
全连接层每个神经元一般采用ReLU
输出则采用Softmax多分类方法
Dropout正则化
对于每次输入到网络中的样本,由于Dropout,其网络结构不相同,由于权值共享,其降低了神经元之间相互适应的复杂性,使每次训练均是一次全新的网络,更加具有鲁棒性。
特征面
作用:少:导致一些有利的特征被忽略
多:参数格式与网络训练时间会延长
三.CNN改进算法
3.1 NIN(Network In Network)
CNN中的卷积滤波器GLM(Generalized Linear Model)
其特点为每个卷积层均采用多个卷积核串联,再将多个结构并联,最后在统一池化并合并,而不是以往的线性卷积。据研究表明,其相较于普通CNN可以表达的非线性函数种类更多,学习能力和拟合能力更强。
3.2空间变换网络(Spatial Transformer Network ,STNs)
1).本地化网络
以一个batch的图像的四维张量表示(宽,高,通道,batch_size)
它的作用使确定对图形进行平移,旋转,聚焦的比例
2).采样网格生成器
使用上述生成的参数进行变换
3).变换后索引的双线性插值
因为一些值在改变后无法有一个确定的像素点替代比如(1,1)到(根2,0),为确定变换后像素应所在位置,使用最邻近的四个像素点进行插值实现
3.3 反卷积
涉及内容过多,有机会再展开
四.训练方法与开源工具
1). CNN开始训练之前,需采用一些不同的小随机数对网络中的所有权值和偏置值进行初始化
小是为了容易激活,不同是为了能够训练
2).一般CNN为有监督的训练,但由于有标签数据数量不足,制约了CNN发展。但CNN也可以进行无监督训练,比如稀疏滤波算法(Sparse Filtering)
特点:
- 样本分布稀疏性:也就是样本的特征由于其具有独特性,只有少数具有特征的值不为零,剩下的均为零
- 存在稀疏: 好的特征应该是具有区分性的,这样才可以区分样本。例如需要区分人脸和人手,那么很明显,肤色不是区分性的特征,因为人脸和人手都有肤色。但如果看有没有眼睛,那么就很容易区分是人脸还是人手了,所以眼睛就是一个区分性的特征。所以要区分样本,就要选择样本独有的,而不是大家都有的特征。稍微学术点的表达就是,每个特征只允许在少量的样本内被激活。也就是说,在特征矩阵中,每一行(一种特征)应该只有少量的非零元素。这个特征的属性被称为lifetime sparsity(存在稀疏)。
- 高分散性:对每一行(一种特征在不同样本的时候的不同取值)的特征的分布,应该和其他行的特征的分布相似,或者说每种特征都应该具有相似的统计特性。具体来说,对矩阵的每一行,我们取该行所有元素(一种特征在不同样本的时候的不同取值)的平方后的均值作为其统计特性的描述。每一行都存在一个均值,那么每行的均值都应该是一样的,这样就可以认为所有的特征都具有相似的分布。这种属性我们称之为high dispersal(高分散性)。但对于一个好的特征描述来说,这个属性并不是必要的。但它可以防止特征的退化,也就是可以防止提取到相同的特征(如果提取到相同的特征,那么特征既冗余,又没有增加信息量,所以一般都要求提取到的特征是正交的)。对于过完备的特征表达。high dispersal可以理解为只有很少的inactive不活跃的特征。例如,PCA编码一般不会满足high dispersal,因为大的特征值对应的特征向量(也就是特征code)大部分总是活跃active的。
以上便是本文的知识部分,后面主要是对与其开源工具的比对,cv在不同领域的运用与遇到的瓶颈,未来的展望以及总结。本文参考了多篇CSDN文章,以及NIN,正则化,dropout,Sparse Filtering论文。仅作为学习笔记,谢谢大家。
主要参考:
http://blog.csdn.net/itplus/article/details/22071035
这篇关于CV学习笔记:综述论文赏析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!