卷积神经网络示意图(卷积神经网络百度百科)
本篇文章给大家谈谈卷积神经网络示意图,以及卷积神经网络百度百科对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、一文看懂四种基本的神经网络架构
- 2、卷积神经网络CNN(Convolutional Neural Network)
- 3、卷积神经网络每层提取的特征是什么样的
- 4、PART 4 W1 卷积神经网络介绍
一文看懂四种基本的神经网络架构
原文链接:
更多干货就在我的个人博客 欢迎关注
刚刚入门神经网络,往往会对众多的神经网络架构感到困惑,神经网络看起来复杂多样,但是这么多架构无非也就是三类,前馈神经网络,循环网络,对称连接网络,本文将介绍四种常见的神经网络,分别是CNN,RNN,DBN,GAN。通过这四种基本的神经网络架构,我们来对神经网络进行一定的了解。
神经网络是机器学习中的一种模型,是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
一般来说,神经网络的架构可以分为三类:
前馈神经网络:
这是实际应用中最常见的神经网络类型。第一层是输入,最后一层是输出。如果有多个隐藏层,我们称之为“深度”神经网络。他们计算出一系列改变样本相似性的变换。各层神经元的活动是前一层活动的非线性函数。
循环网络:
循环网络在他们的连接图中定向了循环,这意味着你可以按照箭头回到你开始的地方。他们可以有复杂的动态,使其很难训练。他们更具有生物真实性。
循环网络的目的使伍隐用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。
对称连接网络:
对称连接网络有点像循环网络,但是单元之间的连接是对称的(它们在两个方向上权重相同)。比起循环网络,对称连接网络更容易分析。这个网络中有更多的限制,因为它们遵守能量函数定律。没有隐藏单元的对称连接网络被称为“Hopfield 网络”。有隐藏单元的对称连接的网络被称为玻尔兹曼机。
其实之前的帖子讲过一些关于感知机的内容,这里再复述一下。
首先还是这张图
这是一个M-P神经元
一个神经元有n个输入,每一个输入对应一个权值w,神经元内会对输入与权重做乘法后求和,求和的结果与偏置做差,最终将结果放入激活函数中,由激活函数给出最后的输出,输出往往是二进制的,0 状态代表抑制,1 状态代表激活。
可以把感知机看作是 n 维实例空间中的超平面决策面,对于超平面一侧的样本,感知器输出 1,对于另一侧的实例输出 0,这个决策超平面方程是 w⋅x=0。 那些可以被某一个超平面分割的正反样例集腔轮厅合称为线性可分(linearly separable)样例集合,它们就可以使用图中的感知机表示。
与、或、非问题都是线性可分的问题,使用一个有两输入的感知机能容易地表示,而异或并不是一个线性可分的问题,所以使用单层感知机是不行的,这时候就要使用多层感知机来解决疑惑问题了。
如果我们要训练一个感知机,应该怎么办呢?
我们会从随机的权值开始,反复地应用这个感知机到每个训练样例,只要它误分类样例就修改感知机的权值。重复这个过桐樱程,直到感知机正确分类所有的样例。每一步根据感知机训练法则来修改权值,也就是修改与输入 xi 对应的权 wi,法则如下:
这里 t 是当前训练样例的目标输出,o 是感知机的输出,η 是一个正的常数称为学习速率。学习速率的作用是缓和每一步调整权的程度,它通常被设为一个小的数值(例如 0.1),而且有时会使其随着权调整次数的增加而衰减。
多层感知机,或者说是多层神经网络无非就是在输入层与输出层之间加了多个隐藏层而已,后续的CNN,DBN等神经网络只不过是将重新设计了每一层的类型。感知机可以说是神经网络的基础,后续更为复杂的神经网络都离不开最简单的感知机的模型,
谈到机器学习,我们往往还会跟上一个词语,叫做模式识别,但是真实环境中的模式识别往往会出现各种问题。比如:
图像分割:真实场景中总是掺杂着其它物体。很难判断哪些部分属于同一个对象。对象的某些部分可以隐藏在其他对象的后面。
物体光照:像素的强度被光照强烈影响。
图像变形:物体可以以各种非仿射方式变形。例如,手写也可以有一个大的圆圈或只是一个尖头。
情景支持:物体所属类别通常由它们的使用方式来定义。例如,椅子是为了让人们坐在上面而设计的,因此它们具有各种各样的物理形状。
卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。
卷积神经网络由三部分构成。第一部分是输入层。第二部分由n个卷积层和池化层的组合组成。第三部分由一个全连结的多层感知机分类器构成。
这里举AlexNet为例:
·输入:224×224大小的图片,3通道
·第一层卷积:11×11大小的卷积核96个,每个GPU上48个。
·第一层max-pooling:2×2的核。
·第二层卷积:5×5卷积核256个,每个GPU上128个。
·第二层max-pooling:2×2的核。
·第三层卷积:与上一层是全连接,3*3的卷积核384个。分到两个GPU上个192个。
·第四层卷积:3×3的卷积核384个,两个GPU各192个。该层与上一层连接没有经过pooling层。
·第五层卷积:3×3的卷积核256个,两个GPU上个128个。
·第五层max-pooling:2×2的核。
·第一层全连接:4096维,将第五层max-pooling的输出连接成为一个一维向量,作为该层的输入。
·第二层全连接:4096维
·Softmax层:输出为1000,输出的每一维都是图片属于该类别的概率。
卷积神经网络在模式识别领域有着重要应用,当然这里只是对卷积神经网络做了最简单的讲解,卷积神经网络中仍然有很多知识,比如局部感受野,权值共享,多卷积核等内容,后续有机会再进行讲解。
传统的神经网络对于很多问题难以处理,比如你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。
这是一个简单的RNN的结构,可以看到隐藏层自己是可以跟自己进行连接的。
那么RNN为什么隐藏层能够看到上一刻的隐藏层的输出呢,其实我们把这个网络展开来开就很清晰了。
从上面的公式我们可以看出,循环层和全连接层的区别就是循环层多了一个权重矩阵 W。
如果反复把式2带入到式1,我们将得到:
在讲DBN之前,我们需要对DBN的基本组成单位有一定的了解,那就是RBM,受限玻尔兹曼机。
首先什么是玻尔兹曼机?
[图片上传失败...(image-d36b31-1519636788074)]
如图所示为一个玻尔兹曼机,其蓝色节点为隐层,白色节点为输入层。
玻尔兹曼机和递归神经网络相比,区别体现在以下几点:
1、递归神经网络本质是学习一个函数,因此有输入和输出层的概念,而玻尔兹曼机的用处在于学习一组数据的“内在表示”,因此其没有输出层的概念。
2、递归神经网络各节点链接为有向环,而玻尔兹曼机各节点连接成无向完全图。
而受限玻尔兹曼机是什么呢?
最简单的来说就是加入了限制,这个限制就是将完全图变成了二分图。即由一个显层和一个隐层构成,显层与隐层的神经元之间为双向全连接。
h表示隐藏层,v表示显层
在RBM中,任意两个相连的神经元之间有一个权值w表示其连接强度,每个神经元自身有一个偏置系数b(对显层神经元)和c(对隐层神经元)来表示其自身权重。
具体的公式推导在这里就不展示了
DBN是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。
DBN由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。
生成对抗网络其实在之前的帖子中做过讲解,这里在说明一下。
生成对抗网络的目标在于生成,我们传统的网络结构往往都是判别模型,即判断一个样本的真实性。而生成模型能够根据所提供的样本生成类似的新样本,注意这些样本是由计算机学习而来的。
GAN一般由两个网络组成,生成模型网络,判别模型网络。
生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。
举个例子:生成网络 G 好比假币制造团伙,专门制造假币,判别网络 D 好比警察,专门检测使用的货币是真币还是假币,G 的目标是想方设法生成和真币一样的货币,使得 D 判别不出来,D 的目标是想方设法检测出来 G 生成的假币。
传统的判别网络:
生成对抗网络:
下面展示一个cDCGAN的例子(前面帖子中写过的)
生成网络
判别网络
最终结果,使用MNIST作为初始样本,通过学习后生成的数字,可以看到学习的效果还是不错的。
本文非常简单的介绍了四种神经网络的架构,CNN,RNN,DBN,GAN。当然也仅仅是简单的介绍,并没有深层次讲解其内涵。这四种神经网络的架构十分常见,应用也十分广泛。当然关于神经网络的知识,不可能几篇帖子就讲解完,这里知识讲解一些基础知识,帮助大家快速入(zhuang)门(bi)。后面的帖子将对深度自动编码器,Hopfield 网络长短期记忆网络(LSTM)进行讲解。
卷积神经网络CNN(Convolutional Neural Network)
上图计算过程为,首先我们可以将右边进行卷积的可以称为过滤器也可以叫做核,覆盖到左边第一个区域,然后分别按照对应位置相乘再相加,3*1+1*1+2*1+0*0+0*0+0*0+1*(-1)+8*(-1)+2*(-1)=-5;
按照上述的计算方法逐步按右移一个步长(步长可以设定为1,2,...等),然后按往下移,逐渐计算相应的值,得出最终的值。
如上图显示,对于第一个图像矩阵对应的图,一边是白色,一边是黑色,那么中间就会存在一个垂直的边缘,我知芦们可以选择一个垂直边缘检测过滤器,如乘法右边的矩阵,那么两者做卷积后得出的图会显示如等号右边的结果矩阵对应的灰度图中间会有一个白色的中间带,也就是检测出来的边缘,那为什么感觉中间边缘带会比较宽呢?而不是很细的一个局域呢?原因是我们输入的图像只有6*6,过于小了,如果我们选择输出更大搭塌带的尺寸的图,那么结果来说就是相对的一个细的边缘检测带,也就将我们的垂直边缘特征提取出来了。
上述都是人工选择过滤器的参数,随着神经网络的发展我们可以利用反向传播算法来学习过滤器的参数
我们可以将卷积的顾虑器的数值变成一个参数,通过反向传播算法去学习,这样学到的过滤器或者说卷积核就能够识别到很多的衫含特征,而不是依靠手工选择过滤器。
- padding 操作,卷积经常会出现两个问题:
1.每经过一次卷积图像都会缩小,如果卷积层很多的话,后面的图像就缩的很小了;
2.边缘像素利用次数只有一次,很明显少于位于中间的像素,因此会损失边缘图像信息。
为了解决上述的问题,我们可以在图像边缘填充像素,也就是 padding 操作了。
如果我们设置在图像边缘填充的像素数为p,那么经过卷积后的图像是:(n+2p-f+1)x(n+2p-f+1).
如何去选择p呢
通常有两种选择:
-Valid:也就是说不填充操作(no padding),因此如果我们有nxn的图像,fxf的过滤器,那么我们进行卷积nxn fxf=(n-f+1)x(n-f+1)的输出图像;
-Same:也就是填充后是输出图像的大小的与输入相同,同样就有(n+2p)x(n+2p) fxf=nxn,那么可以算,n+2p-f+1=n,得到p=(f-1)/2。
通常对于过滤器的选择有一个默认的准则就是选择过滤器的尺寸是奇数的过滤器。
- 卷积步长设置(Strided COnvolution)
卷积步长也就是我们进行卷积操作时,过滤器每次移动的步长,上面我们介绍的卷积操作步长默认都是1,也就是说每次移动过滤器时我们是向右移动一格,或者向下移动一格。
但是我们可以对卷积进行步长的设置,也就是我们能够对卷积移动的格数进行设置。同样假如我们的图像是nxn,过滤器是fxf,padding设置是p,步长strided设置为s,那么我们进行卷积操作后输出的图像为((n+2p-f)/s+1)x((n+2p-f)/s+1),那么这样就会出现一个问题,如果计算结果不是整数怎么办?
一般是选择向下取整,也就是说明,只有当我们的过滤器完全在图像上能够覆盖时才对它进行计算,这是一个惯例。
实际上上述所述的操作在严格数学角度来说不是卷积的定义,卷积的定义上我们计算的时候在移动步长之前也就是对应元素相乘之前是需要对卷积核或者说我们的过滤器进行镜像操作的,经过镜像操作后再把对应元素进行相乘这才是严格意义上的卷积操作,在数学角度上来说这个操作不算严格的卷积操作应该是属于互相关操作,但是在深度学习领域中,大家按照惯例都省略了反转操作,也把这个操作叫做卷积操作
我们知道彩色图像有RGB三个通道,因此对于输入来说是一个三维的输入,那么对三维输入的图像如何进行卷积操作呢?
例子,如上图我们输入图像假设为6×6×3,3代表有RGB三个通道channel,或者可以叫depth深度,过滤器的选择为3×3×3,其中需要规定的是,顾虑器的channel必须与输入图像的channel相同,长宽没有限制,那么计算过程是,我们将过滤器的立体覆盖在输入,这样对应的27个数对应相乘后相加得到一个数,对应到我们的输出,因此这样的方式进行卷积后我们得出的输出层为4×4×1。如果我们有多个过滤器,比如我们分别用两个过滤器一个提取垂直特征,一个提取水平特征,那么输出图4×4×2 。也就是代表我们输出的深度或者说通道与过滤器的个数是相等的。
第l层的卷积标记如下:
加入我们的过滤器是3×3×3规格的,如果我们设定10个过滤器,那么需要学习的参数总数为每个过滤器为27个参数然后加上一个偏差bias那么每个过滤器的参数为28个,所以十个过滤器的参数为280个。从这里也就可以看出,不管我们输入的图片大小是多大,我们都只需要计算这些参数,因此参数共享也就很容易理解了。
为了缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们经常会使用池化层。池化层的计算方式与卷积类似,只是我们需要对每一个通道都进行池化操作。
池化的方式一般有两种:Max Pooling和Average Pooling。
上面为Max Pooling,那么计算方法与卷积类似,首先设定超参数比如过滤器的大小与步长,然后覆盖到对应格子上面,用最大值取代其值作为输出的结果,例如上图为过滤器选择2×2,步长选择为2,因此输出就是2×2的维度,每个输出格子都是过滤器对应维度上输入的最大值。如果为平均池化,那么就是选择其间的平均值作为输出的值。
因此从上面的过程我们看到,通过池化操作能够缩小模型,同时能让特征值更加明显,也就提高了提取特征的鲁棒性。
卷积神经网络每层提取的特征是什么样的
卷积神经网络是一个多层的神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。
图:卷积神经网络的概念示范:输入图像通过和三个可训练的滤波器和可加偏置进行卷积,滤波过程如图一,卷积后在C1层产生三个特征映射图,然后特征映射图中每组的四个像素再进行求和,加权值,加偏置,通过一个Sigmoid函数得到三个S2层的特征映射图。这些映射图再进过滤波得到旅羡C3层。这个层级结构再和S2一样产生S4。最终,这些像素值被光栅化,并连接成一个向量输入到传统的神经网络,得到输出。
一般地,C层为特征提取层,每个神经元的输入与前一棚消层的局部感受野相连,并提取该局部的特征,一旦该局部特征被提取后,它与其他特征间的位置关系也随之确定下来;S层是特征映射层,网络的每个计算层拆和拍由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。
此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数,降低了网络参数选择的复杂度。卷积神经网络中的每一个特征提取层(C-层)都紧跟着一个用来求局部平均与二次提取的计算层(S-层),这种特有的两次特征提取结构使网络在识别时对输入样本有较高的畸变容忍能力。
[img]PART 4 W1 卷积神经网络介绍
一个是图像分类:如猫脸识别等;一个是目标检测:如无人驾驶技术中的各种交通信号检测技术
1. 卷积操作及过滤器/卷积核的概念
如上图所示:最左侧矩阵是一个灰度图像,中间是一个3*3的小矩阵,称为“卷积核”或“过滤器”。
卷积:先把卷积核放到灰度图像左上角(绿色框),盖住灰度图像上一个3*3的矩阵区域,然后9对对应的元素相乘,然后求和(得到0),然后把卷积核逐渐移动一行一行的“扫描”,最终得到最右侧矩阵。上述操作叫做“卷积”,最右侧矩阵是卷积的输出。
2. 垂直边缘检测
仍以上图为例,可以看到3*3的卷积核具体的数值构成为“左边一列1,中间一列0,右边一列-1”,这种卷积核在“扫描”灰度图像时,可以检测到灰度图像的垂直边缘。分析如下:
1)假设正在扫描的灰度区域没有垂直边缘,意味着区域内的值在左右方向上分布差不多,与卷积核做完运算后,左边的乘1,右边的乘-1,相加正好有一定的抵消作枣洞用,其实计算出来的结果会接近0。即:卷积结果接近0代表没有边缘。
2)有垂直边缘分为两种情况:目标区域“左边值较大,右边值较小” 或“左边值较小,右边值较大”。前一种情况在卷积操作后会得到一个较大的正值,后一种情况卷积操作后会得到一个较大的负值。
可以看出,较大的正值代表着目标区域的变化趋势与卷积核相同,即检测到的是与卷积核相同的边缘,而较大的负值代表目标区域的变化趋势与卷积核相反,即检测到的是与卷积核相反的边缘。
3. 卷积应用在卷积神经网络中
卷积操作如何应用于神经网络中?简言之,卷积核本身就是网络要学习的参数。如上图所示,我们并不是事先设定好要检测垂直边缘或水平边缘或其它什么边缘,而是要网络去学习要检测什么东西。
1. padding的原因
在上节展示的卷积操作中,可以看出,假设输入图像的大小为n*n,而卷积核的大小为f*f,那么卷积核从输入图像的左上角扫描到右下角,最终得到的结果大小为(n-f+1)*(n-f+1),意味着如果一次次进行卷积,那么结果的尺寸会越来越小
另外,显然输入图像边缘的像素被使用的较少(最边缘的像素仅被使用一次),这显然会造成信息的丢失。
2. 如何进行padding
非常简单:把输入图像的四周补充p = (f-1)/2 圈的0,这样输入的图像尺寸变成了(n+2p)*(n+2p),因此卷积后的大小变成了(n+2p -f + 1)*(n+2p -f + 1)=n*n,即与原始的图像有了相同的大小,且原始图像边缘的像素也被较多的利用到。
3. 几点补充
(1)卷积锋歼核的尺寸设置为 奇数 :因为① 这样(f-1)/2就恰好是整数了,方便进行padding,② 有中心像素,便于表征卷积核的位置,等。
(2)根据是否进行padding,分为 普通卷积(valid) 和 同尺寸卷积(same)
1. 步长概念
在上文中讲到卷积,即使用一个卷积核对输入图像进行“扫描”并进行相应计算时,提到这个“扫描”是逐个像素逐个像素的迈进的。但是,并不一定非得这样,也可以每次跨越两个或更多个像素,这就是“步长”的概念,一般用s表示
2. 卷积结果尺寸与步长的关系
前文提到,若输入图像尺寸为n*n,卷积核尺寸为f*f,则卷积结果尺寸为(n+f-1)*(n+f-1),若算上padding操作,则结果为(n+2p -f + 1)*(n+2p -f + 1)。这是在步长s=1的前提下成立。若步长不为1,则结果为floor((n+2p-f)/s+1)**2
3. 其它:数学中的卷积和神经网络中的卷积
需要说明的是,神经网络中所说的卷积和数学中说的卷积不是一回事,但数学中的卷积是啥就不追究了。
神经网凳基枯络中的卷积操作,在数学的描述上,更像是一种“交叉相关性”的计算,可以看出,若目标区域与卷积核有类似的分布,则会计算出较大的正值(正相关),若有相反的分布,则会计算出较大的负值(负相关),若没什么关系,则会计算出接近0的值(不相关)。卷积操作的确很像一种相关性的计算。
1. RGB图像的数学构成
灰度图像是一个n*n的二维矩阵,彩色图像则是n*n*3 的三维矩阵,最外围的三个维度分别代表了RGB三原色的值,其中数字“3”在卷积神经网络中被称为通道数或信道数
2. 对RGB图像进行卷积
在对灰度图像进行卷积时,使用的是f*f的二维卷积核。在对RGB图像进行卷积时,则卷积核的维度也+1,变成了f*f*3。一次卷积的结果仍然是把所有的值加起来输出一个值。即: 一个三维的图像,和一个三维的卷积核,在进行完卷积操作后,输出的是一个二维的矩阵(如上图) 。
3. 当使用多个卷积核时的输出
如上图所示,可以使用多个卷积核(一个亮黄色,一个屎黄色)。根据前文描述,一个立体的卷积核在一个立体的矩阵上扫描完,结果是一个二维的。但当使用多个卷积核时,则输出了多个二维矩阵,这些二维矩阵沿着第三个维度排列到一起,使得结果重新变成了三维。此时,第三个维度的尺寸,反应的是卷积核数,也就是说 卷积核数就是信道数 。直观理解,每一个卷积核代表着检测了某一种特征,多个卷积核就是同时检测了多种特征,传递了多种信息。
1. 一个卷积层的数据的基本流
如上图所示,由于卷积核本身就是一堆待学参数w,所以卷积操作本质还是“加权求和”,之后会加入偏置值,然后进行非线性变换,然后输出(到下一层),可见还是那一套。
需要提一下的是,卷积的输入不一定是原始图像构成的矩阵,还有可能是上一个卷积的结果。原始图像是彩色的,有多个通道。卷积时可以用多个卷积核,最终产生的结果也是立体的。因此原始的输入与中间卷积层的输出,在数学形式上是统一的。因此可以“输入-卷积层-卷积层-...”这样操作。
2. 卷积层的参数规模
一个卷积层总的参数规模(包括w,不包括b)为: ,即:卷积核的大小的平方*上层输出的通道数)*本层所用的卷积核数。与上层输入的大小无关(但与通道数有关)
3. 一个卷积层涉及到的超参
卷积核的大小、是否padding、步长、卷积核数。
1. 一个示例
上图为一个简单的卷积神经网络示例: 一层一层的卷积,最后把所有的元素展开成一个一维向量,然后加一个全连接层。
2. 注意以下几点:
1⃣️ 实际上CNN会有卷积层、池化层、全连接层,而非仅有卷积和全连接;
2⃣️ 从数据的构成形式上看,按照网络从前往后的顺序,图片尺寸不断减小,信道数量不断增加。一般遵从这个趋势。
1. 池化
如上图所示,假设输入是一个4*4的矩阵,现在我们把它分割成2*2四个子矩阵(或者说使用一个2*2的核以2为步长扫描矩阵),对四个子区域分别求最大值,最终得到一个值为9、2、6、3的2*2的矩阵输出。这种操作就叫池化,具体为最大值池化。
2. 池化的作用
1⃣️ 一般来说,较大的值往往代表学到了一个重要或典型的特征,把原始输入以某种方式滤除掉一些不重要的值,只保留一些较大的值,相当于 强化了一些重要信息的表达 。2⃣️ 降低图片的尺寸,可以节省空间、加速运算等。
3. 池化的特点
并没有需要学习的参数(w、b之类的),也因此“池化层”一般并不被称为单独的一层。在卷积神经网络中,通常把一个卷积层+一个池化层的组合叫一层。
4. 池化的超参数及经验值
池化层没有要学习的参数,只有核心的两个超参:池化核的大小、池化步长。此外还有池化所用的reduce操作:最大或者平均(没有其它选项)。
一般把池化核的大小设置为3或2,步长为2。注意:步长为2意味着把图片减小到原来的一半。
reduce操作最常用最大池化,偶尔用平均池化,不会用其它操作。
上图为一个典型的卷积神经网络示例,描述如下:
输入层 :彩色的手写数字图片,数学构成为32*32*3的矩阵,其中3为通道数。
Layer 1-卷积层 :1)使用6个5*5*3的卷积核,以步长为1对输入层进行卷积,输出28*28*6的矩阵,2)然后使用2*2的最大池化,步长为2,最终输出14*14*6的矩阵。其中14为图片尺寸,6为信道数。
Layer2-卷积层 :1)使用16个5*5*3的卷积核以步长1对上层输出进行卷积,输出10*10*16的矩阵,2)然后使用2*2的最大池化,步长为2,最终输出5*5*16的矩阵。
Layer3-全连接层: 把上层输出的5*5*16矩阵展开成1*400的一维向量,以120*400的权重矩阵送入本层120个神经元,激活后输出。
Layer4-全连接层: 120-84,激活后输出
输出层 :84 - 10,然后softmax后输出。
1. 参数少
假如原始图片尺寸为100*100*3,假设使用全连接,即使第二层仅用100个神经元,那也已经产生了100*100*3*100 = 300w个参数,难以想象。
假设使用卷积层,使用10个10*10*3的卷积核,那就是只有3000个参数,而能输出的矩阵规模是91*91*10=81000
2. 参数少的原因
1)稀疏连接:卷积核扫描矩阵产生输出,这个过程就从“神经元连接”的角度看,输入的左上角只连着输出的左上角,右上角只连右上角,而非“全连接”,参数就会少很多。2)参数共享:这么稀疏的连接,还是使用了同一套参数,进一步减少了参数的量。
3. 参数共享的其它好处
如果图片上有一只猫,那么不管这个猫在图片的什么位置,都不改变“这是一张猫的照片”。使用参数共享时,相当于用同样的特征提取作用到整个图片的各个区域,适应平移不变性,增强鲁棒性。
关于卷积神经网络示意图和卷积神经网络百度百科的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。