没有合适的资源?快使用搜索试试~ 我知道了~
神经网络算法终极教程.pdf
需积分: 9 34 下载量 29 浏览量
2011-04-03
23:32:41
上传
评论
收藏 194KB PDF 举报
温馨提示
试读
21页
神经网络算法终极教程.pdf,计算机人员可以去了解一下,个人认为还是不错的
资源推荐
资源详情
资源评论
神经网络书籍
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
神经网络设计 此书通俗易懂,好书,推荐
神经网络模型及其matlab仿真程序设计 周开利
(对神经网络工具箱函数及里面神经网络工具箱的神经网络模型的网络对象及其属性做了详
细的论述,后者在神经网络理论与matlab7实现那本书里面是没有的)
神经网络理论与matlab7实现
(这本书对初学这入门还是挺不错的,看过了,就对matlab神经网络工具箱有教好的了解)
神经网络设计(我认为这是一本很好的书,讲理论不是很多,看过之后就会对神经网络的原
理有更好的了解)
神经网络结构设计的理论与方法(这本书对提高网络的泛化能力的一些方法做了讲述,并且
书后有程序,对网络结构的设计应该是挺有帮助的)
神经网络学习初期提示:
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
第一步:看看入门书籍,对神经网络有个初步认识;
第二步:掌握如下算法:
1.感知机学习,这个较简单易懂,就不多说了.
2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数
学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。
3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基
础上的改进算法,
容易买到的参考书籍有:
《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有);
《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著);
《模式分类》(机械工业出版社, Richard O. Duda等著,中英文都有);
《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。
4.ART(自适应谐振理论),该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版
社,Martin T. Hargan等著,中英文都有)的第15和16章。若看理论分析较费劲可直接编程实
现一下16.2.7节的ART1算法小节中的算法.
5.BP算法,初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容,直接利用
最后的学习规则编个小程序并测试,建议看《机器学习》(机械工业出版社,Tom M. Mitchell
著,中英文都有)的第4章和《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中
英文都有)的第11章。
第三步:在掌握上述算法的基础上看各种前馈网络、反馈网络、联想存储器、神经网络集
成、模糊神经网络等技术就属于学习神经网络的高级阶段了,需要根据自己的研究和应用方
向决定。
神经网络高级话题:
神经网络研究的高级阶段是研究各种神经网络(包括多层感知器网络、径向基函数网络、概
率神经网络、径向基概率神经网络、递归神经网络、光学神经网络、库仑能量网络、隐马尔
科夫模型、模糊极大极小网络、模块神经网络、学习委员会机、ARTMAP网络、自适应共振
理论(ART1-3)、自组织特征映射、联想记忆、主分量分析、独立分量分析、盲源分离、硬聚
类和模糊聚类子空间理论、波尔兹曼机、神经认知机、统计学习理论、支撑矢量机、随机神
经网络理论、EM算法、遗传与进化算法、增强学习理论、人工免疫算法、模拟退火算法)的
数学理论、学习算法、模型和结构、推广能力、预测与逼近能力。
神经网络的应用领域:
神经网络在模式识别、图象处理、数据挖掘、机器人、生物信息学等领域被广泛应用。
我眼中的神经网络----给初学者
我觉得目前论坛里的新手很多,呵呵,问的问题很多都是重复的,首先希望你们能先找找时
不时有人问过了,是不是有人已经回答过了。下面我把我的一点体会和看法说出来,可能有
很多是不正确或者不深刻的,希望各位指出来,谢谢
1、我知道的目前一般的神经网络,尤其是前馈网络可以做的是两方面的问题:分类和函数拟
合(包括预测)。当然,hopfield网络还具有联想记忆功能,可以做一些相关的事情。
2、我觉得神经网络还处于初期阶段,很多问题,尤其是规模大或者要求精度高的问题,还是
解决不了的,不要总是怀疑自己是不是程序错了或者有什么问题之类的。(说实话,我觉得
神经网络进入工程还有很长的路要走。做论文还可以,呵呵)
3、一般来说,前馈网络的样本都是要采取归一化的,原因是样本的数量级差太大的话会出现
大样本吞吃小样本的现象,使得数量小的那一维样本不起作用。
人工神经网络的特点
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
人工神经网络的以下几个突出的优点使它近年来引起人们的极大关注:
(1)可以充分逼近任意复杂的非线性关系;
(2)所有定量或定性的信息都等势分布贮存于网络内的各神经元,故有很强的鲁棒性和容错
性;
(3)采用并行分布处理方法,使得快速进行大量运算成为可能;
(4)可学习和自适应不知道或不确定的系统;
(5)能够同时处理定量、定性知识。
人工神经网络的特点和优越性,主要表现在三个方面:
第一,具有自学习功能。例如实现图像识别时,只在先把许多不同的图像样板和对应的应识
别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自学习
功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提 供经济预测、
市场预测、效益预测,其应用前途是很远大的。
第二,具有联想存储功能。用人工神经网络的反馈网络就可以实现这种联想。
第三,具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算量,
利用一个针对某问题而设计的反馈型 人工神经网络,发挥计算机的高速运算能力,可能很快
找到优化解。
人工神经网络的主要方向
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
神经网络的研究可以分为理论研究和应用研究两大方面。
理论研究可分为以下两类:
1).利用神经生理与认知科学研究人类思维以及智能机理。
2).利用神经基础理论的研究成果,用数理方法探索功能更加完善、性能更加优越的神经网
络模型,深入研究网络算法和性能, 如:稳定性、收敛性、容错性、鲁棒性等;开发新的网
络数理理论,如:神经网络动力学、非线性神经场等。
应用研究可分为以下两类:
1).神经网络的软件模拟和硬件实现的研究。
2).神经网络在各个领域中应用的研究。这些领域主要包括:
模式识别、信号处理、知识工程、专家系统、优化组合、机器人控制等。 随着神经网络理
论本身以及相关理论、相关技术的不断 发展,神经网络的应用定将更加深入。
34 如何选择训练集和测试集数据?
一般需要将样本分成独立的三部分训练集(train set),验证集(validation set)和测试集(tes
t
set)。其中训练集用来估计模型,验证集用来确定网络结构或者控制模型复杂程度的参数,
而测试集则检验最终选择最优的模型的性能如何。一个典型的划分是训练集占总样本的
50%,而其它各占25%,三部分都是从样本中随机抽取。
样本少的时候,上面的划分就不合适了。常用的是留少部分做测试集。然后对其余N个样本
采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩
余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最
优模型结构的依据。特别的K取N,就是留一法(leave one out)。
神经网络的应用
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
我个人认为首先是对实际问题分析,看传统的方法行不行,如果行就用传统方法解决,如果
传统方法解决的不理想,然后尝试用神经网络,神经网络用于求解问题是因为它具有“学
习”能力,对于非线性、有噪、模式识别等问题有着得天独厚的优势,对于问题分析以后,重
在选择相应的模型求解,尝试模型的求解过程同时也涉及到模型的优化等问题,最后编制程
序运行。我个人认为选择什么样的模型求解实际问题是最关键的,用什么语言编程实现或者
怎么实现好象都不是那么难。个人观点,欢迎补充。
神经网络的权值和阈值分别是个什么概念?
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
权值和阈值是神经元之间的连接,将数据输入计算出一个输出,然后与实际输出比较,误差
反传,不断调整权值和阈值
假如p1=[1 1 -1]';
p
2=[1 -1 -1]';
属于不同的类
须设计分类器将他们分开
这里用单层神经元感知器
初始权值 w=[0.2 0.2 0.3] b=-0.3
输出 a1 a2
a1=hardlims(w*p1+b)
a2=hardlims(w*p2+b)
如果不能分开,还须不断调整w,b
这里说明一下权值w 阈值b 而已
简单地说,阈值也可以看作一维权值,只不过它所对应的那一维样本永远是 -1(也有的书上
说是 1),这样就把输入样本增加了一维,更有利于解决问题.
ann如何做预测的一个例子
本书制作版权属智能中国网,如果文章原创者认为我们侵犯了您的合法权益,请来信告知
%输入向量
p
=[97 28 12 32 18 3 0 3 10 3 6 14 8 20 2 11 24 0 9 6 3 5 3 1 3 14 2 10 2 173 17 5 1 61 7;
66 29 11 34 13 3 0 1 14 4 12 11 8 12 2 13 20 0 4 3 4 5 4 1 0 12 0 9 3 250 4 3 0 58 3;
61 30 12 35 6 2 0 1 11 7 5 9 11 17 2 3 22 2 4 3 5 5 4 2 0 16 5 12 4 237 11 4 1 59 2;
79 28 18 43 7 6 1 5 9 6 6 20 17 30 1 12 20 0 9 5 2 5 5 3 2 16 5 14 3 249 20 3 0 56 3;
94 38 15 39 9 4 1 3 13 2 12 15 10 27 2 17 16 2 4 3 4 9 4 2 0 20 7 10 0 230 37 2 0 68 6;
106 53 16 44 17 3 0 2 15 3 18 12 7 19 11 0 32 0 4 9 2 6 6 3 2 8 0 10 4 331 25 1 1 104 5;
106 55 18 21 17 3 1 2 14 3 11 16 11 29 1 13 12 0 3 8 3 10 7 3 5 5 7 7 1 529 50 7 1 141 0;
113 75 19 29 42 9 2 3 26 0 13 21 5 26 2 5 27 1 5 20 2 5 18 4 4 1 3 17 5 643 30 2 7 120 4;
110 62 18 30 18 6 0 5 17 1 18 10 14 24 1 6 18 0 3 14 6 6 24 5 5 11 6 18 4 573 42 2 4 122 4;
114 93 23 28 29 6 0 9 23 4 8 25 15 36 0 4 28 3 5 16 4 2 36 3 2 7 9 12 7 699 54 8 8 139 8;
152 107 23 48 50 15 2 4 29 4 20 29 13 40 1 7 42 3 7 28 4 18 50 6 3 13 3 23 3 785 30 7 5 207 10]';
%目标向量
t=[79 28 18 43 7 6 1 5 9 6 6 20 17 30 1 12 20 0 9 5 2 5 5 3 2 16 5 14 3 249 20 3 0 56 3;
94 38 15 39 9 4 1 3 13 2 12 15 10 27 2 17 16 2 4 3 4 9 4 2 0 20 7 10 0 230 37 2 0 68 6;
106 53 16 44 17 3 0 2 15 3 18 12 7 19 11 0 32 0 4 9 2 6 6 3 2 8 0 10 4 331 25 1 1 104 5;
106 55 18 21 17 3 1 2 14 3 11 16 11 29 1 13 12 0 3 8 3 10 7 3 5 5 7 7 1 529 50 7 1 141 0;
113 75 19 29 42 9 2 3 26 0 13 21 5 26 2 5 27 1 5 20 2 5 18 4 4 1 3 17 5 643 30 2 7 120 4;
110 62 18 30 18 6 0 5 17 1 18 10 14 24 1 6 18 0 3 14 6 6 24 5 5 11 6 18 4 573 42 2 4 122 4;
114 93 23 28 29 6 0 9 23 4 8 25 15 36 0 4 28 3 5 16 4 2 36 3 2 7 9 12 7 699 54 8 8 139 8;
152 107 23 48 50 15 2 4 29 4 20 29 13 40 1 7 42 3 7 28 4 18 50 6 3 13 3 23 3 785 30 7 5 207 10;
111 124 15 31 72 14 0 2 27 2 12 20 7 29 0 42 17 2 7 11 2 8 12 5 6 4 3 23 1 703 25 4 5 170 4;
144 116 24 52 52 12 1 4 12 3 11 28 14 45 2 19 18 0 5 17 6 11 14 4 13 15 5 31 3 674 24 6 9 166 7]' ;
%归一化
u=t;
%%%%%%归一到 0 1 之间
for i=1:35
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end
for i=1:35
t(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:)));
end
%训练
%%%%%%%%%%threshold的作用是限定输入的范围,因为已经做过归一化,所以输入的范
围在0 1之间
%%%%%%%%%%这个范围比输入的范围大是可以的,举个例子,比方说归一化的数据是在
[0.1 0.9]之间
%%%%%%%%%%范围用[0 1]是可以的,比归一化后的范围如果小的话,就会出问题
threshold=[0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1;
0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1; 0 1];
net=newff(threshold,[19,35],{'tansig','logsig'},'trainlm');
%%%%%%%%%%19隐层数 隐层数的确定有几个经验公式,也可以用试算法
net.trainParam.epochs=1000;
%训练次数
net.trainParam.goal=0.001;
%训练结束的目标
LP.lr=0.1;
%这个应该是学习率
net.trainParam.show=20;
P=[p(:,1)+p(:,2)+p(:,3) p(:,2)+p(:,3)+p(:,4) p(:,3)+p(:,4)+p(:,5) p(:,4)+p(:,5)+p(:,6) p(:,5)+p(:,6)+p
(:,7) p(:,6)+p(:,7)+p(:,8) p(:,7)+p(:,8)+p(:,9) p(:,8)+p(:,9)+p(:,10) p(:,9)+p(:,10)+p(:,11)];
T=[t(:,1) t(:,2) t(:,3) t(:,4) t(:,5) t(:,6) t(:,7) t(:,8) t(:,9)];
%输入样本的输入和目标
net=train(net,P,T);
%训练网络
test=[ t(:,7)+t(:,8)+t(:,9)];
out=sim(net,test); %仿真预测
%反归一化
for i=1:35
predict(i)=out(i)* (max(u(i,:))-min(u(i,:)))+ min(u(i,:));
end
p
redict
%结果整理
p
redictsum=predict(1);
sum=u(1,10);
for i=1:34
predictsum= predictsum +predict(i+1);
sum=sum+u(i+1,10);
end
sum
p
redictsum
sumerror= predictsum-sum
%绘制预报曲线
x=[t(:,10)];
a=x-out;
for i=1:35
error=a* (max(u(i,:))-min(u(i,:)))+ min(u(i,:));
end
X=1:35;
figure(1);
p
lot(X,error)
xlabel('地上管网急修作业类型(X)');
ylabel('作业量预测误差(Y)');
figure(2);
p
lot(X, predict,'r*',X,u(:,10),'bo')
xlabel('地上管网急修作业类型(X)');
ylabel('作业量(Y)');
text (23,predict(30), 'predicted data');
text(25.5,u(30,10), 'real data');
神经网络归一化
剩余20页未读,继续阅读
资源评论
Allenhui89
- 粉丝: 25
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功