导航:首页 > 网络共享 > 多个神经网络联合训练共享权重

多个神经网络联合训练共享权重

发布时间:2023-03-10 14:27:52

❶ 神经网络,训练样本过多,怎样先用一组数据训练后再用另一组数据训练(在上组数据训练结果的基础上)

继承权重啊。
但是这样的话新训练的权重对于旧的数据是无效的。

❷ 神经网络浅谈

人工智能技术是当前炙手可热的话题,而基于神经网络的深度学习技术更是热点中的热点。去年谷歌的Alpha Go 以4:1大比分的优势战胜韩国的李世石九段,展现了深度学习的强大威力,后续强化版的Alpha Master和无师自通的Alpha Zero更是在表现上完全碾压前者。不论你怎么看,以深度学习为代表的人工智能技术正在塑造未来。

下图为英伟达(NVIDIA)公司近年来的股价情况, 该公司的主要产品是“图形处理器”(GPU),而GPU被证明能大大加快神经网络的训练速度,是深度学习必不可少的计算组件。英伟达公司近年来股价的飞涨足以证明当前深度学习的井喷之势。

好,话不多说,下面简要介绍神经网络的基本原理、发展脉络和优势。

神经网络是一种人类由于受到生物神经细胞结构启发而研究出的一种算法体系,是机器学习算法大类中的一种。首先让我们来看人脑神经元细胞:

一个神经元通常具有多个树突 ,主要用来接受传入信息,而轴突只有一条,轴突尾端有许多轴突末梢,可以给其他多个神经元传递信息。轴突末梢跟其他神经元的树突产生连接,从而传递信号

下图是一个经典的神经网络(Artificial Neural Network,ANN):

乍一看跟传统互联网的拓扑图有点类似,这也是称其为网络的原因,不同的是节点之间通过有向线段连接,并且节点被分成三层。我们称图中的圆圈为神经元,左边三个神经元组成的一列为输入层,中间神经元列为隐藏层,右边神经元列为输出层,神经元之间的箭头为权重。

神经元是计算单元,相当于神经元细胞的细胞核,利用输入的数据进行计算,然后输出,一般由一个线性计算部分和一个非线性计算部分组成;输入层和输出层实现数据的输入输出,相当于细胞的树突和轴突末梢;隐藏层指既不是输入也不是输出的神经元层,一个神经网络可以有很多个隐藏层。

神经网络的关键不是圆圈代表的神经元,而是每条连接线对应的权重。每条连接线对应一个权重,也就是一个参数。权重具体的值需要通过神经网络的训练才能获得。我们实际生活中的学习体现在大脑中就是一系列神经网络回路的建立与强化,多次重复的学习能让回路变得更加粗壮,使得信号的传递速度加快,最后对外表现为“深刻”的记忆。人工神经网络的训练也借鉴于此,如果某种映射关系出现很多次,那么在训练过程中就相应调高其权重。

1943年,心理学家McCulloch和数学家Pitts参考了生物神经元的结构,发表了抽象的神经元模型MP:

符号化后的模型如下:

Sum函数计算各权重与输入乘积的线性组合,是神经元中的线性计算部分,而sgn是取符号函数,当输入大于0时,输出1,反之输出0,是神经元中的非线性部分。向量化后的公式为z=sgn(w^T a)(w^T=(w_1,w_2,w_3),a=〖(a_1,a_2,a_3)〗^T)。

但是,MP模型中,权重的值都是预先设置的,因此不能学习。该模型虽然简单,并且作用有限,但已经建立了神经网络大厦的地基

1958年,计算科学家Rosenblatt提出了由两层神经元组成(一个输入层,一个输出层)的神经网络。他给它起了一个名字–“感知器”(Perceptron)

感知器是当时首个可以学习的人工神经网络。Rosenblatt现场演示了其学习识别简单图像的过程,在当时引起了轰动,掀起了第一波神经网络的研究热潮。

但感知器只能做简单的线性分类任务。1969年,人工智能领域的巨擘Minsky指出这点,并同时指出感知器对XOR(异或,即两个输入相同时输出0,不同时输出1)这样的简单逻辑都无法解决。所以,明斯基认为神经网络是没有价值的。

随后,神经网络的研究进入低谷,又称 AI Winter 。

Minsky说过单层神经网络无法解决异或问题,但是当增加一个计算层以后,两层神经网络不仅可以解决异或问题,而且具有非常好的非线性分类效果。

下图为两层神经网络(输入层一般不算在内):

