CNN:

Posted zhibei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CNN:相关的知识,希望对你有一定的参考价值。

(1)卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核可以提取多种特征。一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算提取的特征往往是局部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算,这也就是多层卷积。

(2)池化:降维的方法,按照卷积计算得出的特征向量维度大的惊人,不但会带来非常大的计算量,而且容易出现过拟合,解决过拟合的办法就是让模型尽量“泛化”,也就是再“模糊”一点,那么一种方法就是把图像中局部区域的特征做一个平滑压缩处理,这源于局部图像一些特征的相似性(即局部相关性原理)。

(3)全连接:softmax分类

训练过程:卷积核中的因子其实就是需要学习的参数,也就是卷积核矩阵元素的值就是参数值。一个特征如果有9个值,1000个特征就有900个值,再加上多个层,需要学习的参数还是比较多的。

CNN的三个优点:

sparse interaction(稀疏的交互),parameter sharing(参数共享),equivalent respresentation(等价表示)。适合于自动问答系统中的答案选择模型的训练。

CNN和DNN的区别:

DNN的输入是向量形式,并未考虑到平面的结构信息,在图像和NLP领域这一结构信息尤为重要,例如识别图像中的数字,同一数字与所在位置无关(换句话说任一位置的权重都应相同),CNN的输入可以是tensor,例如二维矩阵,通过filter获得局部特征,较好的保留了平面结构信息。

为何使用Batch Normalization:

若用多个梯度的均值来更新权重的批量梯度下降法可以用相对少的训练次数遍历完整个训练集,栖息可以使更新的方向更加贴合整个训练集,避免单个噪音使网络更新到错误方向,然而也正是因为平均了多个样本的梯度,许多样本对神经网络的贡献就被其他样本平均掉了,相当于在每个epoch中,训练集的样本数被缩小了。batch中每个样本的差异性越大,这种弊端就越严重。一般的解决方法就是在每次训练完一个epoch后,将训练集中样本的顺序打乱再训练另一个epoch,不断反复。这样重新组成的batch中的样本梯度的平均值就会与上一个epoch的不同。而这显然增加了训练的时间。同时因为没办法保证每次更新的方向都贴合整个训练集的大方向,只能使用较小的学习速率。这意味着训练过程中,一部分steps对网络最终的更新起到了促进,一部分steps对网络最终的更新造成了干扰,这样“磕磕碰碰”无数个epoch后才能达到较为满意的结果。

为了解决这种“不效率”的训练,BN首先是把所有的samples的统计分布标准化,降低了batch内不同样本的差异性,然后又允许batch内的各个samples有各自的统计分布。

为什么神经网络高效:

(1)并行的先验知识使得模型可用线性级数量的样本学习指数级数量的变体

(2)学习的本质是什么:将变体拆分成因素和知识

为什么深层神经网络比浅层神经网络更高效?

迭代组成的先验知识使得样本可用于帮助训练其他共用同样底层结构的样本呢

神经网络在什么问题上不具备优势:

不满足并行与迭代先验的任务

 

神经网络的学习就是学习如何利用矩阵的线性变换加激活函数的非线性变换,将原始输入空间投向线性可分/稀疏的空间去分类/回归。增加节点数:增加维度,即增加线性转换能力。增加层数:增加激活函数的次数,即增加非线性转换的次数。

 

对卡在局部极小值的处理方法:

1、调节步伐:调节学习速率,使每一次的更新“步伐”不同;

2、优化起点:合理初始化权重(weights initialization)、预训练网络(pre-train),使网络获得一个较好的“起始点”,如最右侧的起始点就比最左侧的起始点要好。常用方法有:高斯分布初始权重、均匀分布初始权重、Glorot初始权重、He初始权、稀疏矩阵初始权重(sparse matrix)。

 

浅层VS深层

浅层神经网络可以模拟任何函数,但数据量的代价是无法接受的。深层解决了这个问题。相比浅层神经网络,深层神经网络可以用更少的数据量来学到更好的拟合。深层的前提是:空间中的元素可以由迭代发展而来的。

 

防止过拟合:

L2正则化,Dropout(若规律不是在所有样本中都存在,则dropout会删除这样的规律),每个epoch之后Shuffle训练数据,设置early-stopping。加Batch Normalization(BN首先是把所有的samples的统计分布标准化,降低了batch内不同样本的差异性,然后又允许batch内的各个samples由各自的统计分布),BN最大的优点为允许网络使用较大的学习速率进行训练,加快网络的训练速度(减少epoch次数),提升效果。

 

以上是关于CNN:的主要内容,如果未能解决你的问题,请参考以下文章

r-cnn学习系列:从r-cnn到faster r-cnn

我们如何结合 ANN+CNN 和结合 CNN+SVM?

R-CNN/Fast R-CNN/Faster R-CNN

CNN和Transformer相结合的模型

[cnn]cnn训练MINST数据集demo

R-CNN,Fast R-CNN,Faster R-CNN 算法分析比较与总结