㈠ 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网络可以任意逼近任何连续函数,但是它主要存在如下缺点:①从数学上看,它可归结为一非线性的梯度优化问题,因此不可避免地存在局部极小问题;②学习算法的收敛速度慢,通常需要上千次或更多。
神经网络具有学习、联想和容错功能,是地下水水质评价工作方法的改进,如何在现行的神经网络中进一步吸取模糊和灰色理论的某些优点,建立更适合水质评价的神经网络模型,使该模型既具有方法的先进性又具有现实的可行性,将是我们今后研究和探讨的问题。
㈡ 梯度下降法的优化分析原理
梯度下降法的优化分析原理是让模型自动优化自身的各种参数。
梯度下降法简介:
梯度下降是迭代法的一种,可以用于求解最小二乘早雀核问题(线性和非线性都可以)。在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常采用的方法之一,另一种常用的方法是最小二乘法。
在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。反过来,如果我们需要求解损失函数的最大值,这时就需要用梯度上升法来迭代了。在机器学习中,基于基本的梯度下降法发展了两种梯度下降方法,分别为随机梯度下降岁罩法和批量梯度下降法。
㈢ 神经网络——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神经网络的MATLAB训练Gradient是什么意思Performance是什么意思,大神能解释一下吗谢谢了
Gradient是梯度的意思,BP神经网络训练的时候涉及到梯度下降法,表示为梯度下降的程度与训练过程迭代次数(步长)的关系。Performance是神经网络传递误差大小的意思,表示为均方差与训练过程迭代次数(步长)的关系。
㈤ 神经网络算法-梯度下降GradientDescent
神经网络文章索引
上一篇神经网络结构中,我们介绍了神经元的结构,激活函数以及每个神经元激活值的算法,涉及到权重、偏置值等。
上一篇结尾提到,对于28*28的黑白手写图像识别,我们需要13002个权重和偏置数值,才能让我们的神经网络最后输出正确结果。
所谓的机器学习,就是寻找这13002个数值的过程。首先这里有两点需要注意:
在负无穷到正无穷之间,如何获得一万多个数字最佳的匹配值?这比在全世界挑选1万人让TA们一起相爱还要难。
我们的做法是用计算机强大运算速度,暴力解决问题。
好了,现在,暴力不是问题,要想出奇迹的关键就在于如何找到如何 优化的规律 。
要想做优化,首先要明确目标,找到当前神经网络和期望结果之间的差距。
从下图可以看到,随机设定的神经网络最终输出的是混乱的一层(被黄色线框标出),距离最右边我们期望只点亮神经元3的情况差距很大。
我们把混乱输出层的每个神经元与期望层每个对应神经元激活值相减,然后平方,再累加在一起,这就是方差cost代价,如下图,计算得到cost是3.37。
我们用这个cost来表示当前神经网络13002个设定值和期望设定值之间的差距,当然,这个cost等于0是差距最小,也就是最接近期望设定值。——当然这只是针对数字3的1张图片来说,我们需要的是针对0~9共10个数字的数万张图片,cost都能是最小。
从下图,我们来看一下神经网络的功能。它能利用13002个设定值经过3层神经元激活值的计算,把784个像素亮度变为10个数字(我们期望这10个数字中只有一个是1,其他都是0)。
这13002个权重和偏置数字,加上激活值的算法,就是神经网络的“想法”。
我们再来看看代价函数的情况,如下图,它是利用很多很多的训练图片(已经明确了对应的数字),把13002个数字变为1个cost代价数。
写成函数形式
我们假设最简单的情况,只有1个权重和1个偏置:
x和y是任意可能的数值,我们希望知道当x和y是什么数值的时候z最小。
每一组[x,y]都对应唯一的z,我们可以假想,有无数个[x,y,z]这样的位置点,在三维空间坐标中,它们就会组成一个面(曲面或平面),如下图。
从几何意义上看,我们就是要找到凹陷最低的那个位置点的x,y的值,因为那里z也就是cost代价最低。
假设上面的xyz绘制的cost曲面是个山地,你是一个旅行者,需要行走找到最低点的位置,你会怎么办?
没错,只要一直往下走,那么就能走到所在区域的最低点。——当然,如果山后面还有更深的山谷,那么你可能找到的只是局部最低点,而并非世界最低点。
实际上,对于复杂的超多维度来说,找到世界最低点几乎是不可能任务。我们唯一能做的就是多找几个局部最低点,然后选择其中最低的那个。
同样,如果我们落脚在[x',y'],那么可以尝试对比[x'+0.1,y'],[x'-0.1,y'],[x',y'-0.1],[x',y'+0.1],如果[x'+0.1,y']是最低的,那么我们就走到这里,然后继续尝试对比四周点的高度。这就是梯度下降的算法。
如下图,我们沿着虚线一步一步下山找到最低点。
首先快速的从下图了解几个基本概念。
下图的弧线表示的是某个函数y=f(x),比如抛物线方程y=x 2 。
曲线上任取两个点a,b,它们对应x和x+dx。(d是指德尔塔大写Δ,小写δ)
ab两点对应的y的差是dy。
现在直线ab看上去是曲线的割线(有ab两个交点)。
假设b点沿着曲线,越来越靠近a点,那么dx极限趋近于0,这时候dy也会越来越小趋近于0,但是!我们会意识到dy/dx永远不会是0,而最终它仍然是角∠cab的对边比邻边,也就是正切三角函数值。
实际上,这也正是曲线的切线的定义。
可以想象,我们取的a点越是靠右,那么这个切线越是竖直。
如果我们把这个切线看做表示某个一次方程,如y=mx+n这种形式,那么a点越靠右,直线越竖直,m值也就越大。
我们把m值叫做直线的斜率。
导数derivative ,一元函数y=f(x)(即因变量y只受到一个自变量x影响的函数)中任意取x,如果x增加极小趋近于0的Δx(或者写为dx),那么y相应的被增加Δy(或者写作dy),那么导数就是dy/dx,而又有dy=f(x+dx)-f(x),所以:
从函数的曲线图上可以看到,某点的导数就是dx趋近于0时候∠cab的正切,导数反映了切线的陡峭程度,也就是y随着x变化的快慢程度。
微分differential ,简单说就是Δx和Δy,或者记作dx和dy。x称之为自变量,y称之为因变量,那么x趋近于最小的时候的值,就是x的微分(趋近0又不是0的那个神秘值),同样y的微分也是这个意思,总之是想得到又摸不到的神奇值。
斜率slope ,一元一次函数(直线方程)y=mx+n的系数m值。在这里就是a点的导数值f'(x)。
切线tangent ,某个点a的切线,就是经过a点的,以A点斜率为系数的方程y=f'(x)x+n所表示的直线。
自变量dependent variable和因变量 independent variable ,x自己的变化,引发y被动变化。
好了,我们来看 多变量微分Multivariable differential 。
上面都是一个y收到一个x的影响y=f(x),多变量就是不止受到一个自变量的影响,我们以最简单的z=f(x,y)为例,z=x 2 +y 2 。
绿轴x的变化和红轴y的变化,都会对应蓝轴z的变化。
x从负无穷到正无穷无限种可能,y也是无限种可能,x和y复合到一起就在水平方向覆盖了全部地面,z值有高有低,就像现实世界中的海拔一样,把xy平面凸起或凹陷。(图中粉色没有画出全部曲面)
我们可以想象,这时候不能讨论A点的切线了,而应该考虑它的 切平面tangent plane (下图绿色平面)。
方向导数directional derivative ,就是曲面上过A点的任意曲线的切线(下图紫色线)组成的平面,就是切平面。
这么多紫色的方向中,哪一个方向最陡峭?对于这个z=x 2 +y 2 函数来说,明显是最接近竖直朝上的那个箭头和最接近竖直朝下的那个箭头。
和曲线一样道理,越陡峭意味着z对x、y的变化越敏感,或者说dx、dy的变化会引发更多的dz。
梯度gradient ,我们规定,能够引发因变量最快变化的那个切线正方向,就叫做曲面方程上这个点的梯度。注意梯度是个xyz表示的三维方向,例如[0,0,1]表示z轴竖直向上,[0.1,0.1,1]就往xy的正方向偏一点点。
对于只有xy两个变量的三维曲面来说,我们还可以只是考虑x+0.1,x-0.1,y+0.1,y-0.1这样的试探方法找到最低点,只要2*2=4次就可以了,周全一点也就8次。
但是对于我们手写数字识别中13002个自变量来说,那就要2 13002 次,这是不可行的。
借用多元微分,我们可以找到13002个自变量某一随机点对应的切平面(实际早已不是什么平面了,我们姑且这么说),也可以计算出其中变化最快的方向,就是梯度,数学家已经证明,不管多少个维度,沿着梯度往前走一步,都能获得最快变化后新的一个点,这个点是一个n维向量,对于我们的案例来说就是13003个新数字组成的数组[0.322,0.123,0.55,0.222,...0.233]共13003个数字。
唯一要说明的一点不同就是,为了找最低点,我们不是往上走,而是往相反的负方向,朝下走。
步长step size ,就是我们每次沿着 负梯度 往下走多远,在机器学习算法里面它叫做 学习率learning rate ,同样道理,步子迈小了走得太慢,找到最低点耗时间太久,步子太大了容易跳过最低点(注意,1万多维的复杂情况不是我们上面三维漏斗曲面那么简单可以描述的)。所以我们经常设置0.00001这样小的数字,好在很多机器学习程序都会适当的自动调整它(比如Tensorflow中的梯度下降优化GradientDescentOptimizer),实际上不会让它太慢。
同时,我们从上图中看到,计算出的负梯度是由很多数字组成的数组,每个数字代表一个维度(就像xy那样),所以我们只要在原来的位置点坐标(比如[x,y])上分别把这个梯度(比如[0.1,-0.3])加上去就能得到新的点([x+0.1,y-0.3])。
内容小结
如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,感谢转发~
END
㈥ bp神经网络
BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)。
人工神经网络就是模拟人思维的第二种方式。这是一个非线性动力学系统,其特色在于信息的分布式存储和并行协同处理。虽然单个神经元的结构极其简单,功能有限,但大量神经元构成的网络系统所能实现的行为却是极其丰富多彩的。
人工神经网络首先要以一定的学习准则进行学习,然后才能工作。现以人工神经网络对手写“A”、“B”两个字母的识别为例进行说明,规定当“A”输入网络时,应该输出“1”,而当输入为“B”时,输出为“0”。
所以网络学习的准则应该是:如果网络作出错误的的判决,则通过网络的学习,应使得网络减少下次犯同样错误的可能性。首先,给网络的各连接权值赋予(0,1)区间内的随机值,将“A”所对应的图象模式输入给网络,网络将输入模式加权求和、与门限比较、再进行非线性运算,得到网络的输出。在此情况下,网络输出为“1”和“0”的概率各为50%,也就是说是完全随机的。这时如果输出为“1”(结果正确),则使连接权值增大,以便使网络再次遇到“A”模式输入时,仍然能作出正确的判断。
如果输出为“0”(即结果错误),则把网络连接权值朝着减小综合输入加权值的方向调整,其目的在于使网络下次再遇到“A”模式输入时,减小犯同样错误的可能性。如此操作调整,当给网络轮番输入若干个手写字母“A”、“B”后,经过网络按以上学习方法进行若干次学习后,网络判断的正确率将大大提高。这说明网络对这两个模式的学习已经获得了成功,它已将这两个模式分布地记忆在网络的各个连接权值上。当网络再次遇到其中任何一个模式时,能够作出迅速、准确的判断和识别。一般说来,网络中所含的神经元个数越多,则它能记忆、识别的模式也就越多。
如图所示拓扑结构的单隐层前馈网络,一般称为三层前馈网或三层感知器,即:输入层、中间层(也称隐层)和输出层。它的特点是:各层神经元仅与相邻层神经元之间相互全连接,同层内神经元之间无连接,各层神经元之间无反馈连接,构成具有层次结构的前馈型神经网络系统。单计算层前馈神经网络只能求解线性可分问题,能够求解非线性问题的网络必须是具有隐层的多层神经网络。
神经网络的研究内容相当广泛,反映了多学科交叉技术领域的特点。主要的研究工作集中在以下几个方面:
(1)生物原型研究。从生理学、心理学、解剖学、脑科学、病理学等生物科学方面研究神经细胞、神经网络、神经系统的生物原型结构及其功能机理。
(2)建立理论模型。根据生物原型的研究,建立神经元、神经网络的理论模型。其中包括概念模型、知识模型、物理化学模型、数学模型等。
(3)网络模型与算法研究。在理论模型研究的基础上构作具体的神经网络模型,以实现计算机模拟或准备制作硬件,包括网络学习算法的研究。这方面的工作也称为技术模型研究。
(4)人工神经网络应用系统。在网络模型与算法研究的基础上,利用人工神经网络组成实际的应用系统,例如,完成某种信号处理或模式识别的功能、构作专家系统、制成机器人等等。
纵观当代新兴科学技术的发展历史,人类在征服宇宙空间、基本粒子,生命起源等科学技术领域的进程中历经了崎岖不平的道路。我们也会看到,探索人脑功能和神经网络的研究将伴随着重重困难的克服而日新月异。
神经网络可以用作分类、聚类、预测等。神经网络需要有一定量的历史数据,通过历史数据的训练,网络可以学习到数据中隐含的知识。在你的问题中,首先要找到某些问题的一些特征,以及对应的评价数据,用这些数据来训练神经网络。
虽然BP网络得到了广泛的应用,但自身也存在一些缺陷和不足,主要包括以下几个方面的问题。
首先,由于学习速率是固定的,因此网络的收敛速度慢,需要较长的训练时间。对于一些复杂问题,BP算法需要的训练时间可能非常长,这主要是由于学习速率太小造成的,可采用变化的学习速率或自适应的学习速率加以改进。
其次,BP算法可以使权值收敛到某个值,但并不保证其为误差平面的全局最小值,这是因为采用梯度下降法可能产生一个局部最小值。对于这个问题,可以采用附加动量法来解决。
再次,网络隐含层的层数和单元数的选择尚无理论上的指导,一般是根据经验或者通过反复实验确定。因此,网络往往存在很大的冗余性,在一定程度上也增加了网络学习的负担。
最后,网络的学习和记忆具有不稳定性。也就是说,如果增加了学习样本,训练好的网络就需要从头开始训练,对于以前的权值和阈值是没有记忆的。但是可以将预测、分类或聚类做的比较好的权值保存。