上图中,输出层的输入是上一层的输出。

向量化后的公式为:

注意:

每个神经元节点默认都有偏置变量b,加上偏置变量后的计算公式为:

同时,两层神经网络不再使用sgn函数作为激励函数,而采用平滑的sigmoid函数:

σ(z)=1/(1+e^(-z) )

其图像如下:

理论证明: 两层及以上的神经网络可以无限逼近真实的对应函数,从而模拟数据之间的真实关系 ,这是神经网络强大预测能力的根本。但两层神经网络的计算量太大,当时的计算机的计算能力完全跟不上,直到1986年,Rumelhar和Hinton等人提出了反向传播(Backpropagation,BP)算法,解决了两层神经网络所需要的复杂计算量问题,带动了业界使用两层神经网络研究的热潮。

但好景不长,算法的改进仅使得神经网络风光了几年,然而计算能力不够,局部最优解,调参等一系列问题一直困扰研究人员。90年代中期,由Vapnik等人发明的SVM(Support Vector Machines,支持向量机)算法诞生,很快就在若干个方面体现出了对比神经网络的优势:无需调参;高效;全局最优解。

由于以上原因,SVM迅速打败了神经网络算法成为主流。神经网络的研究再一次进入低谷, AI Winter again 。

多层神经网络一般指两层或两层以上的神经网络(不包括输入层),更多情况下指两层以上的神经网络。

2006年,Hinton提出使用 预训练 ”(pre-training)和“微调”(fine-tuning)技术能优化神经网络训练,大幅度减少训练多层神经网络的时间

并且,他给多层神经网络相关的学习方法赋予了一个新名词–“ 深度学习 ”,以此为起点,“深度学习”纪元开始了:)

“深度学习”一方面指神经网络的比较“深”,也就是层数较多;另一方面也可以指神经网络能学到很多深层次的东西。研究发现,在权重参数不变的情况下,增加神经网络的层数,能增强神经网络的表达能力。

但深度学习究竟有多强大呢?没人知道。2012年,Hinton与他的学生在ImageNet竞赛中,用多层的卷积神经网络成功地对包含一千类别的一百万张图片进行了训练,取得了分类错误率15%的好成绩,这个成绩比第二名高了近11个百分点,充分证明了多层神经网络识别效果的优越性。

同时,科研人员发现GPU的大规模并行矩阵运算模式完美地契合神经网络训练的需要,在同等情况下,GPU的速度要比CPU快50-200倍,这使得神经网络的训练时间大大减少,最终再一次掀起了神经网络研究的热潮,并且一直持续到现在。

2016年基于深度学习的Alpha Go在围棋比赛中以4:1的大比分优势战胜了李世石,深度学习的威力再一次震惊了世界。

神经网络的发展历史曲折荡漾,既有被捧上神坛的高潮,也有无人问津的低谷,中间经历了数次大起大落,我们姑且称之为“三起三落”吧,其背后则是算法的改进和计算能力的持续发展。

下图展示了神经网络自发明以来的发展情况及一些重大时间节点。

当然,对于神经网络我们也要保持清醒的头脑。由上图,每次神经网络研究的兴盛期持续10年左右,从最近2012年算起,或许10年后的2022年,神经网络的发展将再次遇到瓶颈。

神经网络作为机器学习的一种,其模型训练的目的,就是使得参数尽可能的与真实的模型逼近。理论证明,两层及以上的神经网络可以无限逼近真实的映射函数。因此,给定足够的训练数据和训练时间,总能通过神经网络找到无限逼近真实关系的模型。

具体做法:首先给所有权重参数赋上随机值,然后使用这些随机生成的参数值,来预测训练数据中的样本。假设样本的预测目标为yp ,真实目标为y,定义值loss,计算公式如下:

loss = (yp -y) ^2

这个值称之为 损失 (loss),我们的目标就是使对所有训练数据的损失和尽可能的小,这就转化为求loss函数极值的问题。

一个常用方法是高等数学中的求导,但由于参数不止一个,求导后计算导数等于0的运算量很大,所以常用梯度下降算法来解决这样的优化问题。梯度是一个向量,由函数的各自变量的偏导数组成。

比如对二元函数 f =(x,y),则梯度∇f=(∂f/∂x,∂f/∂y)。梯度的方向是函数值上升最快的方向。梯度下降算法每次计算参数在当前的梯度,然后让参数向着梯度的反方向前进一段距离,不断重复,直到梯度接近零时截止。一般这个时候,所有的参数恰好达到使损失函数达到一个最低值的状态。下图为梯度下降的大致运行过程:

