加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用Excel求解非线性问题(兼讲神经网络的求解)

(2009-05-22 15:05:15)
标签:

杂谈

分类: 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文档。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有