Ⅰ bp神经网络怎么求权值
net.iw{1,1}=W0;net.b{1}=B0;
net.iw{1,1}=W0;输入层和隐层间的权值,net.b{1}=B0输入层和隐层间的阈值.
BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络。
BP神经网络具有任码皮旦意复杂的模式分类能力和优良的多维函数映射能力,解决了简单感知器不能解决的异或(Exclusive OR,XOR)和一些其他问题。从结构上讲,BP网络迟扰具有输入层、隐藏层和输出层;
从本质上讲,BP算法就是以网络误差平方为目标函数、采用梯度下降法来计算目标函数的最小值。
(1)如何使用bp神经网络求函数极值扩展阅读:
BP神经网络无论在网络理论还是在性能方面已比较成熟。其突出优点就是具有很强的非线性映射能力和柔性的网络结构。网络的中间握桥层数、各层的神经元个数可根据具体情况任意设定,并且随着结构的差异其性能也有所不同。但是BP神经网络也存在以下的一些主要缺陷。
①学习速度慢,即使是一个简单的问题,一般也需要几百次甚至上千次的学习才能收敛。
②容易陷入局部极小值。
③网络层数、神经元个数的选择没有相应的理论指导。
④网络推广能力有限。
对于上述问题,目前已经有了许多改进措施,研究最多的就是如何加速网络的收敛速度和尽量避免陷入局部极小值的问题。
Ⅱ 如何用神经网络遗传算法求极值
===============学习神经网络可以到<神经网络之家>================
可以先用matlab神经网络工具箱训练网络,当网络训练好之后,把网络存起来.
然后编写遗传算法,你知道,遗传算法是每代不断迭代的,然后每代会根据适应度决定是否进入下一代,这里的适应度你就用sim(net,x)得到的值的倒数(或者类似的)作为适应度,然后其它就和遗传算法没什么两样了.最后得到的最优解, 就是网络的最优解. 也就是你要的结果了.
不过兄弟,这想法很牛B,很值得鼓励这样的想法.但我不得不说两句,从实际角度来说,这样的实现没有太大的意义. 你的目的就是想从数据中找到Y最小的时候,X的什么值, 但数据上毕竟只是数据,不管你怎么绕,透露出来的信息还是有限的,不管怎么绕,其实数据能提供最大限度的信息就是:在Y=10.88时,即X1=25,X2=24....X6=1.5时,Y是最小值的, 这是数据能提供的最大限度的信息,你再怎么绕, 其实当你懂得神经网络的深层原理时,你会发现,你的方案并没能挖掘出更优的解(因为数据的信息是有限的),这只是把自己绕晕了
不过能有这样的想法,兄弟肯定是个学习的好材料,加油.
===============学习神经网络可以到<神经网络之家>================
Ⅲ 用粒子群群算法优化BP神经网络的参数,进行极值寻优
这四个都属于人工智能算法的范畴。其中BP算法、BP神经网络和神经网络
属于神经网络这个大类。遗传算法为进化算法这个大类。
神经网络模拟人类大脑神经计算过程,可以实现高度非线性的预测和计算,主要用于非线性拟合,仔枝识别,特点是需要“训练”,给一些输入,告诉他正确的输出。若干次后,再给新的输入,神经网络就能正确的预测对于的输出。神经网络广泛的运用在型戚裂模式识别,故障诊断中。BP算法和BP神经网络是神经网络的改进版,修正了一些神经网络的缺点。
遗传算法属于进化算法,模拟大自然生物进化的过程:优胜略汰。个体不断进化,只有高质量的个体(目标函数最小(大))才卜闭能进入下一代的繁殖。如此往复,最终找到全局最优值。遗传算法能够很好的解决常规优化算法无法解决的高度非线性优化问题,广泛应用在各行各业中。差分进化,蚁群算法,粒子群算法等都属于进化算法,只是模拟的生物群体对象不一样而已。
Ⅳ Matlab小问题 神经网络能求极值吗
可以啊,神经网络其实就是一种数值拟合的方法,其意义和泰勒级数展开实际上是一样的,只要你正确的拟合出了数据的规律是可以求得极大值的,而且神经网络的神经元函数都是非常好球微分的,所以可以用现在很多流行的数值方法,求极大值。
这里对于一维拟合需要使用小波函数,高维需要脊波函数,PID神经元网络可用于动态网络的无导师学习。
当然对于化工领域一些问题由于样本非常有限无法找到数据的正确规律,所以可能存在预报困难的问题
Ⅳ 神经网络——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神经网络的参数,进行极值寻优
Ⅶ 神经网络遗传算法函数极值寻优
对于未知的非线性函数,仅通过函数的输入输出数据难以准确寻找函数极值。这类问题可以通过神经网络结合遗传算法求解,利用神经网络的非线性拟合能力和遗传算法的非线性寻优能力寻找函数极值。本文用神经网络遗传算法寻优如下非线性函数极值,函数表达式为
函数图形如下图1所示。
从函数方程和图形可以看出,该函数的全局最小值为0,对应的坐标为(0,0)。虽然从函数方程和图形中很容易找出函数极值及极值对应坐标,但是在函数方程未知的情况下函数极值及极值对应坐标就很难找到。
神经网络遗传算法函数极值寻优主要分为BP神经网络训练拟合和遗传算法极值寻优两步,算法流程如下图2所示。
神经网络训练拟合根据寻优函数的特点构建合适的BP神经网络,用非线性函数的输出数据训练BP网络,训练后的BP神经网络就可以预测函数输出。遗传算法极值寻优把训练后的BP神经网络预测结果作为个体适应度值,通过选择、交叉和变异操作寻找函数的全局最优值及对应输入值。
本文根据非线性函数有2个输入参数、1个输出参数,确定BP神经网络结构为2-5-1.取函数的4 000组输入输出数据,从中随机选取3 900组数据训练网络,100组数据测试网络性能,网络训练好后用于预测非线性函数输出。
遗传算法中个体采用实数编码,由于寻优函数只有2个输入参数,所以个体长度为2。个体适应度值为BP神经网络预测值,适应度值越小。交叉概率为0.4,变异概率为0.2。
用函数输入输出数据训练BP神经网络,使训练后的网络能够拟合非线性函数输出,保存训练好的网络用语计算个体适应度值。根据非线性函告让信数方程随机得到该函数的4 000组输入输出数据,存储于data.mat中,其中input为函数输入数据,output为函数对应输出数据,从中随机抽取3 900组训练数据训练网络,100组测试数据测试网络拟合性能。最后保存训练好的网络。
把训练好的BP神经网络预测输出作为个体适应度值。
BP神经网络拟合结果分析
本文中个体的适应度值为BP神经网络预测值,因此BP神经网络预测精度对于最优位置的寻找具有非常重要的意义。由于寻优非线性函数有2个输入参数、1个输出参数,所以构建的BP神经网络的结构为2-5-1。共取非线性函数4 000组输入输出数据,从中随机选择3 900组数据训练BP神经网络,100组数据作为测试数据测试BP神经网络拟合性能,BP神经网络预测输出和期望输出对比如下图3所示。
从BP神经网络预测结果可以看出,BP神经网络可以准确预测非线性函数输出,可以把网络预测近似看成函数实际输出。
遗传算法寻优结果分析 BP神经网络训练结束后,可以利用遗传算法寻找该非线性函数的最小值。遗传算法的迭代次数是100次,种群规模是20,交叉概率为0.4,变异概率为0.2,采用浮点数编码,个体长度为21,优化过程中最优个体适应度值变化曲线如下图4所示。
本文所使用的方法有比较重要的工程应用价值,比如对于某项试验来说,试验目的是获取到最大试验结果对应的实验条件,但是由于时间和经费限制,该试验只能进行有限次,可能单靠试验结果找不到最优的试验条件。这时可以在已知试验数据的基础上,通过本文介绍的神经网络遗传算法寻找最优试验条件。
思路就是先根据试验条件数和试验结果数确定BP神经网络结构;然后把试验条件作为输入数据,滑丛试验结果作为输出数据训练BP网络,使得训练后的网络袜轮可以预测一定试验条件下的试验结果;最后把试验条件作为遗传算法中的种群个体,把网络预测的试验结果作为个体适应度值,通过遗传算法推导最优试验结果及其对应试验条件。
Ⅷ 怎么用mtlab优化工具箱求目标函数为BP神经网络训练结果的极值
需要声明全局变量。宏悉仿分别在两段程序陆滚的开头加上
globalnet
不然无法在函数中调用net.
如果你要多于一个函数共用一个简单的变量,简单的处理方法就是把这个变量在所有函数中定义为global全局变量。在命令行做同样的事情,如果你要工作空间访问上述变量。这个全局变量的定义必须出现在变量被应用于一个函数之前。虽然不是要求,但全局变量也最好以大写字母开头,这样可以同其他变量区别出来。举个例子,做一个以falling.m命名的M-文件。
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;
然后交互地输入语蔽纤句
global GRAVITY
GRAVITY = 32;
y = falling((0:.1:5)');
这两个变量在函数中表示同一个内容。之后你可以交互地修改GRVITY并获得新的解法,而不用再编辑文档。
注意:1 全局变量列表中各个变量名不能用逗号分隔。 如: global a b c
2 全局变量使用前必须再matlab工作空间中申明,如果再具体得函数中用则要在函数前面申明,否则在该函数中即使用到了该变量,也会被当成局部变量使用。
Ⅸ 求人工神经网络的具体算法,数学模型,比如求一个函数最优值之类的,不要各种乱七八糟的介绍,谢谢
神经网络就像多项式或者线性模型一样,是个看不见表达式的模型,它的表达式就是网络,它比一般模型具有更高的自由度和弹性;同时它是一个典型的黑箱模型方法;比多项式等模型还黑。优化算法,就是寻优的算法,所谓寻优过程,就是寻找使目标函数最小时(都是统一表示成寻找使函数具有最小值)的自变量的值。回归或者拟合一个模型,例如用一个多项式模型去拟合一组数据,其本质就是寻找使残差平方和最小的参数值,这就是一个寻优的过程,其实就是寻找使函数F(x)值最小时的x的值;对于这个具体的寻找过程就涉及到算法问题,就是如何计算。所谓算法,是数值分析的一个范畴,就是解这问题的方法;例如一个一元二次方程 x^2-3x+1=0的解法,因为简单可以直接求解,也可以用牛顿逐个靠近的方法求解,也即是迭代,慢慢接近真实解,如此下去不断接近真值,要注意迭代算法是涉及算法精度的,这些迭代算法是基于计算机的,算法的初衷也是用近似的算法用一定的精度来接近真实值。 比如上面的方程也可以用遗传算法来解,可以从一些初始值最终迭代到最佳解。神经网络在寻找网络的参数即权值的时候,也有寻找使训练效果最好的过程,这也是寻优的过程,这里涉及到了算法就是所谓的神经网络算法,这和最小二乘算法是一样的道理;例如做响应面的时候,其实就是二次回归,用最小二乘得到二次模型的参数,得到一个函数,求最大产物量就是求函数模型的最大值,怎么算呢?顶点处如果导数为0,这个地方对应的x值就是最优的,二次模型简单可以用偏导数=0来直接解决,这过程也可以遗传算法等来解决。说到底所谓寻优的本质就是,寻找函数极值处对应的自变量的值。