在神经网络模型中,由于结构复杂,每次计算梯度的代价很大。因此还需要使用 反向传播 (Back Propagation)算法。反向传播算法利用了神经网络的结构进行计算,不一次计算所有参数的梯度,而是从后往前。首先计算输出层的梯度,然后是第二个参数矩阵的梯度,接着是中间层的梯度,再然后是第一个参数矩阵的梯度,最后是输入层的梯度。计算结束以后,所要的两个参数矩阵的梯度就都有了。当然,梯度下降只是其中一个优化算法,其他的还有牛顿法、RMSprop等。

确定loss函数的最小值后,我们就确定了整个神经网络的权重,完成神经网络的训练。

在神经网络中一样的参数数量,可以用更深的层次去表达。

由上图,不算上偏置参数的话,共有三层神经元,33个权重参数。

由下图,保持权重参数不变,但增加了两层神经元。

在多层神经网络中,每一层的输入是前一层的输出,相当于在前一层的基础上学习,更深层次的神经网络意味着更深入的表示特征,以及更强的函数模拟能力。更深入的表示特征可以这样理解,随着网络的层数增加,每一层对于前一层次的抽象表示更深入。

如上图,第一个隐藏层学习到“边缘”的特征,第二个隐藏层学习到“边缘”组成的“形状”的特征,第三个隐藏层学习到由“形状”组成的“图案”的特征,最后的隐藏层学习到由“图案”组成的“目标”的特征。通过抽取更抽象的特征来对事物进行区分,从而获得更好的区分与分类能力。

前面提到, 明斯基认为Rosenblatt提出的感知器模型不能处理最简单的“异或”(XOR)非线性问题,所以神经网络的研究没有前途,但当增加一层神经元后,异或问题得到了很好地解决,原因何在?原来从输入层到隐藏层,数据发生了空间变换,坐标系发生了改变,因为矩阵运算本质上就是一种空间变换。

如下图,红色和蓝色的分界线是最终的分类结果,可以看到,该分界线是一条非常平滑的曲线。

但是,改变坐标系后,分界线却表现为直线,如下图:

同时,非线性激励函数的引入使得神经网络对非线性问题的表达能力大大加强。

对于传统的朴素贝叶斯、决策树、支持向量机SVM等分类器,提取特征是一个非常重要的前置工作。在正式训练之前,需要花费大量的时间在数据的清洗上,这样分类器才能清楚地知道数据的维度,要不然基于概率和空间距离的线性分类器是没办法进行工作的。然而在神经网络中,由于巨量的线性分类器的堆叠(并行和串行)以及卷积神经网络的使用,它对噪声的忍耐能力、对多通道数据上投射出来的不同特征偏向的敏感程度会自动重视或忽略,这样我们在处理的时候,就不需要使用太多的技巧用于数据的清洗了。有趣的是,业内大佬常感叹,“你可能知道SVM等机器学习的所有细节,但是效果并不好,而神经网络更像是一个黑盒,很难知道它究竟在做什么,但工作效果却很好”。

人类对机器学习的环节干预越少,就意味着距离人工智能的方向越近。神经网络的这个特性非常有吸引力。

1) 谷歌的TensorFlow开发了一个非常有意思的神经网络 入门教程 ,用户可以非常方便地在网页上更改神经网络的参数,并且能看到实时的学习效率和结果,非常适合初学者掌握神经网络的基本概念及神经网络的原理。网页截图如下:

2) 深度学习领域大佬吴恩达不久前发布的《 神经网络和深度学习 》MOOC,现在可以在网易云课堂上免费观看了,并且还有中文字幕。

3) 《神经网络于深度学习》(Michael Nielsen着)、《白话深度学习与TensorFlow》也是不错的入门书籍。

如何理解人工智能神经网络中的权值共享问题

权值(权重)共享这个词是由LeNet5模型提出来的。以CNN为例,在对一张图偏进行卷积的过程中,使用的是同一个卷积核的参数。比如一个3×3×1的卷积核,这个卷积核内9个的参数被整张图共享,而不会因为图像内位置的不同而改变卷积核内的权系数。说的再直白一些,就是用一个卷积核不改变其内权系数的情况下卷积处理整张图片(当然CNN中每一层不会只有一个卷积核的,这样说只是为了方便解释而已)。

❹ ENAS:首个权值共享的神经网络搜索方法,千倍加速 | ICML 2018

