zoukankan      html  css  js  c++  java
  • 神经网络 Joyce

    学习链接:

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

  • 相关阅读:
    ThinkPHP5专题
    php截取中文字符串
    跨域/非跨域接口专题
    JS检查输入项是否为手机号码或者固话号码的正则表达式
    TinkPHP去重统计查询
    模型类设计模式
    经典排序方法 python
    leetcode122 买卖股票的最佳时机 python
    找到链表的倒数第k个节点 python
    链表的实现、输出和反向 python
  • 原文地址:https://www.cnblogs.com/joycelee/p/2827153.html
Copyright © 2011-2022 走看看