编程技术、软件应用与系统模拟

(Programming, Applicaiton and Simulation)



本站目录

 

首页
ASP/Access/IIS
DELPHI/PASCAL
PASCAL高级编程
C语言编程实例
WORD
Excel
MATLAB
MINITAB讲座
Windows
DOS
SAS
生物系统模拟
土壤水分剖析器
其他



镜像站点

 

主站
北美镜象站
欧洲镜象站(1)
欧洲镜象站(2)

本站 Google

[搜索]  [站内导航]
座右铭:
只做有益人类的事
不做有害人类的事


用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变换函数,第二层使用一个线性变换函数。两层中的净输入函数均为线性函数。下图是该网络模型的示意图。


把上述模型的各种公式写入Excel表单,以利使用Solver来求解。具体如何使用Solver来完成上述的网络训练过程,这里不进行详述。具体网络的实现和训练的结果请参见本文所附的Excel文档。

下载Excel表单

© 1998-, 董占山, 版权所有。
转载文章请注明出处(www.sunfinedata.com/articles)。