学习链接:
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(感知机)