论文: Efficient Neural Architecture Search via Parameter Sharing

  神经网络结构搜索(NAS)目前在图像分类的模型结构设计上有很大的成果,但十分耗时,主要花在搜索到的网络(child model)的训练。论文的主要工作是提出 Efficient Neural Architecture Search (ENAS),强制所有的child model进行权重共享,避免从零开始训练,从而达到提高效率的目的。虽然不同的模型使用不同的权重,但从迁移学习和多任务学习的研究结果来看,将当前任务的模型A学习到的参数应用于别的任务的模型B是可行的。从实验看来,不仅共享参数是可行的,而且能带来很强的表现,实验仅用单张1080Ti,相对与NAS有1000x倍加速

  NAS的搜索结果可以看作是大图中的子图,可以用单向无环图(DAG)来表示搜索空间,每个搜索的结构可以认为是图2的DAG一个子网。ENAS定义的DAG为所有子网的叠加,其中每个节点的每种计算类型都有自己的参数,当特定的计算方法激活时,参数才使用。因此,ENAS的设计允许子网进行参数共享,下面会介绍具体细节

  为了设计循环单元(recurrent cell),采用 节点的DAG,节点代表计算类型,边代表信息流向,ENAS的controller也是RNN,主要定义:1) 激活的边 2) 每个节点的计算类型。在NAS(Zoph 2017),循环单元的搜索空间在预先定义结构的拓扑结构(二叉树)上,仅学习每个节点的计算类型,而NAS则同时学习拓扑结构和计算类型,更灵活

  为了创建循环单元,the controller RNN首先采样 个block的结果,取 , 为当前单元输入信息(例如word embedding), 为前一个time step的隐藏层输出,具体步骤如下:

  注意到每对节点( )都有独立的参数 ,根据选择的索引决定使用哪个参数,因此,ENAS的所有循环单元能同一个共享参数集合。论文的搜索空间包含指数数量的配置,假设有N个节点和4种激活函数,则共有 种配置

  ENAS的controller为100个隐藏单元的LSTM,通过softmax分类器以自回归(autoregressive fashion)的方式进行选择的决定,上一个step的输出作为下一个step的输入embedding,controller的第一个step则接受空embedding输入。学习的参数主要有controller LSTM的参数 和子网的共享权重 ,ENAS的训练分两个交叉的阶段,第一阶段在完整的训练集上进行共享权重 学习,第二阶段训练controller LSTM的参数

  固定controller的策略 ,然后进行 进行随机梯度下降(SGD)来最小化交叉熵损失函数的期望 , 为模型 在mini-batch上的交叉熵损失,模型 从 采样而来

  梯度的计算如公式1, 上从 采样来的,集合所有模型的梯度进行更新。公式1是梯度的无偏估计,但有一个很高的方差(跟NAS一样,采样的模型性能差异),而论文发现,当 时,训练的效果还行

  固定 然后更新策略参数 ,目标是最大化期望奖励 ,使用Adam优化器,梯度计算使用Williams的REINFORCE方法,加上指数滑动平均来降低方差, 的计算在独立的验证集上进行,整体基本跟Zoph的NAS一样

  训练好的ENAS进行新模型构造,首先从训练的策略 采样几个新的结构,对于每个采样的模型,计算其在验证集的minibatch上的准确率,取准确率最高的模型进行从零开始的重新训练,可以对所有采样的网络进行从零训练,但是论文的方法准确率差不多,经济效益更大

  对于创建卷积网络,the controller每个decision block进行两个决定,这些决定构成卷积网络的一层:

  做 次选择产生 层的网络,共 种网络,在实验中,L取12

  NASNet提出设计小的模块,然后堆叠成完整的网络,主要设计convolutional cell和rection cell

  使用ENAS生成convolutional cell,构建B节点的DAG来代表单元内的计算,其中node 1和node 2代表单元输入,为完整网络中前两个单元的输出,剩余的 个节点,预测两个选择:1) 选择两个之前的节点作为当前节点输入 2) 选择用于两个输入的计算类型,共5种算子:identity, separable convolution with kernel size 3 × 3 and 5 × 5, and average pooling and max pooling with kernel size 3×3,然后将算子结果相加。对于 ,搜索过程如下:

  对于rection cell,可以同样地使用上面的搜索空间生成: 1) 如图5采样一个计算图 2) 将所有计算的stride改为2。这样rection cell就能将输入缩小为1/2,controller共预测 blocks
  最后计算下搜索空间的复杂度,对于node i ,troller选择前 个节点中的两个,然后选择五种算子的两种,共 种坑的单元。因为两种单元是独立的,所以搜索空间的大小最终为 ,对于 ,大约 种网络

  节点的计算做了一点修改,增加highway connections,例如 修改为 ,其中 , 为elementwise乘法。搜索到的结果如图6所示,有意思的是:1) 激活方法全部为tanh或ReLU 2) 结构可能为局部最优,随机替换节点的激活函数都会造成大幅的性能下降 3) 搜索的输出是6个node的平均,与mixture of contexts(MoC)类似

  单1080Ti训练了10小时,Penn Treebank上的结果如表1所示,PPL越低则性能越好,可以看到ENAS不准复杂度低,参数量也很少

  表2的第一块为最好的分类网络DenseNet的结构,第二块为ENAS设计整个卷积网络的结果(感觉这里不应有micro search space),第三块为设计单元的结果

  全网络搜索的最优结构如图7所示,达到4.23%错误率,比NAS的效果要好,大概单卡搜索7小时,相对NAS有50000x倍加速

  单元搜索的结构如图8所示,单卡搜索11.5小时, ,错误率为3.54%,加上CutOut增强后比NASNet要好。论文发现ENAS搜索的结构都是局部最优的,修改都会带来性能的降低,而ENAS不采样多个网络进行训练,这个给NAS带来很大性能的提升

  NAS是自动设计网络结构的重要方法,但需要耗费巨大的资源,导致不能广泛地应用,而论文提出的 Efficient Neural Architecture Search (ENAS),在搜索时对子网的参数进行共享,相对于NAS有超过1000x倍加速,单卡搜索不到半天,而且性能并没有降低,十分值得参考



