数学建模社区-数学中国

标题: 感知器神经网络模型与学习算法 [打印本页]

作者: 建不了的模。    时间: 2015-1-14 10:49
标题: 感知器神经网络模型与学习算法
第一部分 单层感知器原理
5 D% ?; \/ ?, \  e. a        感知器是美国学者在1957年首次提出的作为有导师学习的神经网络模型,单层感知器是指包含一个突触权值可调的神经元的感知器模型,它的学习算法是Rosenblatt在1958年提出的,感知器网络是神经网络用来进行模式识别的最简单模型,属于前向神经网络类型,但是仅由单个神经元组成的单层感知器只能用来实现线性可分的两类模式的识别。
( P, ~3 H7 ^( J9 n% k" x        感知器网络的模型如下图所示: 020056ra3h1ax244yal9os.jpg.thumb.jpg 6 j  |, _4 ^& v$ O4 |

! E: c! i8 s/ ~. z7 C  感知器网络的学习算法: 020135c1mtrg1tftzanava.jpg.thumb.jpg * F: w' Z1 n3 ]% P) A0 O6 ]5 B
单层感知器网络的学习算法是基于迭代的思想,通常是采用误差校正规则的学习算法,算法的学习过程为: 020319bp2rhlms8hh8phmx.jpg.thumb.jpg   \/ u$ e$ j8 {# m
第二部分 MATLAB相关函数 newp()    生成一个感知机                                 init()       初始化一个神经网络$ V# M9 F* A! X" B  u6 g$ W
                                 mae()      平均绝对误差性能函数
2 j" c- C9 Y0 v1 w- Z7 Q1 B                                 hardlim()  硬限幅传输函数
! X9 }- X% X0 z5 z                                 hardlims() 对称硬限幅传输函数9 A. i. f; }8 D1 d0 w8 V9 g6 x
                                 plotpv()    在坐标图上绘出样本点
! Z4 k. o. _1 v9 w) N3 }! z                                 plotpc()    在已绘制的图上加分类线
: u- Z0 m, c6 u3 j1 ?8 M7 k; i! n                                 train()      神经网络训练函数3 V) x0 c& M7 v# e* p" b# R
                                 learnp()    感知机的学习函数' Z4 q) f; Z$ \3 q( ~) S2 J7 _' H
                                 1earnpn()  标准化感知机的学习函数
4 k& K2 `: j! L" u                                 adapt()      神经网络自适应调整函数1 d, s% F; I' ?" _$ O& ~
                                 sim()        神经网络仿真函数
1 i& a+ @) j; X; P6 T                                 netsum()    输入求和函数
6 n4 _+ y5 O# M# |! k, V4 D1 Y
第三部分 相关代码( v/ w' B- a; |( E, H
%创建一个有两个输入、样本数据的取值范围都在[-1,1]之间,并且网络只有一个神经元的感
% _6 H$ C0 N! m9 P3 m; e%知器神经网络
' F$ B2 Z- G* d! d2 ]* Znet=newp([-1 1;-1 1],1);               
9 j$ P2 D. x$ k6 s2 |# n%设置网络的最大训练次数为20次,即训练20次后结束训练
: E5 b5 k0 v  V: knet.trainParam.epochs = 20;/ C# x% L7 `1 N/ |' t8 |# i. E
%使用训练函数对创建的网络进行训练
# H/ c* P+ g5 K; j) [: B0 j9 A- Onet=train(net,P,T);
, q9 B* H3 i' U) s& X* g7 `%对训练后的网络进行仿真,即根据训练后的网络和样本数据给出输出
* B+ a1 _! r; Y7 @* ^5 wY=sim(net,P)     # o1 y. i, @4 \; C+ ?/ n# S7 S
%计算网络的平均绝对误差,表示网络错误分类, N  n/ Z9 j5 \/ \7 t* D) Y( W
E1=mae(Y-T) 4 D9 p- z+ {6 q# ~
%给定测试数据,检测训练好的神经网络的性能
" g: x3 q/ S3 X# fQ=[0.6 0.9 -0.1; -0.1 -0.5 0.5];7 C6 b' W6 F  S# q
%使用测试数据,对网络进行仿真,仿真输出即为分类的结果( u/ {& A) m2 X
Y1=sim(net,Q)1 L+ l+ m; Q- W( N, R2 H+ q
%创建一个新的绘图窗口
: v% x- i( `1 H
( x$ p  U3 L& e+ M8 I" R( `; J( B% M( I

作者: oulalaoulala    时间: 2015-1-14 15:14
求问其中的P是什么意思?为什么直接输入到MATLAB会有问题?
% r; k% o/ R2 }




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5