标签:
杂谈 |
分类: MSN搬家 |
用Excel求解非线性问题(兼讲神经网络的求解)
用Excel求解非线性问题(兼讲神经网络的求解)董占山Excel是一个功能十分强大的应用软件,在加上系统配备的Add-Ins,可以完成许多你意想不到的任务,解决许多十分复杂的问题。有一个朋友问到如何用EXCEL来解决神经网络的问题,下面我将从一个简单的非线性问题开始逐步讲解如何用Excel的Solver来求解神经网络的问题。 求解一个非线性问题,使用任何可以解决非线性问题的软件和方法均可以,例如SAS的NLIN,EXCEL的Solver以及MATLAB的优化软件包等等。在Excel中求解非线性问题,需要使用Excel的Solver (中文可能叫求解器,对不起好久没有看到中文的软件了)Add-in来解决问题。一般默认状态下,Excel不一定有Solver,你需要使用Tools菜单中的Add-In命令安装并激活Solver, 然后看看有关Solver的使用帮助。下面以求解一个简单的非线性方程为例,来熟悉Solver的使用。假如我们要求解下面的3次多项式方程: y = a*x^3 + b * x^2 + c 给出多组x,y值放到表单的A和B列,在C列中写入上述公式,在D列中结算C列与D列的对应差值,在E列中计算D列的二次方,像下面的布局: A B C D E 1 3 =$A$10*A1^3+$A$11*A1^2+$A$12 =c1-b1 =d1^2 2 38 =$A$10*A1^3+$A$11*A1^2+$A$12 =c1-b1 =d1^2 23 1882 =$A$10*A1^3+$A$11*A1^2+$A$12 =c1-b1 =d1^2 在A10-A12中随便给一些值,比如1,然后在B10中写入如下的公式:=sum(e1:e3),这是误差平方和。现在可以用Excel的Solver来求解该方程了,在目标编辑框中输入B10,选择求解目标最小,然后在改变单元格的编辑框中输入A10:A12,单击求解就可以工作了。是不是十分简单。下面我们开始讲解如何求解神经网络。 那么如何使用EXCEL来解决神经网络的问题呢?其实关键是你如何设计你的网络模型和训练你的网络,以便找到最优的参数,就像解方程一样,不过这里使用的不是解析的办法,而是数字求解法。现在我们来看一个十分简单的神经网络模型。用一个正弦函数生成一系列的只,然后用一个双层的FeedForward神经网络模型来模拟这个函数的输出。网络模型的第一层包含5个神经元,第二层,也就是输出层包含一个神经元。第一层的5个神经元使用一个Tansigmoid变换函数,第二层使用一个线性变换函数。两层中的净输入函数均为线性函数。下图是该网络模型的示意图。 http://articles.sunfinedata.com/excel/nn.JPG 把上述模型的各种公式写入Excel表单,以利使用Solver来求解。具体如何使用Solver来完成上述的网络训练过程,这里不进行详述。具体网络的实现和训练的结果请参见本文所附的Excel文档。 |

加载中…