CNN相关知识总结

CNN简介

卷积神经网络(Convolutional Neural Network,CNN)是一种深度的监督学习下的机器学习模型,具有极强的适应性,善于挖掘数据局部特征,提取全局训练特征和分类,它的权值共享结构网络使之更类似于生物神经网络,在模式识别各个领域都取得了很好的成果。CNN是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。

CNN节省训练开销的方式是权共享weight sharing,让一组神经元使用相同的权值。

它的三个基本概念为:局部感受野(Local receptive fields),共享权重(Shared weights),和池化(Pooling)。

CNN背景

1966年,Minisky和Papert在他们的《感知器》一书中提出了上述的感知器的研究瓶颈,指出理论上还不能证明将感知器模型扩展到多层网络是有意义的。这在人工神经网络的历史上书写了极其灰暗的一章。对ANN的研究,始于1890年开始于美国著名心理学家W.James对于人脑结构与功能的研究,半个世纪后W.S.McCulloch和W.A.Pitts提出了M-P模型,之后的1958年Frank Rosenblatt在这个基础上又提出了感知器,此时对ANN的研究正处在升温阶段,《感知器》这本书的出现就刚好为这刚刚燃起的人工神经网络之火泼了一大盆冷水。一时间人们仿佛感觉对以感知器为基础的ANN的研究突然间走到尽头,看不到出路了。于是,几乎所有为ANN提供的研究基金都枯竭了,很多领域的专家纷纷放弃了这方面课题的研究。

CNN结构

卷积神经网络CNN的结构一般包含这几个层:

  • 卷积层(Convolutional layer),使用卷积核进行特征提取和特征映射。卷积神经网路中每层卷积层由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法优化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网络能从低级特征中迭代提取更复杂的特征。

  • 线性整流层(Rectified Linear Units layer, ReLU layer),或称激励层、激活层。由于卷积也是一种线性运算,因此需要增加非线性映射。这一层神经的激励函数(Activation function)一般使用线性整流(Rectified Linear Units, ReLU)f(x)=max(0,x),层次越深,相对于其他的函数效果较好,其他的激活函数还有Sigmod,tanh函数等,但是sigmod和tanh都存在饱和的问题,如上图所示,当x轴上的值较大时,对应的梯度几乎为0,若是利用BP反向传播算法, 可能造成梯度消失的情况,也就学不到东西了。

    在每个卷积层之后,通常会立即应用一个非线性层(或激活层)。其目的是给一个在卷积层中刚经过线性计算操作(只是数组元素依次(element wise)相乘与求和)的系统引入非线性特征。过去,人们用的是像双曲正切和 S 型函数这样的非线性方程,但研究者发现 ReLU 层效果好得多,因为神经网络能够在准确度不发生明显改变的情况下把训练速度提高很多(由于计算效率增加)。它同样能帮助减轻梯度消失的问题——由于梯度以指数方式在层中消失,导致网络较底层的训练速度非常慢。ReLU 层对输入内容的所有值都应用了函数 f(x) = max(0, x)。用基本术语来说,这一层把所有的负激活(negative activation)都变为零。这一层会增加模型乃至整个神经网络的非线性特征,而且不会影响卷积层的感受野。

    CNN激励函数