❺ BP神经网络连接权值如何确定

确认方法:
统计学认为,在统计中计算平均数等指标时,对各个变量值具有权衡轻重作用的数值就称为权数。
例子:求下列数串的平均数
3、4、3、3、3、2、4、4、3、3、
一般求法为(3+4+3+3+3+2+4+4+3+3)/10=3.2
加权求法为(6*3+3*4+2)/10=3.2
其中3出现6次,4出现3次,2出现1次.6、3、1就叫权数。这种方法叫加权法。
一般说的平均数,就是把所有的数加起来,再除以这些数的总个数。表示为:
(p1+p2+p3+…..+pn)/n;
但有的数据记录中有一些相同的数据,在计算的时候,那一个数有几个相同数,就把这个数乘上几,这个几,就叫权,加权,就是乘上几后再加。平均数还是要除以总个数。
还是以上面的各个数为例:
它们每个数都有一些相同数,表示为:k1,k2,k3…….kn;
加权平均的公式是:(k1p1+k2p2+k3p3+……knpn)/(k1+k2+k3+…..kn)

❻ 神经网络权值怎么确定

神经网络的权值是通过对网络的训练得到的。如果使用MATLAB的话不要自己设定,newff之后会自动赋值。也可以手动:net.IW{}= ; net.bias{}=。一般来说输入归一化,那么w和b取0-1的随机数就行。神经网络的权值确定的目的是为了让神经网络在训练过程中学习到有用的信息,这意味着参数梯度不应该为0。

参数初始化要满足两个必要条件:

1、各个激活层不会出现饱和现象,比如对于sigmoid激活函数,初始化值不能太大或太小,导致陷入其饱和区。

2、各个激活值不为0,如果激活层输出为零,也就是下一层卷积层的输入为零,所以这个卷积层对权值求偏导为零,从而导致梯度为0。

(6)多个神经网络联合训练共享权重扩展阅读:

神经网络和权值的关系。

在训练智能体执行任务时,会选择一个典型的神经网络框架,并相信它有潜力为这个任务编码特定的策略。注意这里只是有潜力,还要学习权重参数,才能将这种潜力变化为能力。

受到自然界早成行为及先天能力的启发,在这项工作中,研究者构建了一个能自然执行给定任务的神经网络。也就是说,找到一个先天的神经网络架构,然后只需要随机初始化的权值就能执行任务。研究者表示,这种不用学习参数的神经网络架构在强化学习与监督学习都有很好的表现。

其实如果想象神经网络架构提供的就是一个圈,那么常规学习权值就是找到一个最优点(或最优参数解)。但是对于不用学习权重的神经网络,它就相当于引入了一个非常强的归纳偏置,以至于,整个架构偏置到能直接解决某个问题。

