学习链接:
http://www.cnblogs.com/heaad/archive/2011/03/07/1976443.html
上文(链接)中已经将神经网络的基本原理总结详尽,本文主要描述常见的神经网络模型。
artificial neuron, threshold, bias, active function/transfer function, net activation, M-P model, processing element
一、先来段预热,把工具摆摆
1、Active Function/Transfer Function及其matlab函数
(1)liner function:
Linear transfer function>purelin()
>> n=[1:0.2:2]; >> a=purelin(n) a = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
(2)ramp function:
(3)threshold function:
(4)sigmoid function:
Logarithmic sigmoid transfer function>logsig()
(5)derived function of sigmoid function:
(6)bipolar sigmoid function:
Hyperbolic tangent sigmoid transfer function>tansig()
(7)derived function of bipolar sigmoid function:
2、matlab数据归一化处理函数
链接文中所提premnmx,postmnmx,trmnmx三函数在matlab version R2005b NNET 4.0.6后被废除,取而代之以mapminmax系列函数:
[Y,PS] = mapminmax(X,YMIN,YMAX)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax('apply',X,PS)
X = mapminmax('reverse',Y,PS)
dy_dx = mapminmax('dy_dx',X,Y,PS)
dx_dy = mapminmax('dx_dy',X,Y,PS)
例:
(1)[Y,PS] = mapminmax(X,YMIN,YMAX)设置YMIN,YMAX
>> x = [1:5;6:10]; >> [y,ps] = mapminmax(x) y = -1.0000 -0.5000 0 0.5000 1.0000 -1.0000 -0.5000 0 0.5000 1.0000 ps = name: 'mapminmax' xrows: 2 xmax: [2x1 double] xmin: [2x1 double] xrange: [2x1 double] yrows: 2 ymax: 1 ymin: -1 yrange: 2 no_change: 0 >> ps.ymin=0; >> [y,ps] = mapminmax(x,ps) y = 0 0.2500 0.5000 0.7500 1.0000 0 0.2500 0.5000 0.7500 1.0000 ps = name: 'mapminmax' xrows: 2 xmax: [2x1 double] xmin: [2x1 double] xrange: [2x1 double] yrows: 2 ymax: 1 ymin: 0 yrange: 1 no_change: 0
(2)[Y,PS] = mapminmax(X,FP)
>> x2=[1,2,4;5,3,9;2,4,8;0,1,3]; >> FP.ymin=0; >> FP.ymax=2; >> [y,PS]=mapminmax(x2,FP) y = 0 0.6667 2.0000 0.6667 0 2.0000 0 0.6667 2.0000 0 0.6667 2.0000 PS = name: 'mapminmax' xrows: 4 xmax: [4x1 double] xmin: [4x1 double] xrange: [4x1 double] yrows: 4 ymax: 2 ymin: 0 yrange: 2 no_change: 0
(3)Y = mapminmax('apply',X,PS)
对x1采取某种规范化方式后要对x2采取同样规范化样式 >> x1=[1:3;4:6]; >> x2=[1:2:5;3:2:7]; >> [y,ps]=mapminmax(x1) y = -1 0 1 -1 0 1 ps = name: 'mapminmax' xrows: 2 xmax: [2x1 double] xmin: [2x1 double] xrange: [2x1 double] yrows: 2 ymax: 1 ymin: -1 yrange: 2 no_change: 0 >> yy=mapminmax('apply',x2,ps) yy = -1 1 3 -2 0 2
(4)X = mapminmax('reverse',Y,PS)
反归一化函数 >> x=[1:5;6:10]; >> [y,ps]=mapminmax(x); >> xt=mapminmax('reverse',y,ps) xt = 1 2 3 4 5 6 7 8 9 10
3、使用matlab实现神经网络常用函数
(1)前馈神经网络建立函数
链接文中所提newff()函数在matlab version R2010b NNET 7.0中弃用,以feedforwardnet()取代。
语法:feedforwardnet(hiddenSizes,trainFcn)
()训练函数
()
二、三类神经网络具体模型
1、前馈神经网络(feed-forward neural network)
(1)BP (backpropagation) network(反向传播神经网络)
BP神经网络是一种多层前馈神经网络,主要特点为“信号前向传递,误差反向传播”。训练步骤如下:
step1
根据输入输出序列(X,Y),确定各层节点数——输入层n、隐含层l、输出层m(n==每个输入的维数,m==区分的样本种类数,隐藏层的层数和每层的神经元个数目前尚未有理论指导);
初始化输入层/隐含层连接权值wij、隐含层/输出层wjk;
初始化隐含层阈值(偏置)a,输出层阈值b;
初始化学习速度、激励函数。
step2
计算隐含层输出值H
step3
计算输出层输出值
step4
计算误差
step5
权值更新
step6
阈值更新
step7
判断算法是否结束,若没有,返回step2
(2)perceptron(感知机)