当前位置:首页 » 操作系统 » bp神经网络算法详解

bp神经网络算法详解

发布时间: 2024-10-09 17:59:26

Ⅰ 一文彻底搞懂BP算法:原理推导+数据演示+项目实战(上篇)

反向传播算法(Backpropagation Algorithm,简称BP算法)是深度学习的重要思想基础,对于初学者来说也是必须要掌握的基础知识!本文希望以一个清晰的脉络和详细的说明,来让读者彻底明白BP算法的原理和计算过程。

全文分为上下两篇,上篇主要介绍BP算法的原理(即公式的推导),介绍完原理之后,我们会将一些具体的数据带入一个简单的三层神经网络中,去完整的体验一遍BP算法的计算过程;下篇是一个项目实战,我们将带着读者一起亲手实现一个BP神经网络(不使用任何第三方的深度学习框架)来解决一个具体的问题。

图 1 所示是一个简单的三层(两个隐藏层,一个输出层)神经网络结构,假设我们使用这个神经网络来解决二分类问题,我们给这个网络一个输入样本 ,通过前向运算得到输出 。输出值 的值域为 ,例如 的值越接近0,代表该样本是"0"类的可能性越大,反之是"1"类的可能性大。

为了便于理解后续的内容,我们需要先搞清楚前向传播的计算过程,以图1所示的内容为例:

输入的样本为:

第一层网络的参数为:

第二层网络的参数为:

第三层网络的参数为:

第一层隐藏层有三个神经元: 、 和 。该层的输入为:

以 神经元为例,则其输入为:

同理有:

假设我们选择函数 作为该层的激活函数(图1中的激活函数都标了一个下标,一般情况下,同一层的激活函数都是一样的,不同层可以选择不同的激活函数),那么该层的输出为: 、 和 。

第二层隐藏层有两个神经元: 和 。该层的输入为:

即第二层的输入是第一层的输出乘以第二层的权重,再加上第二层的偏置。因此得到和的输入分别为:

该层的输出分别为: 和 。

输出层只有一个神经元 :。该层的输入为:

即:

因为该网络要解决的是一个二分类问题,所以输出层的激活函数也可以使用一个Sigmoid型函数,神经网络最后的输出为: 。

在1.1节里,我们已经了解了数据沿着神经网络前向传播的过程,这一节我们来介绍更重要的反向传播的计算过程。假设我们使用随机梯度下降的方式来学习神经网络的参数,损失函数定义为 ,其中 是该样本的真实类标。使用梯度下降进行参数的学习,我们必须计算出损失函数关于神经网络中各层参数(权重 和偏置 )的偏导数。

假设我们要对第 层隐藏层的参数 和 求偏导数,即求 和 。假设 代表第 层神经元的输入,即 ,其中 为前一层神经元的输出,则根据链式法则有:

因此,我们只需要计算偏导数 、 和 。

前面说过,第k层神经元的输入为: ,因此可以得到:

上式中, 代表第 层神经元的权重矩阵 的第 行, 代表第 层神经元的权重矩阵 的第 行中的第 列。

我们以1.1节中的简单神经网络为例,假设我们要计算第一层隐藏层的神经元关于权重矩阵的导数,则有:

因为偏置b是一个常数项,因此偏导数的计算也很简单:

依然以第一层隐藏层的神经元为例,则有:

偏导数 又称为 误差项(error term,也称为“灵敏度”) ,一般用 表示,例如 是第一层神经元的误差项,其值的大小代表了第一层神经元对于最终总误差的影响大小。

根据第一节的前向计算,我们知道第 层的输入与第 层的输出之间的关系为:

又因为 ,根据链式法则,我们可以得到 为:

由上式我们可以看到,第 层神经元的误差项 是由第 层的误差项乘以第 层的权重,再乘以第 层激活函数的导数(梯度)得到的。这就是误差的反向传播。
现在我们已经计算出了偏导数 、 和 ,则 和 可分别表示为:

下面是基于随机梯度下降更新参数的反向传播算法:

单纯的公式推导看起来有些枯燥,下面我们将实际的数据带入图1所示的神经网络中,完整的计算一遍。

我们依然使用如图5所示的简单的神经网络,其中所有参数的初始值如下:

输入的样本为(假设其真实类标为"1"):

第一层网络的参数为:

第二层网络的参数为:

第三层网络的参数为:

假设所有的激活函数均为Logistic函数: 。使用均方误差函数作为损失函数:

为了方便求导,我们将损失函数简化为:

我们首先初始化神经网络的参数,计算第一层神经元:

上图中我们计算出了第一层隐藏层的第一个神经元的输入 和输出 ,同理可以计算第二个和第三个神经元的输入和输出:

接下来是第二层隐藏层的计算,首先我们计算第二层的第一个神经元的输入z₄和输出f₄(z₄):

同样方法可以计算该层的第二个神经元的输入 和输出 :

最后计算输出层的输入 和输出 :

首先计算输出层的误差项 ,我们的误差函数为 ,由于该样本的类标为“1”,而预测值为 ,因此误差为 ,输出层的误差项为:

接着计算第二层隐藏层的误差项,根据误差项的计算公式有:

最后是计算第一层隐藏层的误差项:

Ⅱ BP神经网络方法

人工神经网络是近几年来发展起来的新兴学科,它是一种大规模并行分布处理的非线性系统,适用解决难以用数学模型描述的系统,逼近任何非线性的特性,具有很强的自适应、自学习、联想记忆、高度容错和并行处理能力,使得神经网络理论的应用已经渗透到了各个领域。近年来,人工神经网络在水质分析和评价中的应用越来越广泛,并取得良好效果。在这些应用中,纵观应用于模式识别的神经网络,BP网络是最有效、最活跃的方法之一。

BP网络是多层前向网络的权值学习采用误差逆传播学习的一种算法(Error Back Propagation,简称BP)。在具体应用该网络时分为网络训练及网络工作两个阶段。在网络训练阶段,根据给定的训练模式,按照“模式的顺传播”→“误差逆传播”→“记忆训练”→“学习收敛”4个过程进行网络权值的训练。在网络的工作阶段,根据训练好的网络权值及给定的输入向量,按照“模式顺传播”方式求得与输入向量相对应的输出向量的解答(阎平凡,2000)。

BP算法是一种比较成熟的有指导的训练方法,是一个单向传播的多层前馈网络。它包含输入层、隐含层、输出层,如图4-4所示。

图4-4 地下水质量评价的BP神经网络模型

图4-4给出了4层地下水水质评价的BP神经网络模型。同层节点之间不连接。输入信号从输入层节点,依次传过各隐含层节点,然后传到输出层节点,如果在输出层得不到期望输出,则转入反向传播,将误差信号沿原来通路返回,通过学习来修改各层神经元的权值,使误差信号最小。每一层节点的输出只影响下一层节点的输入。每个节点都对应着一个作用函数(f)和阈值(a),BP网络的基本处理单元量为非线性输入-输出的关系,输入层节点阈值为0,且f(x)=x;而隐含层和输出层的作用函数为非线性的Sigmoid型(它是连续可微的)函数,其表达式为

f(x)=1/(1+e-x) (4-55)

设有L个学习样本(Xk,Ok)(k=1,2,…,l),其中Xk为输入,Ok为期望输出,Xk经网络传播后得到的实际输出为Yk,则Yk与要求的期望输出Ok之间的均方误差为

区域地下水功能可持续性评价理论与方法研究

式中:M为输出层单元数;Yk,p为第k样本对第p特性分量的实际输出;Ok,p为第k样本对第p特性分量的期望输出。

样本的总误差为

区域地下水功能可持续性评价理论与方法研究

由梯度下降法修改网络的权值,使得E取得最小值,学习样本对Wij的修正为

区域地下水功能可持续性评价理论与方法研究

式中:η为学习速率,可取0到1间的数值。

所有学习样本对权值Wij的修正为

区域地下水功能可持续性评价理论与方法研究

通常为增加学习过程的稳定性,用下式对Wij再进行修正:

区域地下水功能可持续性评价理论与方法研究

式中:β为充量常量;Wij(t)为BP网络第t次迭代循环训练后的连接权值;Wij(t-1)为BP网络第t-1次迭代循环训练后的连接权值。

在BP网络学习的过程中,先调整输出层与隐含层之间的连接权值,然后调整中间隐含层间的连接权值,最后调整隐含层与输入层之间的连接权值。实现BP网络训练学习程序流程,如图4-5所示(倪深海等,2000)。

图4-5 BP神经网络模型程序框图