但是对于不用学习权重的神经网络,它相当于不停地特化架构,或者说降低模型方差。这样,当架构越来越小而只包含最优解时,随机化的权值也就能解决实际问题了。如研究者那样从小架构到大架构搜索也是可行的,只要架构能正好将最优解包围住就行了。

❼ 卷积神经网络的 卷积层、激活层、池化层、全连接层

数据输入的是一张图片(输入层),CONV表示卷积层,RELU表示激励层,POOL表示池化层,Fc表示全连接层

全连接神经网络需要非常多的计算资源才能支撑它来做反向传播和前向传播,所以说全连接神经网络可以存储非常多的参数,如果你给它的样本如果没有达到它的量级的时候,它可以轻轻松松把你给他的样本全部都记下来,这会出现过拟合的情况。

所以我们应该把神经元和神经元之间的连接的权重个数降下来,但是降下来我们又不能保证它有较强的学习能力,所以这是一个纠结的地方,所以有一个方法就是 局部连接+权值共享 ,局部连接+权值共享不仅权重参数降下来了,而且学习能力并没有实质的降低,除此之外还有其它的好处,下来看一下,下面的这几张图片:

一个图像的不同表示方式

这几张图片描述的都是一个东西,但是有的大有的小,有的靠左边,有的靠右边,有的位置不同,但是我们构建的网络识别这些东西的时候应该是同一结果。为了能够达到这个目的,我们可以让图片的不同位置具有相同的权重(权值共享),也就是上面所有的图片,我们只需要在训练集中放一张,我们的神经网络就可以识别出上面所有的,这也是 权值共享 的好处。

而卷积神经网络就是局部连接+权值共享的神经网络。

现在我们对卷积神经网络有一个初步认识了,下面具体来讲解一下卷积神经网络,卷积神经网络依旧是层级结构,但层的功能和形式做了改变,卷积神经网络常用来处理图片数据,比如识别一辆汽车:

在图片输出到神经网络之前,常常先进行图像处理,有 三种 常见的图像的处理方式:

均值化和归一化

去相关和白化

图片有一个性质叫做局部关联性质,一个图片的像素点影响最大的是它周边的像素点,而距离这个像素点比较远的像素点二者之间关系不大。这个性质意味着每一个神经元我们不用处理全局的图片了(和上一层全连接),我们的每一个神经元只需要和上一层局部连接,相当于每一个神经元扫描一小区域,然后许多神经元(这些神经元权值共享)合起来就相当于扫描了全局,这样就构成一个特征图,n个特征图就提取了这个图片的n维特征,每个特征图是由很多神经元来完成的。

在卷积神经网络中,我们先选择一个局部区域(filter),用这个局部区域(filter)去扫描整张图片。 局部区域所圈起来的所有节点会被连接到下一层的 一个节点上 。我们拿灰度图(只有一维)来举例:

局部区域

图片是矩阵式的,将这些以矩阵排列的节点展成了向量。就能更好的看出来卷积层和输入层之间的连接,并不是全连接的,我们将上图中的红色方框称为filter,它是2*2的,这是它的尺寸,这不是固定的,我们可以指定它的尺寸。

我们可以看出来当前filter是2*2的小窗口,这个小窗口会将图片矩阵从左上角滑到右下角,每滑一次就会一下子圈起来四个,连接到下一层的一个神经元,然后产生四个权重,这四个权重(w1、w2、w3、w4)构成的矩阵就叫做卷积核。

卷积核是算法自己学习得到的,它会和上一层计算,比如,第二层的0节点的数值就是局部区域的线性组合(w1 0+w2 1+w3 4+w4 5),即被圈中节点的数值乘以对应的权重后相加。

卷积核计算

卷积操作

我们前面说过图片不用向量表示是为了保留图片平面结构的信息。 同样的,卷积后的输出若用上图的向量排列方式则丢失了平面结构信息。 所以我们依然用矩阵的方式排列它们,就得到了下图所展示的连接,每一个蓝色结点连接四个黄色的结点。

卷积层的连接方式

图片是一个矩阵然后卷积神经网络的下一层也是一个矩阵,我们用一个卷积核从图片矩阵左上角到右下角滑动,每滑动一次,当然被圈起来的神经元们就会连接下一层的一个神经元,形成参数矩阵这个就是卷积核,每次滑动虽然圈起来的神经元不同,连接下一层的神经元也不同,但是产生的参数矩阵确是一样的,这就是 权值共享

