人工智能中卷积神经网络基本原理综述

人工智能Artificial Intelligence中卷积神经网络Convolutional Neural Network基本原理综述

人工智能(Artificial Intelligence,简称AI)的Deep Learning(深度学习)通过机器学习,把某一层的输出output当做下一层的输入input。在人工智能中,认为output是机器通过深度学习获得的某种“智慧”。深度学习(Deep Learning)通过神经网络把海量数据分组,然后形成组合分层结果,这样就形成了神经网络,通过层层的深度学习,最终获得理想的结果。人工智能的最终目的,是实现机器能够高效模拟人类大脑进行有效思考,在人类有挑战意义的领域,进化出超越人类认知和思考水平的人工智能。

卷积神经网络(Convolutional Neural Network,简称CNN)基本结构和原理

卷积神经网络是人工神经网络的一种,卷积神经网络是机器深度学习中的一种“前馈神经网络”,前馈是信号量的输入获得,到输出过程是往前方传导的,简言之信号是往前方传递的,所以称之为前馈。前馈用以神经网络的计算输出,不对神经网络调整,每一层中每一个神经元算出该层的输出并向下一层传递到输出层,进而计算出网络的输出结果。Back Propagation神经网络,即BP神经网络。反向传播训练神经网络权值和阈值的调整。网络前向传递计算输出结果时与正确结果存在误差,因此需要Back Propagation调整神经网络的前向计算过程。

卷积神经网络本质上是一种输入到输出的映射网络,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积神经网络加以训练,神经网络就具有输入输出之间的映射能力。卷积神经网络执行的是有监督训练,所以其样本集是由形如:(输入向量,理想输出向量)的向量对构成。这些向量对,可以是从实际运行系统中采集来。在开始训练前,所有的权重都应该用一些不同的小随机数进行初始化。小随机数用来保证神经网络不会因权值过大而进入饱和状态,从而导致训练失败,权值不同用来保证神经网络可以正常地学习。事实上,如果用相同的权值去初始化矩阵,则神经网络无能力学习。

卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。卷积神经网络的神经元感知周围神经单元。


图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进入滤波器得到C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。
C层为特征提取层,每个神经元的输入与前一层的局部感受器(探测器)相连,并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系也随之确定下来;S层是特征映射层,卷积神经网络的每个计算层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。卷积运算可以使原信号特征增强,并且降低噪音,这种特征提取结构在识别时对输入样本有较高的畸变容忍能力。
卷积神经网络包含卷积层和池化层。卷积神经网络特征检测层通过数据训练进行学习,避免显示的特征提取,隐式地从训练数据中进行深度学习,同一特征映射面上的神经元权值相同,意味着可以并行训练学习。流行的分类方式多是基于统计特征,这意味着在进行分类前必须提取某些特征。然而,显式的特征提取并不容易,在一些实际问题中也并非总是可靠的。卷积神经网络,避免了显式的特征取样,隐式地从训练数据中进行学习。这使得卷积神经网络明显有别于其他基于神经网络的分类器,通过结构重组和减少权值将特征提取功能融合进多层感知器。

最小化数据预处理:通过感受野和权值共享减少神经网络需要训练的参数个数

卷积神经网络降低参数数量,目的是降低计算负荷压力。其中一个策略是局部感知,以图像识别为例,如果把一个1000 X 1000的图像作为输入参数,每个隐层神经元都连接感知图像的每一个像素点,如果全连接,那数据就太多,1000x1000x1000000=10^12,计算压力太大,所以要考虑一种有效的方式。局部感知可以解决这个问题,局部感知基于以下基本假设:人类的大脑在认知周围世界时候,是从局部到全局的。任一图像中,某一特定像素点和局部周围的像素关系紧密,而和较远距离的全局像素关系不是非常密切,即平面图像的空间联系是局部的。每一个神经元,没有必要对全局的像素点都要认知,一不必要,二是资源浪费。每一个神经元都无须对全局图像做感受,每个神经元只感受局部的图像,然后在更高层,这些感受到不同局部的神经元综合起来就可以得到全局信息。
神经网络中的参数经过局部感知后,有些时候数据集可能仍然非常大。此时可以考虑第二种方案,权值共享。假设图像中有1000X1000=1000000(一百万)个像素点,经过处理,每个神经元100(卷积操作)个特征相同,那么此时要处理的1000000数据集问题就缩减为处理100的问题,数据量大大降低。局部感受野是10X10,隐层每个感受野只需要和这10X10的局部图像相连接,所以1百万个隐层神经元就只有一亿个连接,即10^8个参数。比原来降低四个0(数量级)。