若将水质评价中的评价标准作为样本输入,评价级别作为网络输出,BP网络通过不断学习,归纳出评价标准与评价级别间复杂的内在对应关系,即可进行水质综合评价。

BP网络对地下水质量综合评价,其评价方法不需要过多的数理统计知识,也不需要对水质量监测数据进行复杂的预处理,操作简便易行,评价结果切合实际。由于人工神经网络方法具有高度民主的非线性函数映射功能,使得地下水水质评价结果较准确(袁曾任,1999)。

BP网络可以任意逼近任何连续函数,但是它主要存在如下缺点:①从数学上看,它可归结为一非线性的梯度优化问题,因此不可避免地存在局部极小问题;②学习算法的收敛速度慢,通常需要上千次或更多。

神经网络具有学习、联想和容错功能,是地下水水质评价工作方法的改进,如何在现行的神经网络中进一步吸取模糊和灰色理论的某些优点,建立更适合水质评价的神经网络模型,使该模型既具有方法的先进性又具有现实的可行性,将是我们今后研究和探讨的问题。

Ⅲ 深入浅出BP神经网络算法的原理

深入浅出BP神经网络算法的原理
相信每位刚接触神经网络的时候都会先碰到BP算法的问题,如何形象快速地理解BP神经网络就是我们学习的高级乐趣了(画外音:乐趣?你在跟我谈乐趣?)
本篇博文就是要简单粗暴地帮助各位童鞋快速入门采取BP算法的神经网络。
BP神经网络是怎样的一种定义?看这句话:一种按“误差逆传播算法训练”的多层前馈网络。
BP的思想就是:利用输出后的误差来估计输出层前一层的误差,再用这层误差来估计更前一层误差,如此获取所有各层误差估计。这里的误差估计可以理解为某种偏导数,我们就是根据这种偏导数来调整各层的连接权值,再用调整后的连接权值重新计算输出误差。直到输出的误差达到符合的要求或者迭代次数溢出设定值。
说来说去,“误差”这个词说的很多嘛,说明这个算法是不是跟误差有很大的关系?
没错,BP的传播对象就是“误差”,传播目的就是得到所有层的估计误差。
它的学习规则是:使用最速下降法,通过反向传播(就是一层一层往前传)不断调整网络的权值和阈值,最后使全局误差系数最小。
它的学习本质就是:对各连接权值的动态调整。

拓扑结构如上图:输入层(input),隐藏层(hide layer),输出层(output)
BP网络的优势就是能学习和储存大量的输入输出的关系,而不用事先指出这种数学关系。那么它是如何学习的?
BP利用处处可导的激活函数来描述该层输入与该层输出的关系,常用S型函数δ来当作激活函数。

我们现在开始有监督的BP神经网络学习算法:
1、正向传播得到输出层误差e
=>输入层输入样本=>各隐藏层=>输出层
2、判断是否反向传播
=>若输出层误差与期望不符=>反向传播
3、误差反向传播
=>误差在各层显示=>修正各层单元的权值,直到误差减少到可接受程度。
算法阐述起来比较简单,接下来通过数学公式来认识BP的真实面目。
假设我们的网络结构是一个含有N个神经元的输入层,含有P个神经元的隐层,含有Q个神经元的输出层。

这些变量分别如下:

认识好以上变量后,开始计算:
一、用(-1,1)内的随机数初始化误差函数,并设定精度ε,最多迭代次数M
二、随机选取第k个输入样本及对应的期望输出

重复以下步骤至误差达到要求:
三、计算隐含层各神经元的输入和输出

四、计算误差函数e对输出层各神经元的偏导数,根据输出层期望输出和实际输出以及输出层输入等参数计算。

五、计算误差函数对隐藏层各神经元的偏导数,根据后一层(这里即输出层)的灵敏度(稍后介绍灵敏度)δo(k),后一层连接权值w,以及该层的输入值等参数计算
六、利用第四步中的偏导数来修正输出层连接权值

七、利用第五步中的偏导数来修正隐藏层连接权值

八、计算全局误差(m个样本,q个类别)

比较具体的计算方法介绍好了,接下来用比较简洁的数学公式来大致地概括这个过程,相信看完上述的详细步骤都会有些了解和领悟。
假设我们的神经网络是这样的,此时有两个隐藏层。
我们先来理解灵敏度是什么?
看下面一个公式:

这个公式是误差对b的一个偏导数,这个b是怎么?它是一个基,灵敏度δ就是误差对基的变化率,也就是导数。
因为?u/?b=1,所以?E/?b=?E/?u=δ,也就是说bias基的灵敏度?E/?b=δ等于误差E对一个节点全部输入u的导数?E/?u。
也可以认为这里的灵敏度等于误差E对该层输入的导数,注意了,这里的输入是上图U级别的输入,即已经完成层与层权值计算后的输入。
每一个隐藏层第l层的灵敏度为:

这里的“?”表示每个元素相乘,不懂的可与上面详细公式对比理解
而输出层的灵敏度计算方法不同,为:

而最后的修正权值为灵敏度乘以该层的输入值,注意了,这里的输入可是未曾乘以权值的输入,即上图的Xi级别。

对于每一个权值(W)ij都有一个特定的学习率ηIj,由算法学习完成。

Ⅳ 神经网络——BP算法

对于初学者来说,了解了一个算法的重要意义,往往会引起他对算法本身的重视。BP(Back Propagation,后向传播)算法,具有非凡的历史意义和重大的现实意义。

1969年,作为人工神经网络创始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一书,论证了简单的线性感知器功能有限,不能解决如“异或”(XOR )这样的基本问题,而且对多层网络也持悲观态度。这些论点给神经网络研究以沉重的打击,很多科学家纷纷离开这一领域,神经网络的研究走向长达10年的低潮时期。[1]

1974年哈佛大学的Paul Werbos发明BP算法时,正值神经外网络低潮期,并未受到应有的重视。[2]

1983年,加州理工学院的物理学家John Hopfield利用神经网络,在旅行商这个NP完全问题的求解上获得当时最好成绩,引起了轰动[2]。然而,Hopfield的研究成果仍未能指出明斯基等人论点的错误所在,要推动神经网络研究的全面开展必须直接解除对感知器——多层网络算法的疑虑。[1]

真正打破明斯基冰封魔咒的是,David Rumelhart等学者出版的《平行分布处理:认知的微观结构探索》一书。书中完整地提出了BP算法,系统地解决了多层网络中隐单元连接权的学习问题,并在数学上给出了完整的推导。这是神经网络发展史上的里程碑,BP算法迅速走红,掀起了神经网络的第二次高潮。[1,2]

因此,BP算法的历史意义:明确地否定了明斯基等人的错误观点,对神经网络第二次高潮具有决定性意义。

这一点是说BP算法在神经网络领域中的地位和意义。

BP算法是迄今最成功的神经网络学习算法,现实任务中使用神经网络时,大多是在使用BP算法进行训练[2],包括最近炙手可热的深度学习概念下的卷积神经网络(CNNs)。

BP神经网络是这样一种神经网络模型,它是由一个输入层、一个输出层和一个或多个隐层构成,它的激活函数采用sigmoid函数,采用BP算法训练的多层前馈神经网络。

BP算法全称叫作误差反向传播(error Back Propagation,或者也叫作误差逆传播)算法。其算法基本思想为:在2.1所述的前馈网络中,输入信号经输入层输入,通过隐层计算由输出层输出,输出值与标记值比较,若有误差,将误差反向由输出层向输入层传播,在这个过程中,利用梯度下降算法对神经元权值进行调整。

BP算法中核心的数学工具就是微积分的 链式求导法则 。

BP算法的缺点,首当其冲就是局部极小值问题。

BP算法本质上是梯度下降,而它所要优化的目标函数又非常复杂,这使得BP算法效率低下。

[1]、《BP算法的哲学思考》,成素梅、郝中华着

[2]、《机器学习》,周志华着

[3]、 Deep Learning论文笔记之(四)CNN卷积神经网络推导和实现

2016-05-13 第一次发布

2016-06-04 较大幅度修改,完善推导过程,修改文章名

2016-07-23 修改了公式推导中的一个错误,修改了一个表述错误

Ⅳ 神经网络BP模型

一、BP模型概述

误差逆传播(Error Back-Propagation)神经网络模型简称为BP(Back-Propagation)网络模型。

