近期一直在看卷积神经网络,想改进改进弄出点新东西来。看了好多论文,写了一篇综述。对深度学习中卷积神经网络有了一些新认识,和大家分享下。

  事实上卷积神经网络并非一项新兴的算法。早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时仅仅用来识别支票上的手写体数字,而且应用于实际。

2006年深度学习的泰斗在《科学》上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力。从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的、有一定应用经验的深度结构。又一次回到人们视线,此时硬件的运算能力也比之前有了质的飞跃,要芯片有芯片要GPU有GPU,还有开源的Caffe框架。于是CNN就起来了。

  纵观眼下已经发表的有关CNN方面的文献,多是側重应用领域。国内期刊上有关CNN的期刊发表得并不多。一般都是从2012年之后開始出现,并且四大学报对CNN方面的文章发表力度还并没有想想中的大,不知道是大家不愿意投呢,还是期刊那对这个领域的东西持犹豫态度,只是CNN方面的学术论文但是非常多,可见非常多学校,非常多老师。非常多学生都在搞这个。国外方面对于CNN的论文就相对多一些了,图像识别。语音识别等方面都有涉猎,与国内不同的是国外发表的文献在理论方面下的功夫要多一些,国内一般都是直接把CNN直接拿来用,老方法新问题,并且效果还不错,可见CNN作为深度学习的重要成员。确实非常强。

  之前一直想着如何对传统CNN进行改进。看了看大家的工作,改进的方向无非是要么在结构上改,要么在训练算法上改,眼下CNN的改进基本上都在遵循着这个框架。

  一、在结构上的改进

  传统的CNN本质上是一个映射的堆叠。图下图所看到的

之所以说它是传统,主要是它对输入形式、卷积核、级联形式、初始化方法都没有严格要求。就使用最原始的卷积核,随机初始化。当然也正是由于他的传统、原始,才使得其有改进的空间。以下说说已有的比較成功的改进方法。

  1、在网络输入上下功夫。传统的CNN呢,直接把图片作为数据输入进去了,从道理上讲刚好符合稀疏表示理论中“像素本身是图像语音最冗余的表示”的观点,可是大家还是希望对图像进行一些预处理,毕竟机器视觉比不上人眼。人的肉眼看东西时可能一下完毕了好多种模式分类的工作,而我们在做研究时,一次一般也就研究一种或者几种特定的模式分类问题。

既然问题是特定的。理论上必定会有对付这样的问题的特效药,就好比我们要识别白纸上的毛笔字,不是必需把整张纸都送进去操作,那样确实信息够全,可是速度太慢。反过来想想,要是条件理想。说不定直接阈值化一把就OK了,尽管信息损失了不少,但重要的信息还在。速度也快。正确率也能够接受,因此须要对图像预处理。可见,并非全部的问题都是直接把图像直接以输入就OK了,做些预处理还是非常有必要,比方颜色分层处理、构建尺度金字塔、提取点什么特征(Gabor、SIFT、PCA等等),都是能够的,因问题而已。

有人在用CNN做显著性检測时就是把图像先进行了一把超像素切割,然后把切割后的超像素作为新的网络输入,并且是三个通道同一时候输入。例如以下图:

        2、特征融合上下功夫。传统CNN就是把图像一层层映射。映射到最后就是特征提取的结果,通俗的讲就好比用筛子筛谷子。一边一边的筛,筛到最后就是精华,但那些中间筛出去的东西呢。肯定不是垃圾,也是包括一定信息,对图像由一定表现能力的。因此何不把这部分的映射结果也加以融合利用,这样得到的特征岂不是更有表现力?有人在做人脸识别的时候就想到了这一点,并努力实现了,例如以下图

他是把各个层的映射结果PCA降维后融合到一起的,效果不错。

  3、在卷积核上加限制。

前面说过。传统CNN就是单纯的卷积核,于是我们想。能不能把那些卷积核改成Gabor核呢?小波核行不行?稀疏映射矩阵是不是也能够。只是那时候的神经网络就不能再叫卷积神经网络了,预计就应该叫深度Gabor卷积网络了吧,重要的是这点还没有人做,说不定以后能够下下功夫,只是已经有人把卷积核改进到加权PCA 矩阵。做出深度特征脸卷积神经网络了。结构例如以下图:

这个看上去有点复杂,事实上就是先对图像进行分块。然后将每一个小块都送入深度网络中进行映射,映射核即为加权PCA矩阵,然后将每层映射结果经过码本聚合。得到终于的特征表示形式。事实上这样的针对特定问题构建特定映射核的方法在理论上是有道理的。比方说之前的场景分类,用Gist特征有奇效。那就最好还是将卷积核改为Gist核,事实上也就类似于Gabor核。弄个深度Gist卷积神经网络来解决场景分类问题。说不定就会有更好的效果,科研重在实验嘛。事实上这样的卷积核的改进和曾经的传统CNN已经有了非常大差别。主要是抽象的借鉴了深度结构的概念,只是我觉得这也正是深度学习的精髓所在。

  4、与其它分类器结合。

卷积神经网络能够看做是特征提取与分类器的结合体,单从它的各个层的映射来看,类似于一个特征提取的过程,提取了不同层次的特征。

但假设映射来映射去,最后就映射到几个标签上,则它又有了分类的功能。但我更倾向于把CNN看成是一个特征提取的手段。那既然是特征提取,就必定要搭配一些好的分类器了,SVM、稀疏表示分了器,都不错,相信两者结合肯定能取得好的效果,只是这部分工作眼下没有多少人做。不知道为什么。

  二、在训练算法上的改进

  一提到算法的改进,涉及到很多其它的是理论的部分,难度比較大。眼下已有的改进主要体如今两个方面:一是对非线性映射函数的修改。二是网络训练的无监督化

  1、非线性映射函数改进

  在CNN每一个映射层之后其结果都会经过一个非线性函数处理,主要是调整映射结果的范围。