参见 Geoffrey Hinton(即深度学习之父)的论文:Rectified Linear Units Improve Restricted Boltzmann Machines
作者:机器之心https://www.zhihu.com/question/52668301/answer/131573702

  • 池化层(Pooling layer),进行下采样,对特征图稀疏处理,减少数据运算量。通常在卷积层之后会得到维度很大的特征,将特征切成几个区域,取其最大值或平均值,得到新的、维度较小的特征。

    • 很明显就是减少参数
    • Pooling就有平移不变性((translation invariant)

      在几个 ReLU 层之后,程序员也许会选择用一个池化层(pooling layer)。它同时也被叫做下采样(downsampling)层。在这个类别中,也有几种可供选择的层,最受欢迎的就是最大池化( max-pooling)。它基本上采用了一个过滤器(通常是 2x2 的)和一个同样长度的步幅。然后把它应用到输入内容上,输出过滤器卷积计算的每个子区域中的最大数字。

      池化层还有其他选择,比如平均池化(average pooling)和 L2-norm 池化 。这一层背后的直观推理是:一旦我们知道了原始输入(这里会有一个高激活值)中一个特定的特征,它与其它特征的相对位置就比它的绝对位置更重要。可想而知,这一层大幅减小了输入卷的空间维度(长度和宽度改变了,但深度没变)。这到达了两个主要目的。第一个是权重参数的数目减少到了75%,因此降低了计算成本。第二是它可以控制过拟合(overfitting)。这个术语是指一个模型与训练样本太过匹配了,以至于用于验证和检测组时无法产生出好的结果。出现过拟合的表现是一个模型在训练集能达到 100% 或 99% 的准确度,而在测试数据上却只有50%。

CNN(卷积神经网络)是什么? 作者:机器之心

  • 全连接层( Fully-Connected layer), 通常在CNN的尾部进行重新拟合,减少特征信息的损失。把所有局部特征结合变成全局特征,用来计算最后每一类的得分。

  • * Dropout 层:在神经网络有了非常明确的功能。上一节,我们讨论了经过训练后的过拟合问题:训练之后,神经网络的权重与训练样本太过匹配以至于在处理新样本的时候表现平平。Dropout 的概念在本质上非常简单。Dropout 层将「丢弃(drop out)」该层中一个随机的激活参数集,即在前向通过(forward pass)中将这些激活参数集设置为 0。简单如斯。既然如此,这些简单而且似乎不必要且有些反常的过程的好处是什么?在某种程度上,这种机制强制网络变得更加冗余。这里的意思是:该网络将能够为特定的样本提供合适的分类或输出,即使一些激活参数被丢弃。此机制将保证神经网络不会对训练样本「过于匹配」,这将帮助缓解过拟合问题。另外,Dropout 层只能在训练中使用,而不能用于测试过程,这是很重要的一点。

参考 Geoffrey Hinton 的论文:Dropout: A Simple Way to Prevent Neural Networks from Overfitting

CNN的特点

局部连接、权值共享、池化操作及多层结构
CNN能够通过多层非线性变换,从数据中自动学习特征,从而代替手工设计的特征,且深层的结构使它具有很强的表达能力和学习能力。许多研究实验已经表明了CNN结构中深度的重要性。例如从结构来看, AlexNet、VGG、GooleNet及ResNet的一个典型的发展趋势是它们的深度越来越深。在CNN中,通过增加深度从而增加网络的非线性来使它能够更好地拟合目标函数,获得更好的分布式特征。

CNN应用

  • 图像分类
  • 人脸识别
  • 音频检索
  • ECG分析
  • 其他:短文本聚类[103]、视觉追踪[104]、图像融合[105]等领域中.

参考:周飞燕, 金林鹏, 董军. 卷积神经网络研究综述[J]. 计算机学报, 2017, 40(6):1229-1251.


参考:

  1. 详解卷积神经网络(CNN)
  2. 深度学习Deep Learning(01)_CNN卷积神经网络
  3. CNN(卷积神经网络)是什么?有入门简介或文章吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被冻结的钱,银行可以私自处理吗?

被冻结的钱,具体要看是什么原因造成的,不同的原因被冻结的钱处理方式是不一样的。首先需要说明的是,银行是没权利私自冻结用户的银行账户,或者私自处理冻结账户的钱,只有被相关执法机构要求冻结并处理,或者…

银行员工会购买自己银行的理财产品吗?

大家去银行的时候是不是经常看到银行工作人员给你推销理财产品?为什么银行这么积极推销理财产品呢?他们会自己购买所推销的理财产品吗?银行工作人员之所以积极推销理财,最根本的原因是银行缺钱,而且银行每个员工几乎都…

借钱,一定要有还钱的素质

电视剧「雍正王朝」里有一段剧情,康熙命雍正负责追回国库欠款,雍正面对那群厚颜无耻的欠债人,说了一句很经典的话:「站着借钱,跪着要债」。皇家要债尚且如此之难,何况是普通的人呢?对于欠债不还…

有了花呗还需要办信用卡吗?

花呗跟信用卡完全不冲突,而且信用卡有些功能是花呗所不具备的。所以有了花呗我觉得信用卡还是有必要申请。我们先来看下花呗和信用卡有哪些共同点和区别。共同点花呗其实是异化的信用卡,跟信用卡功能差不多,都有免息期,都可以分期…

ubuntu常用的操作

命令的格式 命令帮助信息 man命令 命令常用技巧 历史命令 输出重定向 管道 ls tree clear cd pwd cat rm cp mv mkdir touch find grep ln tar gzipg格式 bz2格式

中国央行将发行全球首个法定数字货币,消息是真的吗?

近日央行在发行数字货币方面取得了新进展,央行推动的基于区块链的数字票据交易平台已经测试成功。由央行发行的法定数字货币已经在该平台运行。春节过后央行旗下的数字货币研究所也将正式挂牌,这意味着中国央行将成为全球范围内首个发行数字货币并开展正…

银行加息前存的定期会随着加息吗?

加息之前的定期存款是不会随着加息而自动加息,还是按存入当日的基准利率计算,直到存款期满。如果想加息,除非你提前取出来再存进去,但之前存的时间只能拿活期利息。近段估计很多人和你一样关心加息的事情北京时间3月22日凌晨2点&a…

在 Scale Up 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(145)

对于多副本应用,当执行 Scale Up 操作时,新副本会作为 backend 被添加到 Service 的负责均衡中,与已有副本一起处理客户的请求。考虑到应用启动通常都需要一个准备阶段,比如加载缓存数据,连接数据库等,从容…

Makefile文件

Makefile文件 安装gcc,g,make 输入一行命令就OK sudo apt install build-essential例子 不使用makefile时 精简版

银行错误将10万打给自己,客户有责任退还,银行难道没责任吗?

我们都知道,如果银行多转钱或错转钱给客户,银行肯定会要求客户把钱全额退还,如果客户拒绝不退还的,银行会以不当得利将客户告上法院,搞不好客户还要坐牢。下面给大家举个案例。赵阳是新疆乌鲁木齐市米东区某村的村民&a…

如果央行加息,以前办的房贷利息也会涨吗?

肯定会涨,但具体什么时候涨以银行跟你签订合同时为准。一般央行加息之后银行会有三种处理方式:第一种:约定调整利息所谓约定调整利息是购房者跟银行在签订合同的时候约定好,如果遇到央行加息,会根据合同约定的方式对利…

MATLAB代码转到FPGA代码

MATLAB代码转到FPGA代码 首先需要编写好MATLAB文件。 MATLAB文件包含一个功能实现文件和测试文件。对应FPGA中的功能文件和测试文件。 然后选择APP中的HDL Coder代码 然后取个模块名 然后,将功能文件和测试文件添加到相应位置。 添加完文件之后,需要设置输入的数据类型…

第一次申请信用卡额度太低,怎么办?

最近,我的朋友小麦因为谈恋爱了,开销大,又不想问家里要钱,于是听从了我的建议去银行办了一张信用卡。他是一个很保守的人,不跟随潮流,工作都有5年了,才办人生中的第一张信用卡。卡已经下来&…

办大额信用卡致胜一招

众所周知,银行信用卡的额度取决于申请人和该银行存在多少的利益关系,但是,要在毫无交易关系的银行,办理大额的信用卡,就没办法了呢?其实,信用卡除了网上申请、网点申请等几种常见的方式之外&…

硬件调试-ILA

硬件调试-ILA 先检查时钟和复位。时钟的频率是否正确?是否连接到子模块中(中间是否有拼错的地方)?复位的初始化是否有问题?是否是一直为高?添加ILA

在 Rolling Update 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(146)

上一节讨论了 Health Check 在 Scale Up 中的应用,Health Check 另一个重要的应用场景是 Rolling Update。试想一下下面的情况: 现有一个正常运行的多副本应用,接下来对应用进行更新(比如使用更高版本的 image)&#x…

编写vivado的仿真代码

编写vivado的仿真代码 仿真步骤 先点击+号图标,选择add or create simulation sources。

美国加息全球死伤一大片,它到底加了什么?

对于美国加息,以及说是美联储加息,不如说是美元霸权地位的加息。3月21日,美国联邦储备委员会在结束货币政策例会后宣布,将联邦基金目标利率区间上调25个基点,至1.50%~1.75%的水平。那为什么美国加息之后,全…

vivado使用

vivado使用 vivado的开发流程

老干妈如今做到这么大,为什么她就是没遇到竞敌?

国民女神老干妈之所以长盛不衰,碾压各种竞争对手,我觉得主要原因是独家秘方渠道优势品牌优势现金为王独特的人格魅力。一、独家秘方吃过老干妈的都会对其独特的味道情有独钟,而这种独特的味道肯定是老干妈有独家秘方,老干妈使用的…