Pall Werbas博士于1974年在他的博士论文中提出了误差逆传播学习算法。完整提出并被广泛接受误差逆传播学习算法的是以Rumelhart和McCelland为首的科学家小组。他们在1986年出版“Parallel Distributed Processing,Explorations in the Microstructure of Cognition”(《并行分布信息处理》)一书中,对误差逆传播学习算法进行了详尽的分析与介绍,并对这一算法的潜在能力进行了深入探讨。

BP网络是一种具有3层或3层以上的阶层型神经网络。上、下层之间各神经元实现全连接,即下层的每一个神经元与上层的每一个神经元都实现权连接,而每一层各神经元之间无连接。网络按有教师示教的方式进行学习,当一对学习模式提供给网络后,神经元的激活值从输入层经各隐含层向输出层传播,在输出层的各神经元获得网络的输入响应。在这之后,按减小期望输出与实际输出的误差的方向,从输入层经各隐含层逐层修正各连接权,最后回到输入层,故得名“误差逆传播学习算法”。随着这种误差逆传播修正的不断进行,网络对输入模式响应的正确率也不断提高。

BP网络主要应用于以下几个方面:

1)函数逼近:用输入模式与相应的期望输出模式学习一个网络逼近一个函数;

2)模式识别:用一个特定的期望输出模式将它与输入模式联系起来;

3)分类:把输入模式以所定义的合适方式进行分类;

4)数据压缩:减少输出矢量的维数以便于传输或存储

在人工神经网络的实际应用中,80%~90%的人工神经网络模型采用BP网络或它的变化形式,它也是前向网络的核心部分,体现了人工神经网络最精华的部分。

二、BP模型原理

下面以三层BP网络为例,说明学习和应用的原理。

1.数据定义

P对学习模式(xp,dp),p=1,2,…,P;

输入模式矩阵X[N][P]=(x1,x2,…,xP);

目标模式矩阵d[M][P]=(d1,d2,…,dP)。

三层BP网络结构

输入层神经元节点数S0=N,i=1,2,…,S0;

隐含层神经元节点数S1,j=1,2,…,S1;

神经元激活函数f1[S1];

权值矩阵W1[S1][S0];

偏差向量b1[S1]。

输出层神经元节点数S2=M,k=1,2,…,S2;

神经元激活函数f2[S2];

权值矩阵W2[S2][S1];

偏差向量b2[S2]。

学习参数

目标误差ϵ;

初始权更新值Δ0

最大权更新值Δmax

权更新值增大倍数η+

权更新值减小倍数η-

2.误差函数定义

对第p个输入模式的误差的计算公式为

中国矿产资源评价新技术与评价新模型

y2kp为BP网的计算输出。

3.BP网络学习公式推导

BP网络学习公式推导的指导思想是,对网络的权值W、偏差b修正,使误差函数沿负梯度方向下降,直到网络输出误差精度达到目标精度要求,学习结束。

各层输出计算公式

输入层

y0i=xi,i=1,2,…,S0;

隐含层

中国矿产资源评价新技术与评价新模型

y1j=f1(z1j),

j=1,2,…,S1;

输出层

中国矿产资源评价新技术与评价新模型

y2k=f2(z2k),

k=1,2,…,S2。

输出节点的误差公式

中国矿产资源评价新技术与评价新模型

对输出层节点的梯度公式推导

中国矿产资源评价新技术与评价新模型

E是多个y2m的函数,但只有一个y2k与wkj有关,各y2m间相互独立。

其中

中国矿产资源评价新技术与评价新模型

中国矿产资源评价新技术与评价新模型

设输出层节点误差为

δ2k=(dk-y2k)·f2′(z2k),

中国矿产资源评价新技术与评价新模型

同理可得

中国矿产资源评价新技术与评价新模型

对隐含层节点的梯度公式推导

中国矿产资源评价新技术与评价新模型

E是多个y2k的函数,针对某一个w1ji,对应一个y1j,它与所有的y2k有关。因此,上式只存在对k的求和,其中

中国矿产资源评价新技术与评价新模型

中国矿产资源评价新技术与评价新模型

设隐含层节点误差为

中国矿产资源评价新技术与评价新模型

中国矿产资源评价新技术与评价新模型

同理可得

中国矿产资源评价新技术与评价新模型

4.采用弹性BP算法(RPROP)计算权值W、偏差b的修正值ΔW,Δb