隐层的每一个神经元都连接10X10个像素点,即每一个神经元存在10 X 10=100个连接权值参数。如果每个神经元这100个参数是相同的呢?也就是说每个神经元用的是同一个卷积核去卷积图像。这样我们就只有100个参数,不管隐含层的神经元个数有多少,两层间的连接我只有100个参数,这就是卷积神经网络权值共享。
权值共享降低了网络的复杂度,避免了特征提取和分类过程中模型重建开销。权值共享的方式:假设针对图像,设定100个提取(学习)特征,这100个提取特征与图像中的不同区域及位置没有关系,是打算要深度学习的特征。图像的一块(局部感受野)作为层级结构中最低层的输入,信号再依次传输到不同的层,每层通过一个数字滤波器(或探测器)去获取感知数据的最显著的特征。
举例,假设从一个图像中取出8 X 8的像素样本中首先训练机器学习到的特征作为探测器,然后再回归到图像中的任一区域。举例,假设从图像中选取一小块8 X 8的区域,通过对8 X 8的小区域学习到的特征与1000 X 1000的图形做卷积,从而就得到该完整图像中任一位置的有价值的输出值,激活值。
下图展示了3 X 3的卷积核在5 X 5的图像上做卷积的过程。每一次卷积均以固定的算式算出激活值,假设激活值越大越符合要求的条件,那么通过这种筛选方式就可以筛出需要的图像:

卷积神经网络中的多核卷积

实际的运用中,往往要多层卷积,多层卷积越往层级高的地方,特征越具有全局意义,单层卷积学习到的特征更多的是局部性特征。如果用100个参数时,只有一个10 X 10的卷积核,这样的特征提取是不充分的。这样只提取一种特征,现实中需要提取多种特征。假如一种滤波器,也就是一种卷积核,去提取图像的一种特征,比如某个方向边缘。那需要提取不同的特征,就需要加多几种滤波器(探测器)。所以当加到100种滤波器,每种滤波器的参数不一样,表示它提出输入图像的不同特征,例如不同的边缘。这样每种滤波器去卷积完整图像就得到对图像不同特征的映射Feature Map。因此100种卷积核就有100个Feature Map。这100个Feature Map就组成了一层神经元。100种卷积核乘以每种卷积核共享100个参数=100x100=10K,每一层也就是1万个参数。

不同的颜色代表不同的卷积核,也即不同的颜色表达不同的滤波器,每一个卷积核算出的结果形成一幅全新的图像。
再假设针对图像设定更多的卷积核,比如32个,这也就意味着可以学习32个特征。多个卷积核时候,32个卷积核,生成32幅图像。这32幅图可以认为是完整图像的不同通道。
通过卷积算出特征后,开始利用特征进行分类,理论上可以用所有提取到的特征训练分拣器,但这里计算机要处理的数据太多太多。比如一个96 X 96像素图像,假设已经学习得到400个定义的8 X 8输入的特征,每一个特征和图像卷积都会得到一个 (96?8+1)×(96?8+1)=7921维的卷积特征,由于有 400 个特征,所以每个样例就会得到一个 7921 × 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过三百多万特征输入的分类器任务量太大,并且容易出现过拟合 (over-fitting)。
卷积后的特征值,在完整图像的不同区域极有可能仍然适用,因此为了描述一个大图像的特征,可以针对不同位置的特征进行聚合统计。比如可以计算图像中某一块区域的平均值(或者最大值),这些概略性的特征统计,第一可以大大降低需要计算的维度,第二还可以从一定程度上改善拟合结果。这种聚合的计算过程就叫做池化 (Pooling),或称之为平均池化或者最大池化 (依据计算池化的方式):

时间: 2024-10-07 05:31:32

人工智能中卷积神经网络基本原理综述的相关文章

人工智能之卷积神经网络(CNN)

前言:人工智能机器学习有关算法内容,请参见公众号“科技优化生活”之前相关文章.人工智能之机器学习主要有三大类:1)分类;2)回归;3)聚类.今天我们重点探讨一下卷积神经网络(CNN)算法. ^_^ 20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络CNN(Convolutional Neural Networks). 1980年,K.Fukushima提出的新识别机是卷积神经网络

CNN卷积神经网络新想法