卷积核会和扫描的图片的那个局部矩阵作用产生一个值,比如第一次的时候,(w1 0+w2 1+w3 4+w4 5),所以,filter从左上到右下的这个过程中会得到一个矩阵(这就是下一层也是一个矩阵的原因),具体过程如下所示:

卷积计算过程

上图中左边是图矩阵,我们使用的filter的大小是3 3的,第一次滑动的时候,卷积核和图片矩阵作用(1 1+1 0+1 1+0 0+1 1+1 0+0 1+0 0+1 1)=4,会产生一个值,这个值就是右边矩阵的第一个值,filter滑动9次之后,会产生9个值,也就是说下一层有9个神经元,这9个神经元产生的值就构成了一个矩阵,这矩阵叫做特征图,表示image的某一维度的特征,当然具体哪一维度可能并不知道,可能是这个图像的颜色,也有可能是这个图像的轮廓等等。

单通道图片总结 :以上就是单通道的图片的卷积处理,图片是一个矩阵,我们用指定大小的卷积核从左上角到右下角来滑动,每次滑动所圈起来的结点会和下一层的一个结点相连,连接之后就会形成局部连接,每一条连接都会产生权重,这些权重就是卷积核,所以每次滑动都会产生一个卷积核,因为权值共享,所以这些卷积核都是一样的。卷积核会不断和当时卷积核所圈起来的局部矩阵作用,每次产生的值就是下一层结点的值了,这样多次产生的值组合起来就是一个特征图,表示某一维度的特征。也就是从左上滑动到右下这一过程中会形成一个特征图矩阵(共享一个卷积核),再从左上滑动到右下又会形成另一个特征图矩阵(共享另一个卷积核),这些特征图都是表示特征的某一维度。

三个通道的图片如何进行卷积操作?

至此我们应该已经知道了单通道的灰度图是如何处理的,实际上我们的图片都是RGB的图像,有三个通道,那么此时图像是如何卷积的呢?

彩色图像

filter窗口滑的时候,我们只是从width和height的角度来滑动的,并没有考虑depth,所以每滑动一次实际上是产生一个卷积核,共享这一个卷积核,而现在depth=3了,所以每滑动一次实际上产生了具有三个通道的卷积核(它们分别作用于输入图片的蓝色、绿色、红色通道),卷积核的一个通道核蓝色的矩阵作用产生一个值,另一个和绿色的矩阵作用产生一个值,最后一个和红色的矩阵作用产生一个值,然后这些值加起来就是下一层结点的值,结果也是一个矩阵,也就是一张特征图。

三通道的计算过程

要想有多张特征图的话,我们可以再用新的卷积核来进行左上到右下的滑动,这样就会形成 新的特征图

三通道图片的卷积过程

也就是说增加一个卷积核,就会产生一个特征图,总的来说就是输入图片有多少通道,我们的卷积核就需要对应多少通道,而本层中卷积核有多少个,就会产生多少个特征图。这样卷积后输出可以作为新的输入送入另一个卷积层中处理,有几个特征图那么depth就是几,那么下一层的每一个特征图就得用相应的通道的卷积核来对应处理,这个逻辑要清楚,我们需要先了解一下 基本的概念:

卷积计算的公式

4x4的图片在边缘Zero padding一圈后,再用3x3的filter卷积后,得到的Feature Map尺寸依然是4x4不变。

填充

当然也可以使用5x5的filte和2的zero padding可以保持图片的原始尺寸,3x3的filter考虑到了像素与其距离为1以内的所有其他像素的关系,而5x5则是考虑像素与其距离为2以内的所有其他像素的关系。

规律: Feature Map的尺寸等于

(input_size + 2 * padding_size − filter_size)/stride+1

我们可以把卷积层的作用 总结一点: 卷积层其实就是在提取特征,卷积层中最重要的是卷积核(训练出来的),不同的卷积核可以探测特定的形状、颜色、对比度等,然后特征图保持了抓取后的空间结构,所以不同卷积核对应的特征图表示某一维度的特征,具体什么特征可能我们并不知道。特征图作为输入再被卷积的话,可以则可以由此探测到"更大"的形状概念,也就是说随着卷积神经网络层数的增加,特征提取的越来越具体化。

激励层的作用可以理解为把卷积层的结果做 非线性映射

激励层

上图中的f表示激励函数,常用的激励函数几下几种:

常用的激励函数

我们先来看一下激励函数Sigmoid导数最小为0,最大为1/4,

