神经网络

学习链接:

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(感知机)

posted @ 2012-12-20 21:55  Joyce-Lee  阅读(536)  评论(0编辑  收藏  举报