1993年德国 Martin Riedmiller和Heinrich Braun 在他们的论文“A Direct Adaptive Method for Faster Backpropagation Learning:The RPROP Algorithm”中,提出Resilient Backpropagation算法——弹性BP算法(RPROP)。这种方法试图消除梯度的大小对权步的有害影响,因此,只有梯度的符号被认为表示权更新的方向。

权改变的大小仅仅由权专门的“更新值”

确定

中国矿产资源评价新技术与评价新模型

其中

表示在模式集的所有模式(批学习)上求和的梯度信息,(t)表示t时刻或第t次学习。

权更新遵循规则:如果导数是正(增加误差),这个权由它的更新值减少。如果导数是负,更新值增加。

中国矿产资源评价新技术与评价新模型

RPROP算法是根据局部梯度信息实现权步的直接修改。对于每个权,我们引入它的

各自的更新值

,它独自确定权更新值的大小。这是基于符号相关的自适应过程,它基

于在误差函数E上的局部梯度信息,按照以下的学习规则更新

中国矿产资源评价新技术与评价新模型

其中0<η-<1<η+

在每个时刻,如果目标函数的梯度改变它的符号,它表示最后的更新太大,更新值

应由权更新值减小倍数因子η-得到减少;如果目标函数的梯度保持它的符号,更新值应由权更新值增大倍数因子η+得到增大。

为了减少自由地可调参数的数目,增大倍数因子η+和减小倍数因子η被设置到固定值

η+=1.2,

η-=0.5,

这两个值在大量的实践中得到了很好的效果。

RPROP算法采用了两个参数:初始权更新值Δ0和最大权更新值Δmax

当学习开始时,所有的更新值被设置为初始值Δ0,因为它直接确定了前面权步的大小,它应该按照权自身的初值进行选择,例如,Δ0=0.1(默认设置)。

为了使权不至于变得太大,设置最大权更新值限制Δmax,默认上界设置为

Δmax=50.0。

在很多实验中,发现通过设置最大权更新值Δmax到相当小的值,例如

Δmax=1.0。

我们可能达到误差减小的平滑性能。

5.计算修正权值W、偏差b

第t次学习,权值W、偏差b的的修正公式

W(t)=W(t-1)+ΔW(t)

b(t)=b(t-1)+Δb(t)

其中,t为学习次数。

6.BP网络学习成功结束条件每次学习累积误差平方和

中国矿产资源评价新技术与评价新模型

每次学习平均误差

中国矿产资源评价新技术与评价新模型

当平均误差MSE<ε,BP网络学习成功结束。

7.BP网络应用预测

在应用BP网络时,提供网络输入给输入层,应用给定的BP网络及BP网络学习得到的权值W、偏差b,网络输入经过从输入层经各隐含层向输出层的“顺传播”过程,计算出BP网的预测输出。

8.神经元激活函数f

线性函数

f(x)=x,

f′(x)=1,

f(x)的输入范围(-∞,+∞),输出范围(-∞,+∞)。

一般用于输出层,可使网络输出任何值。

S型函数S(x)

中国矿产资源评价新技术与评价新模型

f(x)的输入范围(-∞,+∞),输出范围(0,1)。

f′(x)=f(x)[1-f(x)],

f′(x)的输入范围(-∞,+∞),输出范围(0,

]。

一般用于隐含层,可使范围(-∞,+∞)的输入,变成(0,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。

在用于模式识别时,可用于输出层,产生逼近于0或1的二值输出。

双曲正切S型函数

中国矿产资源评价新技术与评价新模型

f(x)的输入范围(-∞,+∞),输出范围(-1,1)。

f′(x)=1-f(x)·f(x),

f′(x)的输入范围(-∞,+∞),输出范围(0,1]。

一般用于隐含层,可使范围(-∞,+∞)的输入,变成(-1,1)的网络输出,对较大的输入,放大系数较小;而对较小的输入,放大系数较大,所以可用来处理和逼近非线性的输入/输出关系。

阶梯函数

类型1

中国矿产资源评价新技术与评价新模型

f(x)的输入范围(-∞,+∞),输出范围{0,1}。

f′(x)=0。

类型2

中国矿产资源评价新技术与评价新模型

f(x)的输入范围(-∞,+∞),输出范围{-1,1}。

f′(x)=0。

斜坡函数

类型1

中国矿产资源评价新技术与评价新模型

f(x)的输入范围(-∞,+∞),输出范围[0,1]。

中国矿产资源评价新技术与评价新模型

f′(x)的输入范围(-∞,+∞),输出范围{0,1}。

类型2

中国矿产资源评价新技术与评价新模型

f(x)的输入范围(-∞,+∞),输出范围[-1,1]。

中国矿产资源评价新技术与评价新模型

f′(x)的输入范围(-∞,+∞),输出范围{0,1}。

三、总体算法

1.三层BP网络(含输入层,隐含层,输出层)权值W、偏差b初始化总体算法

(1)输入参数X[N][P],S0,S1,f1[S1],S2,f2[S2];

(2)计算输入模式X[N][P]各个变量的最大值,最小值矩阵 Xmax[N],Xmin[N];

(3)隐含层的权值W1,偏差b1初始化。

情形1:隐含层激活函数f( )都是双曲正切S型函数

1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];