激励函数Sigmoid

Tanh激活函数:和sigmoid相似,它会关于x轴上下对应,不至于朝某一方面偏向

Tanh激活函数

ReLU激活函数(修正线性单元):收敛快,求梯度快,但较脆弱,左边的梯度为0

ReLU激活函数

Leaky ReLU激活函数:不会饱和或者挂掉,计算也很快,但是计算量比较大

Leaky ReLU激活函数

一些激励函数的使用技巧 :一般不要用sigmoid,首先试RELU,因为快,但要小心点,如果RELU失效,请用Leaky ReLU,某些情况下tanh倒是有不错的结果。

这就是卷积神经网络的激励层,它就是将卷积层的线性计算的结果进行了非线性映射。可以从下面的图中理解。它展示的是将非线性操作应用到一个特征图中。这里的输出特征图也可以看作是"修正"过的特征图。如下所示:

非线性操作

池化层:降低了各个特征图的维度,但可以保持大分重要的信息。池化层夹在连续的卷积层中间,压缩数据和参数的量,减小过拟合,池化层并没有参数,它只不过是把上层给它的结果做了一个下采样(数据压缩)。下采样有 两种 常用的方式:

Max pooling :选取最大的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图中取出最大的元素,最大池化被证明效果更好一些。

Average pooling :平均的,我们定义一个空间邻域(比如,2x2 的窗口),并从窗口内的修正特征图算出平均值

Max pooling

我们要注意一点的是:pooling在不同的depth上是分开执行的,也就是depth=5的话,pooling进行5次,产生5个池化后的矩阵,池化不需要参数控制。池化操作是分开应用到各个特征图的,我们可以从五个输入图中得到五个输出图。

池化操作

无论是max pool还是average pool都有分信息被舍弃,那么部分信息被舍弃后会损坏识别结果吗?

因为卷积后的Feature Map中有对于识别物体不必要的冗余信息,我们下采样就是为了去掉这些冗余信息,所以并不会损坏识别结果。

我们来看一下卷积之后的冗余信息是怎么产生的?

我们知道卷积核就是为了找到特定维度的信息,比如说某个形状,但是图像中并不会任何地方都出现这个形状,但卷积核在卷积过程中没有出现特定形状的图片位置卷积也会产生一个值,但是这个值的意义就不是很大了,所以我们使用池化层的作用,将这个值去掉的话,自然也不会损害识别结果了。

比如下图中,假如卷积核探测"横折"这个形状。 卷积后得到3x3的Feature Map中,真正有用的就是数字为3的那个节点,其余数值对于这个任务而言都是无关的。 所以用3x3的Max pooling后,并没有对"横折"的探测产生影响。 试想在这里例子中如果不使用Max pooling,而让网络自己去学习。 网络也会去学习与Max pooling近似效果的权重。因为是近似效果,增加了更多的参数的代价,却还不如直接进行最大池化处理。

最大池化处理

在全连接层中所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。当前面卷积层抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 通常卷积网络的最后会将末端得到的长方体平摊成一个长长的向量,并送入全连接层配合输出层进行分类。比如,在下面图中我们进行的图像分类为四分类问题,所以卷积神经网络的输出层就会有四个神经元。

四分类问题

我们从卷积神经网络的输入层、卷积层、激活层、池化层以及全连接层来讲解卷积神经网络,我们可以认为全连接层之间的在做特征提取,而全连接层在做分类,这就是卷积神经网络的核心。

阅读全文

与多个神经网络联合训练共享权重相关的资料

热点内容
新品网络推广要多少钱 浏览:910
安广网络属于哪个网络 浏览:874
香港机场免费无线网络 浏览:674
万能移动网络机顶盒遥控 浏览:395
苹果8p网络差怎么改善 浏览:147
网络营销究竟是干嘛的 浏览:5
武汉移动网络好吗 浏览:713
网络营销推广工具 浏览:944
如何把管家婆做成网络版 浏览:602
移动网络进不去虚幻官网 浏览:422
html检测网络连接 浏览:149
鞍山网络营销微博 浏览:372
抑郁网络语是什么 浏览:917
网络借款哪个划算 浏览:187
电视网络连接正常但上不了网 浏览:317
无线只有网络没有信号怎么回事 浏览:287
电脑网络口闪橙色绿色 浏览:824
阴阳师网络异常怎么办 浏览:740
路由器登不上显示网络问题 浏览:835
随身wifi哪个牌子网络好 浏览:713

友情链接