在线时间 1084 小时 最后登录 2015-9-10 注册时间 2014-4-18 听众数 162 收听数 1 能力 10 分 体力 43980 点 威望 6 点 阅读权限 255 积分 15251 相册 0 日志 0 记录 1 帖子 3471 主题 2620 精华 1 分享 0 好友 513
升级 0%
TA的每日心情 开心 2015-3-12 15:35
签到天数: 207 天
[LV.7]常住居民III
群组 : 第六届国赛赛前冲刺培
群组 : 国赛讨论
群组 : 2014美赛讨论
群组 : 2014研究生数学建模竞
群组 : 数学中国试看培训视频
第一部分 单层感知器原理
i( a' ~3 B k& O 感知器是美国学者在1957年首次提出的作为有导师学习的神经网络模型,单层感知器是指包含一个突触权值可调的神经元的感知器模型,它的学习算法是Rosenblatt在1958年提出的,感知器网络是神经网络用来进行模式识别的最简单模型,属于前向神经网络类型,但是仅由单个神经元组成的单层感知器只能用来实现线性可分的两类模式的识别。 & ?' b- i9 e3 G$ W# c
感知器网络的模型如下图 所示:
* a4 ^7 C% ]/ t: t
2 k2 I" F8 V0 C, B5 D! F 感知器网络的学习算法:
- `; I7 k! q+ m
单层感知器网络的学习算法是基于迭代的思想,通常是采用误差校正规则的学习算法,算法的学习过程为:
: D' ]6 i+ v" k. h4 @, } 第二部分 MATLAB相关函数 newp() 生成一个感知机 init() 初始化一个神经网络
( Y; L0 R; B7 g3 }2 P$ ~0 V mae() 平均绝对误差性能函数 ! [6 J$ B- l5 W* L6 A
hardlim() 硬限幅传输函数
$ _. c1 d! l( l3 @ hardlims() 对称硬限幅传输函数 - I8 x# r0 }4 g4 H$ f
plotpv() 在坐标图上绘出样本点
3 f. r- n b! Y E9 k* P, [ plotpc() 在已绘制的图上加分类线
8 `& l) T% k! G" P' U train() 神经网络训练函数
3 y: v1 v0 ^/ u, E: R/ o learnp() 感知机的学习函数 6 r4 m: s6 Z6 B9 B e# \2 U
1earnpn() 标准化感知机的学习函数 6 o( c3 y1 W& P5 K$ I: I
adapt() 神经网络自适应调整函数 & u, w7 @4 o. P& o2 [8 ]* t
sim() 神经网络仿真函数 " [0 a! j8 q5 x' S1 J
netsum() 输入求和函数
) U0 {7 D" S) `6 M
8 p, \( }0 J8 E( m 第三部分 相关代码$ Z* F, O {0 n* v% ~; Y1 x( h
%创建一个有两个输入、样本数据的取值范围都在[-1,1]之间,并且网络只有一个神经元的感 2 G" o6 a! b' G4 |# Z
%知器神经网络 ) w0 `" s7 ^% q h
net=newp([-1 1;-1 1],1); 1 d2 e0 U- c* N _. k% t1 @
%设置网络的最大训练次数为20次,即训练20次后结束训练 * Q- R8 W3 {/ V6 I& |
net.trainParam.epochs = 20;
$ Y6 G1 s& k! z8 g& n. h$ Y %使用训练函数对创建的网络进行训练
P' f, N) H! @ net=train(net,P,T); ! a. C% \: P8 v" x% V6 f
%对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出 h$ s# r0 @$ y8 m0 k+ T* o
Y=sim(net,P) ) z' R5 d2 D: x! O+ T3 G
%计算网络的平均绝对误差,表示网络错误分类
/ ~) H9 i- A( _1 X, P& @0 H E1=mae(Y-T)
2 v9 }) g& u% ?$ _! u; \ %给定测试数据,检测训练好的神经网络的性能
9 v; \3 |( o8 L8 w c Q=[0.6 0.9 -0.1; -0.1 -0.5 0.5];
; r& [6 N& P" t- @ %使用测试数据,对网络进行仿真,仿真输出即为分类的结果
% {" N9 N: J; n1 C6 b Y1=sim(net,Q)
1 n: V( ?( K. Q( G %创建一个新的绘图窗口
; Z7 S5 O. {& F
3 W. F; o% Q% O6 X
$ V1 m# i- x# p3 D
zan