2)计算输入模式X的每个变量的范围均值向量Xmid[N];

3)计算W,b的幅度因子Wmag

4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];

5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];

6)计算W[S1][S0],b[S1];

7)计算隐含层的初始化权值W1[S1][S0];

8)计算隐含层的初始化偏差b1[S1];

9))输出W1[S1][S0],b1[S1]。

情形2:隐含层激活函数f( )都是S型函数

1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];

2)计算输入模式X的每个变量的范围均值向量Xmid[N];

3)计算W,b的幅度因子Wmag;

4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];

5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];

6)计算W[S1][S0],b[S1];

7)计算隐含层的初始化权值W1[S1][S0];

8)计算隐含层的初始化偏差b1[S1];

9)输出W1[S1][S0],b1[S1]。

情形3:隐含层激活函数f( )为其他函数的情形

1)计算输入模式X[N][P]的每个变量的范围向量Xrng[N];

2)计算输入模式X的每个变量的范围均值向量Xmid[N];

3)计算W,b的幅度因子Wmag

4)产生[-1,1]之间均匀分布的S0×1维随机数矩阵Rand[S1];

5)产生均值为0,方差为1的正态分布的S1×S0维随机数矩阵Randnr[S1][S0],随机数范围大致在[-1,1];

6)计算W[S1][S0],b[S1];

7)计算隐含层的初始化权值W1[S1][S0];

8)计算隐含层的初始化偏差b1[S1];

9)输出W1[S1][S0],b1[S1]。

(4)输出层的权值W2,偏差b2初始化

1)产生[-1,1]之间均匀分布的S2×S1维随机数矩阵W2[S2][S1];

2)产生[-1,1]之间均匀分布的S2×1维随机数矩阵b2[S2];

3)输出W2[S2][S1],b2[S2]。

2.应用弹性BP算法(RPROP)学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b总体算法

函数:Train3BP_RPROP(S0,X,P,S1,W1,b1,f1,S2,W2,b2,f2,d,TP)

(1)输入参数

P对模式(xp,dp),p=1,2,…,P;

三层BP网络结构;

学习参数。

(2)学习初始化

1)

2)各层W,b的梯度值

初始化为零矩阵。

(3)由输入模式X求第一次学习各层输出y0,y1,y2及第一次学习平均误差MSE

(4)进入学习循环

epoch=1

(5)判断每次学习误差是否达到目标误差要求

如果MSE<ϵ,

则,跳出epoch循环,

转到(12)。

(6)保存第epoch-1次学习产生的各层W,b的梯度值

(7)求第epoch次学习各层W,b的梯度值

1)求各层误差反向传播值δ;

2)求第p次各层W,b的梯度值

3)求p=1,2,…,P次模式产生的W,b的梯度值

的累加。

(8)如果epoch=1,则将第epoch-1次学习的各层W,b的梯度值

设为第epoch次学习产生的各层W,b的梯度值

(9)求各层W,b的更新

1)求权更新值Δij更新;

2)求W,b的权更新值

3)求第epoch次学习修正后的各层W,b。

(10)用修正后各层W、b,由X求第epoch次学习各层输出y0,y1,y2及第epoch次学习误差MSE

(11)epoch=epoch+1,

如果epoch≤MAX_EPOCH,转到(5);

否则,转到(12)。

(12)输出处理

1)如果MSE<ε,

则学习达到目标误差要求,输出W1,b1,W2,b2