最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下. 其实卷积神经网络并不是一项新兴的算法,早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时只用来识别支票上的手写体数字,并且应用于实际.2006年深度学习的泰斗在<科学>上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力,从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的.有一定应用经验的深度结构,重新回到人们视线,此时硬件的运算

卷积神经网络新想法

最近一直在看卷积神经网络,想改进改进弄出点新东西来,看了好多论文,写了一篇综述,对深度学习中卷积神经网络有了一些新认识,和大家分享下. 其实卷积神经网络并不是一项新兴的算法,早在上世纪八十年代就已经被提出来,但当时硬件运算能力有限,所以当时只用来识别支票上的手写体数字,并且应用于实际.2006年深度学习的泰斗在<科学>上发表一篇文章,论证了深度结构在特征提取问题上的潜在实力,从而掀起了深度结构研究的浪潮,卷积神经网络作为一种已经存在的.有一定应用经验的深度结构,重新回到人们视线,此时硬件的运算

C++卷积神经网络实例:tiny_cnn代码具体解释(6)——average_pooling_layer层结构类分析

在之前的博文中我们着重分析了convolutional_layer类的代码结构.在这篇博文中分析相应的下採样层average_pooling_layer类: 一.下採样层的作用 下採样层的作用理论上来说由两个,主要是降维,其次是提高一点特征的鲁棒性.在LeNet-5模型中.每一个卷积层后面都跟着一个下採样层: 原因就是当图像在经过卷积层之后.因为每一个卷积层都有多个卷积模板,直接导致卷积结果输出的特征矩阵相对于输入的数据矩阵其维数要提高数倍.再加上存在若干卷积层(谷歌的某些模型甚至超过100层)

卷积神经网络(CNN)在语音识别中的应用

卷积神经网络(CNN)在语音识别中的应用 作者:侯艺馨 前言 总结目前语音识别的发展现状,dnn.rnn/lstm和cnn算是语音识别中几个比较主流的方向.2012年,微软邓力和俞栋老师将前馈神经网络FFDNN(Feed Forward Deep Neural Network)引入到声学模型建模中,将FFDNN的输出层概率用于替换之前GMM-HMM中使用GMM计算的输出概率,引领了DNN-HMM混合系统的风潮.长短时记忆网络(LSTM,LongShort Term Memory)可以说是目前语音

数据挖掘、目标检测中的cnn和cn---卷积网络和卷积神经网络

content 概述 文字识别系统LeNet-5 简化的LeNet-5系统 卷积神经网络的实现问题 深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功.本人在多年之前也曾接触过神经网络.本系列文章主要记录自己对深度神经网络的一些学习心得. 第二篇,讲讲经典的卷积神经网络.我不打算详细描述卷积神经网络的生物学运行机理,因为网络上有太多的教程可以参考.这里,主要描述其数学上的计算过程,也就是如何自己编程去实现的问题. 1. 概述 回想一下BP神经网络.BP网络每一层节点是一个线性的一维排列

深度卷积神经网络在目标检测中的进展

作者:travelsea链接:https://zhuanlan.zhihu.com/p/22045213来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高.回顾从2014到2016这两年多的时间,先后涌现出了R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD等越来越快速和准确的目标检测方法. 基于Reg

卷积神经网络 cnnff.m程序 中的前向传播算法 数据 分步解析

最近在学习卷积神经网络,哎,真的是一头雾水!最后决定从阅读CNN程序下手! 程序来源于GitHub的DeepLearnToolbox 由于确实缺乏理论基础,所以,先从程序的数据流入手,虽然对高手来讲,这样有点太小儿科了,但觉得对于个人理解CNN网络的结构和数据流走向有较大帮助! 下面,将要分析CNN的前向传播算法cnnff.m 本程序所用的神经网络的结构如下图的结构体net所示 结构体net 包含5层 每层的结构 这五层的结构如下: 每层的结构分别如下: 为了方便自己理解,下面,分别对每一层的输

修剪版的卷积神经网络在性别分类中的应用

前言:今天为大家带来一篇文章,发在CVPR 2017.是在LFW上做的实验,是一个二分类问题---性别识别. 原文:Efficient Gender Classification Using a Deep LDA-Pruned Net 摘要:本文也是说到了,卷积深度神经网络在目标检测,模式识别等各个方面取得了非常好的效果,是必须要有更强大的GPU支持.所以针对这个问题提出了一个修剪的卷积神经网络,用的是VGG基模型.在这里补充下VGG网络结构. VGG: VGG是一种非常有效的,经典的卷积神经网