1、MATLAB 程序代码-神经网络基础问题整理所选问题及解答大部分来源于 http:/ 资料大部分为江南一纪收集整理 对其他参与整理的版友(不一一列举)及 资料的原创者一并表示感谢因江南对神经网络的理解也不是很多 错误之处难勉 请谅解有什么问题可以来 http:/ 的 人工神经网络专区交流*1 神经网络的教材哪本比较经典神经网络原理Simon Haykin ? 叶世? 史忠植译神经网络设计神经网络书籍神经网络模型及其 matlab 仿真程序设计 周开利(对神经网络工具箱函数及里面神经网络工具箱的神经网络模型的网络对象及其属性做了详细的论述,后者在神经网络理论与 matlab7 实现那本书里面是没
2、有的)神经网络理论与 matlab7 实现(这本书对初学这入门还是挺不错的,看过了,就对 matlab 神经网络工具箱有教好的了解)神经网络设计(我认为这是一本很好的书,讲理论不是很多,看过之后就会对神经网络的原理有更好的了解)神经网络结构设计的理论与方法(这本书对提高网络的泛化能力的一些方法做了讲述,并且书后有程序,对网络结构的设计应该是挺有帮助的)摘自 给初学 matlab 神经网络的一点建议http:/ -1 -1;属于不同的类须设计分类器将他们分开这里用单层神经元感知器初始权值 w=0.2 0.2 0.3 b=-0.3输出 a1 a2a1=hardlims(w*p1+b)a2=hard
3、lims(w*p2+b)如果不能分开,还须不断调整 w,b 这里说明一下权值 w 阈值 b 而已简单地说,阈值也可以看作一维权值,只不过它所对应的那一维样本永远是 -1(也有的书上说是 1) ,这样就把输入样本增加了一维,更有利于解决问题.http:/ p(i,:)=p(i,:)/pm;和 for i=1:27p(i,:)=(p(i,:)-min(p(i,:)/(max(p(i,:)-min(p(i,:);end 可以归一到 0 1 之间0.1+(x-min)/(max-min)*(0.9-0.1)其中 max 和 min 分别表示样本最大值和最小值。这个可以归一到 0.1-0.95 如何查看
4、 BP 神经网络训练后的权值和阈值呀!训练好的权值、阈值的输出方法是:输入到隐层权值:w1=net.iw1,1隐层阈值:theta1=net.b1隐层到输出层权值:w2=net.lw2,1;输出层阈值:theta2=net.b26 训练好的 BP 神经网络如何保存呀用命令 save filename net;保存网络,调用时用命令 load filename net;7 用 BP 逼近非线性函数,如何提高训练精度啊 (1)调整网络结构 增加网络的层数可以进一步降低误差 ,提高精度但会使网络复杂化 ,从而增加网络的训练时间 。精度的提高实际上也可以通过增加隐层神经 元的数目来获得 ,其效果更容易
5、观察和掌握 ,所以应优先考虑 。 (2)初始值选取 为了使误差尽可能小 ,需要合理选择初始权重和偏置,如果太大就容易陷入饱和区,导致停顿 。一般应选为均匀分布的小数,介于 (一 1,1) 。 (3)学习速率调整 学习速率的选取很重要 ,大了可能导致系统不稳定 ,小了会导致训练周期过长、收敛慢 ,达不到要求的误差 。一般倾向于选取较小的学习 速率以保持系统稳定,通过观察误差下降曲线来判断 。下降较快说明学习率比较合适 ,若有较大振荡则说明学习率偏大。同时 ,由于网络规 模大小的不同,学习率选择应当针对其进行调整 。 (4)期望误差 期望误差当然希望越小越好 ,但是也要有合适值。8 关于 BP 网
6、络优缺点的讨论http:/ 对初学神经网络者的小提示http:/ Error using = network/trainTargets are incorrectly sized for network.Matrix must have 1 rows.-p t 的列数要相等在pn,minp,maxp=premnmx(p);前面加入:p=p;t=t。在使用工具箱进行网络训练时,要求训练样本的个体是列向量。http:/ = 0.05;net.trainParam.epochs = 10000;net.trainParam.goal = 1e-5;-net.trainParam.show = 50;
7、/训练 50 次刷新一下训练图net.trainParam.lr = 0.05;/学习率net.trainParam.epochs = 10000;/训练次数net.trainParam.goal = 1e-5;/训练结束的目标17 神经网络的文件 如何转为 simulinkhelp gensim- help for network/gensim.m -GENSIM Generate a SIMULINK block to simulate a neural network.Syntaxgensim(net,st)18 ann 如何做 预测一个不错的例子http:/ 小波神经网络小波神经网络就
8、是小波分析理论与神经网络理论相结合的产物。从结构形式分有两大类:1、小波分析与神经网络的松散型结合;2、小波分析与神经网络的嵌入式结合。前者是指彼此虽紧密结合但却又相对独立,采集到的信号先经过小波变换后输入到常规神经网络以完成分类、函数逼近等。后者是指将常规单隐层的神经网络的隐节点激励函数用小波函数代替,相应的输入到隐层的圈值及阈值分别由小波函数的伸缩因子和平移因子代替,这也是我们通常所说的小波网络。小波网络在训练的过程中同样采用普通 BP 算法,但是它对参数的初始化表现敏感,所以参数的初始在小波网络的训练中也是很重要的。20 那位有人工神经网络导论高教出版社出版的蒋宗礼编的电子版书啊? ht
9、tp:/ load filename net;http:/ 在用 MATLAB 实现 BP 反向学习时需要不需要用 deltalin() 、 learnbp() 、 sumsqr()这样的函数啊?deltalin() 、 learnbp() 是比较旧的版本函数 .如果不是做神经网络函数,直接应用 newff,bptrain 等工具箱函数就可以了.32 人工神经网络的特点 人工神经网络的以下几个突出的优点使它近年来引起人们的极大关注: (1)可以充分逼近任意复杂的非线性关系; (2)所有定量或定性的信息都等势分布贮存于网络内的各神经元,故有很强的鲁棒性和容错性;(3)采用并行分布处理方法,使得快
10、速进行大量运算成为可能; (4)可学习和自适应不知道或不确定的系统; (5)能够同时处理定量、定性知识。 人工神经网络的特点和优越性,主要表现在三个方面:第一,具有自学习功能。例如实现图像识别时,只在先把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就 会通过自学习功能,慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提 供经济预测、市场预测、效益预测,其应用前途是很远大的。 第二,具有联想存储功能。用人工神经网络的反馈网络就可以实现这种联想。 第三,具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算量,利用一个
11、针对某问题而设计的反馈型 人工神经网络,发挥计算机的高速运算能力,可能很快找到优化解。33 人工神经网络的主要方向 神经网络的研究可以分为理论研究和应用研究两大方面。 理论研究可分为以下两类: 1)利用神经生理与认知科学研究人类思维以及智能机理。 2)利用神经基础理论的研究成果,用数理方法探索功能更加完善、性能更加优越的神经网络模型,深入研究网络算法和性能, 如:稳定性、收敛性、容错性、鲁棒性等;开发新的网络数理理论,如:神经网络动力学、非线性神经场等。 应用研究可分为以下两类: 1)神经网络的软件模拟和硬件实现的研究。 2)神经网络在各个领域中应用的研究。这些领域主要包括: 模式识别、信号处
12、理、知识工程、专家系统、优化组合、机器人控制等。 随着神经网络理论本身以及相关理论、相关技术的不断 发展,神经网络的应用定将更加深入。34 如何选择训练集和测试集数据?一般需要将样本分成独立的三部分训练集(train set) ,验证集( validation set)和测试集(test set) 。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,而测试集则检验最终选择最优的模型的性能如何。一个典型的划分是训练集占总样本的50,而其它各占 25,三部分都是从样本中随机抽取。样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余 N 个样本采用 K 折
13、交叉验证法。就是将样本打乱,然后均匀分成 K 份,轮流选择其中 K1 份训练,剩余的一份做验证,计算预测误差平方和,最后把 K 次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的 K 取 N,就是留一法(leave one out) 。35 神经网络实现神经网络(七种 C 实现).http:/ SOM 的优点请问与神经网络的其他分类方法,比如 Hamming,MLP 相比,SOM 有什么优点?. 快速性(无隐含层).无监督性.可视化效果.37 神经网络的应用我想问一下要应用实际中,神经网络技术最关键的地方在哪?我个人认为首先是对实际问题分析,看传统的方法行不行,如果行就用传统方法解决
14、,如果传统方法解决的不理想,然后尝试用神经网络,神经网络用于求解问题是因为它具有“学习”能力,对于非线性、有噪、模式识别等问题有着得天独厚的优势,对于问题分析以后,重在选择相应的模型求解,尝试模型的求解过程同时也涉及到模型的优化等问题,最后编制程序运行。我个人认为选择什么样的模型求解实际问题是最关键的,用什么语言编程实现或者怎么实现好象都不是那么难。个人观点,欢迎补充。http:/ 。当然,hopfield 网络还具有联想记忆功能,可以做一些相关的事情。2、我觉得神经网络还处于初期阶段,很多问题,尤其是规模大或者要求精度高的问题,还是解决不了的,不要总是怀疑自己是不是程序错了或者有什么问题之类
15、的。 (说实话,我觉得神经网络进入工程还有很长的路要走。做论文还可以,呵呵)3、一般来说,前馈网络的样本都是要采取归一化的,原因是样本的数量级差太大的话会出现大样本吞吃小样本的现象,使得数量小的那一维样本不起作用。.查看原文http:/ 网络训练时的问题BP 网络在训练时,有时候会出现下面的情况,请教其原因及解决方法。TRAINLM, Minimum gradient reached, performance goal was not met.TRAINLM, Maximum MU reached, performance goal was not methttp:/ 隐层神经元数目如何确定?
16、隐单元的数目与问题的要求、输入/输出单元的数目都有着直接关系,数目太多会导致学习时间过长、误差不一定最佳,也会导致容错性差、不能识别以前没有看到的样本,因此一定存在一个最佳的隐单元数。有三个公式可用于选择最佳隐层神经元时的参考经验公式(回复里面无法编辑公式,如有需要请查相关资料) 。还有一种途径:首先使隐单元的数目可变,或者放入足够多的隐单元,通过学习将那些不起作用的隐单元剔除,直到不可收缩为止。同样,也可以在开始时放入比较少的神经元,学习到一定次数后,如果不成功再增加隐单元的数目,直到达到比较合理的隐单元数目为止。 (个人认为后面这种办法比经验公式可行,而且往往根据经验公式确定后还是需要通过后面的办法最后确定)42.学习速率的选取学习速率决定每一次循环中所产生的权值变化量。大的学习速率可能导致系统的不稳定,但小的学习速率会导致学习时间较长,可能收敛速度很慢,不过能保证网络的误差值不跳出误差表明的低谷而最终趋于最小误差值。所以在一般情况下,倾向于选取较小的学习速率以保证系统的稳定性。学习速率的范围一般选取在 0.01-0.7 之间。