2)如果MSE≥ε,

则学习没有达到目标误差要求,再次学习。

(13)结束

3.三层BP网络(含输入层,隐含层,输出层)预测总体算法

首先应用Train3lBP_RPROP( )学习三层BP网络(含输入层,隐含层,输出层)权值W、偏差b,然后应用三层BP网络(含输入层,隐含层,输出层)预测。

函数:Simu3lBP( )。

1)输入参数:

P个需预测的输入数据向量xp,p=1,2,…,P;

三层BP网络结构;

学习得到的各层权值W、偏差b。

2)计算P个需预测的输入数据向量xp(p=1,2,…,P)的网络输出 y2[S2][P],输出预测结果y2[S2][P]。

四、总体算法流程图

BP网络总体算法流程图见附图2。

五、数据流图

BP网数据流图见附图1。

六、实例

实例一 全国铜矿化探异常数据BP 模型分类

1.全国铜矿化探异常数据准备

在全国铜矿化探数据上用稳健统计学方法选取铜异常下限值33.1,生成全国铜矿化探异常数据。

2.模型数据准备

根据全国铜矿化探异常数据,选取7类33个矿点的化探数据作为模型数据。这7类分别是岩浆岩型铜矿、斑岩型铜矿、矽卡岩型、海相火山型铜矿、陆相火山型铜矿、受变质型铜矿、海相沉积型铜矿,另添加了一类没有铜异常的模型(表8-1)。

3.测试数据准备

全国化探数据作为测试数据集。

4.BP网络结构

隐层数2,输入层到输出层向量维数分别为14,9、5、1。学习率设置为0.9,系统误差1e-5。没有动量项。

表8-1 模型数据表

续表

5.计算结果图

如图8-2、图8-3。

图8-2

图8-3 全国铜矿矿床类型BP模型分类示意图

实例二 全国金矿矿石量品位数据BP 模型分类

1.模型数据准备

根据全国金矿储量品位数据,选取4类34个矿床数据作为模型数据,这4类分别是绿岩型金矿、与中酸性浸入岩有关的热液型金矿、微细浸染型型金矿、火山热液型金矿(表8-2)。

2.测试数据准备

模型样本点和部分金矿点金属量、矿石量、品位数据作为测试数据集。

3.BP网络结构

输入层为三维,隐层1层,隐层为三维,输出层为四维,学习率设置为0.8,系统误差1e-4,迭代次数5000。

表8-2 模型数据

4.计算结果

结果见表8-3、8-4。

表8-3 训练学习结果

表8-4 预测结果(部分)

续表

Ⅵ 什么是BP神经网络

BP算法的基本思想是:学习过程由信号正向传播与误差的反向回传两个部分组成;正向传播时,输入样本从输入层传入,经各隐层依次逐层处理,传向输出层,若输出层输出与期望不符,则将误差作为调整信号逐层反向回传,对神经元之间的连接权矩阵做出处理,使误差减小。经反复学习,最终使误差减小到可接受的范围。具体步骤如下:
1、从训练集中取出某一样本,把信息输入网络中。
2、通过各节点间的连接情况正向逐层处理后,得到神经网络的实际输出。
3、计算网络实际输出与期望输出的误差。
4、将误差逐层反向回传至之前各层,并按一定原则将误差信号加载到连接权值上,使整个神经网络的连接权值向误差减小的方向转化。
5、対训练集中每一个输入—输出样本对重复以上步骤,直到整个训练样本集的误差减小到符合要求为止。

热点内容
上传速度对网速的影响吗 发布:2024-10-09 20:09:38 浏览:560
密码锁芯在哪里能买到 发布:2024-10-09 20:05:33 浏览:451
传奇服务器强行下线是什么意思 发布:2024-10-09 20:05:11 浏览:919
sqljoinas 发布:2024-10-09 19:48:01 浏览:390
文本编辑器没有编译器可以吗 发布:2024-10-09 19:39:36 浏览:995
linux环境变量oracle 发布:2024-10-09 19:24:36 浏览:317
pythonimport找不到模块 发布:2024-10-09 19:23:45 浏览:508
安卓怎么卸载插件 发布:2024-10-09 19:07:13 浏览:930
see脚本 发布:2024-10-09 19:07:12 浏览:423
sqlleftouter 发布:2024-10-09 18:46:46 浏览:760