神经网络学习报告

  • 格式:docx
  • 大小:321.30 KB
  • 文档页数:5

神经网络学习报告
一、什么是神经网络?
神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。

它是由大量功能单一的神经元构成,具有很好的学习能力和泛化能力。

神经元作为神经网络的基本构成单元,其主要由突触、加法器以及激活函数组成。

突触用于信号的输入,加法器用于将输入信号进行相应的计算,激活函数用来限制神经元的输出振幅。

激活函数主要有以下三种形式:
1、阈值函数即阶梯函数:当函数自变量小于0时,函数输出为0,当函数的自变量大于等于0时,函数的输出为1。

数学表示为:
1, v>0
f(v)=
0 , v<0
2、分段线性函数:该函数的自变量v在负无穷到-1之间时,函数输出为-1;自变量v 在-1到1时,函数输出为v;自变量v大于等于1时,函数输出为1。

其数学表示为:
1, x≥1
f(v)= v , -1<v<1
-1 , v≤-1
3、非线性转移函数:该函数是当自变量在实域上变化是,其输出始终在0到1之间。

最常用的非线性转移函数是单极性sigmoid函数,简称S型函数单极性S型函数的数学表示为:
f(v)=1/(1+e-v)
双极性S型函数的数学表示为:
f(v)=(1-e-v)/(1+e-v)
神经网络的类型从网络结构可分为前向神经网络和反馈神经网络。

前向神经网络分为单层前向神经网络和多层前向神经网络。

区分前向神经网络和反馈神经网络主要是看输出层是否有反馈回到了输入层,有则为反馈神经网络,否则为前向神经网络。

区分单层前向神经网络和多层前向神经网络主要是看是否有隐藏层,有则为多层前向神经网络,否则为单层前向神经网络。

单层前向神经网络、多层前向神经网络以及反馈神经网络网络模型分别如图1-1、1-2、1-3所示。

图1-1 单层前向神经网络图1-2 多层前向神经网络
图1-3 反馈神经网络
二、神经网络工具箱通用函数
sim函数,用于神经网络的仿真。

其调用格式如下。

[y,pf,af,e,perf ]=sim(net,p,pi,ai,t)
[y,pf,af ]=sim(net,{q ts },pi,ai)
其中,y:网络输出;pf:最终输出延迟;af:最终的层延迟;e:网络误差;perf :网络性能;net:待仿真的神经网络;p:网络输入;pi:初始输入延迟,默认为0;ai:初始层延迟,默认为0;t:网络目标。

神经网络仿真示例程序如下:
clear all;
p = [0 1 2 3 4 5 6 7 8 9]; %输入向量
t = [0 0.34 0.56 0.55 -0.33 -0.78 -0.58 0.97 0.48 0.87]; %目标向量
net = feedforwardnet(10);
net = configure(net,p,t);
y1 = sim(net,p) %对所创建网络进行仿真
plot(p,t,'o',p,y1,'x')
legend('原始数据','仿真后数据'); 程序输出: y1 =
3.6881
4.1582 3.7542 2.5204 1.8117 1.5808 0.7953 -0.4858 -1.7422 -2.7742
网络仿真效果图如图2-1所示。

图2-1 网络仿真效果图
Train 函数,用于实现神经网络的训练,其调用格式如下: [net,tr,y,e,pf,af]=train(net,p,t,pi,ai)
其中,net :待训练的神经网络;p :网络的输入信号;t :网络的目标,默认为0;pi :初始的输入延迟,默认为0;ai :初始的层延迟,默认为0;net :训练后的神经网络;tr :训练记录;y :神经网络的输出信号;e :神经网络的误差;pf :最终输入延迟;af :最终层延迟。

神经网络训练网络示例程序如下: clear all ; p = [0 1 2 3 4 5 6 7 8 9]; %输入向量
t = [0 0.34 0.56 0.55 -0.33 -0.78 -0.58 0.97 0.48 0.87]; %目标向量
net = feedforwardnet(10); net = configure(net,p,t); net.trainparam.epochs=50; net.trainparam.goal=0.01; net=train(net,p,t); y1=sim(net,p)
plot(p,t,'o',p,y1,'x');
legend('训练前数据','训练后数据');
123456789
-2.5-2
-1.5
-1
-0.5
0.5
1
原始数据仿真后数据
网络训练过程如图2-2所示。

图2-2 网络训练过程
网络训练效果图如图2-3所示。

图2-3 网络训练效果图
1
2
3
4
5
6
7
8
9
-0.8-0.6-0.4-0.200.20.40.60.811.2
训练前数据训练后数据
将上面两个例子整合对比,可得如下程序: clear all;
p = [0 1 2 3 4 5 6 7 8 9]; %输入向量
t = [0 0.34 0.56 0.55 -0.33 -0.78 -0.58 0.97 0.48 0.87]; %目标向量
net = feedforwardnet(10); net = configure(net,p,t); net=train(net,p,t); y1=sim(net,p)
net = feedforwardnet(10); net = configure(net,p,t); net.trainparam.epochs=50; net.trainparam.goal=0.01; net=train(net,p,t); y2=sim(net,p)
plot(p,t,'o',p,y1,'x',p,y2,'*');
legend('原始数据','仿真后数据','训练后数据');
效果图如图2-5所示。

图2-5 效果图
三、实验总结
通过对神经网络和MATLAB 的学习,我深刻地意识到了自身的渺小。

MATLAB 中就神经网络这块就有那么多的函数,先不说写这些函数,光自己用这些人家已经给你写好了的函数都不会用,想起来真的很惭愧,不过这也成为了我学习神经网络的动力,万事开头难,我相信,只要努力了,总有一天会成功的。

123456789
-1-0.5
0.5
1
1.5
原始数据仿真后数据训练后数据。