传统CNN一般採用sigmoid函数或双曲正切函数(tanh)。后来稀疏表示兴起了,人们发现稀疏的东西效果都比較好,因此我们希望卷积层的映射结果也能尽量稀疏一点。更接近人的视觉反应。对非线性函数的一个最成功的改进就是纠正线性单元(Rectified Linear Units,ReLU),其作用是假设卷积计算的值小于0,则让其等于0,否则即保持原来的值不变。这样的做法所谓是简单粗暴,但结果却能得到非常好的稀疏性。实验说明一切。

  2、训练算法的无监督化

  事实上训练算法的无监督化改进是CNN很重要的一项改进。原因很easy,深度学习须要海量数据,对海量数据进行标注可不是一项简单的工作,更不用说想表情、漂亮度等等这样的抽象标注了。CNN的无监督改进眼下比較成功的仅仅有少数几个方案,当中最具代表性的应该算是2011年J Ngiam等人提出稀疏滤波(Sparse filtering)算法,通过构建特征分布矩阵(feature distributions)。对矩阵依照特征方向求解一次稀疏优化问题。同一时候对每一个样本的特征进行L2范数归一化,终于得到一个具有样本分布稀疏性((Population
Sparsity)、激活时间稀疏性(Lifetime Sparsity)以及高离散性(High Dispersal)等特点的样本分布矩阵。并指出能够通过将这些样本分布矩阵进行多层级联扩展。形成无监督深度学习模型。

事实上这有点像稀疏表示的一点延伸。说白了就是把卷积核改成稀疏字典了,舍弃了原来的BP算法。既然不依赖BP了。自然也就能够实现无监督。稀疏滤波算法在这里一两句话也说不清楚,在这里推荐两篇文献。一个是作者的原始文献,还有一个是它的应用,这两篇文献在谷歌都能够下载得到。要是登陆谷歌出现困难的话再这里给大家提供一种稳定的登陆方法,一个月10元也不贵。

(1)Ngiam, Jiquan,Koh Pang Wei,Chen Zheng hao,Bhaskar Sonia,Ng Andrew Y. Sparse filtering,[C]. Advances in Neural Information Processing Systems 24: 25th Annual Conference on Neural Information Processing Systems,2011:1125-1133.

(2) Zhen Dong,Ming tao Pei,Yang He,Ting Liu,Yan mei Dong,Yun de Jia. Vehicle Type Classification Using Unsupervised Convolutional Neural Network,[C]. Pattern Recognition (ICPR), 2014 22nd International Conference on,2014:172-177.

FQ地址:点击打开链接

 CNN作为深度学习中应用最为广泛的网络模型,最有影响力之中的一个的应用应该算是香港理工大学王晓刚教授团队提出的DeepID人脸识别算法。其三代算法已经达到了99%,确实厉害。以上就是我这一个月来对CNN的理解了。欠妥地方欢迎大家指正,一起讨论,另外因为博客,对非常多算法提出并未给出原始參考文献,须要查阅相关參考文献的能够留言给我。

CNN卷积神经网络新想法的更多相关文章

  1. Deep Learning模型之:CNN卷积神经网络(一)深度解析CNN

    http://m.blog.csdn.net/blog/wu010555688/24487301 本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep le ...

  2. cnn(卷积神经网络)比较系统的讲解

    本文整理了网上几位大牛的博客,详细地讲解了CNN的基础结构与核心思想,欢迎交流. [1]Deep learning简介 [2]Deep Learning训练过程 [3]Deep Learning模型之 ...

  3. [转]Theano下用CNN(卷积神经网络)做车牌中文字符OCR

    Theano下用CNN(卷积神经网络)做车牌中文字符OCR 原文地址:http://m.blog.csdn.net/article/details?id=50989742 之前时间一直在看 Micha ...

  4. Keras(四)CNN 卷积神经网络 RNN 循环神经网络 原理及实例

    CNN 卷积神经网络 卷积 池化 https://www.cnblogs.com/peng8098/p/nlp_16.html 中有介绍 以数据集MNIST构建一个卷积神经网路 from keras. ...

  5. Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现(转)

    Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现 zouxy09@qq.com http://blog.csdn.net/zouxy09          自己平时看了一些论文, ...

  6. CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?

    https://www.zhihu.com/question/34681168 CNN(卷积神经网络).RNN(循环神经网络).DNN(深度神经网络)的内部网络结构有什么区别?修改 CNN(卷积神经网 ...

  7. CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM

    http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...

  8. day-16 CNN卷积神经网络算法之Max pooling池化操作学习

    利用CNN卷积神经网络进行训练时,进行完卷积运算,还需要接着进行Max pooling池化操作,目的是在尽量不丢失图像特征前期下,对图像进行downsampling. 首先看下max pooling的 ...

  9. TensorFlow——CNN卷积神经网络处理Mnist数据集

    CNN卷积神经网络处理Mnist数据集 CNN模型结构: 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5*5,步长为1,卷积核:32个 第一层池化:池化视野2*2,步长为2 第二层卷积 ...

随机推荐

  1. hdu5985[概率dp] 2016青岛icpc现场赛

    #include <bits/stdc++.h> using namespace std; ][]; ][]; ][]; ]; ]; int T, n; double fastpow(do ...

  2. 【bzoj2527】[Poi2011]Meteors 整体二分+树状数组

    题目描述 有N个成员国.现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站. 这个星球经常会下陨石雨.BIU已经预测了接下来K场陨石雨的情况.BI ...

  3. ubuntu--基础环境瞎搞集合

    安装ubuntu系统后有很多东西需要自己瞎搞一下,这里把一些瞎搞的过程记录在这里,方便以后重新装系统后重新配置. 一.安装. 可以在windows下制作启动盘(软碟通),然后开机u盘启动即可安装,预留 ...

  4. jQuery动画的hover连续触发动画bug处理

    一.问题 为元素设置hover上实现动画的效果,当鼠标反复快速进入元素时,动画会在鼠标停止后依然执行,导致动画和鼠标的动作不一致. 二.解决方法 要解决这种问题,可以使用jquery的stop()方法 ...

  5. hihoCoder #1783 又一个重复计数

    题目大意 给定一个长度为 $n$ 的字符串 $S$,定义函数 $f(S)$ 表示 $S$ 的不同回文子串的个数.对于 $1\le l \le r \le n$,定义 $S[l,r]$ 为字符串 $S$ ...

  6. 省选算法学习-dp优化-四边形不等式

    嗯......四边形不等式的确长得像个四边形[雾] 我们在dp中,经常见到这样一类状态以及转移方程: 设$dp\left[i\right]\left[j\right]$表示闭区间$\left[i,j\ ...

  7. css中按钮的四种状态

    css中按钮有四种状态 1. 普通状态2. hover 鼠标悬停状态3. active 点击状态4. focus 取得焦点状态 .btn:focus{outline:0;} 可以去除按钮或a标签点击后 ...

  8. linux删除大量文件

    1.建立一个空目录 mkdir -p /tmp/rsync_blank 2.确立需要清空的目标目录 /data/web/vip/htdocs/tuan 3.使用rsync同步删除(注意目录后面的“/” ...

  9. 阿里云将centos 7 自带的 php 5.4升级为 5.6

    1.php -v PHP 5.4.16 (cli) (built: Nov 6 2016 00:29:02) Copyright (c) 1997-2013 The PHP Group Zend En ...

  10. Chrome扩展修改页面代码执行环境的方法

    Chrome的扩展程序可以通过content scripts向页面中注入js代码,所注入的js代码能够对页面中所有的DOM对象进行操作.由于Chrome在js执行环境上对页面代码和content sc ...