数学建模 —— 人工神经网络(6)

目录

一、人工神经网络

1.1 人工神经网络结构

1.2 神经元/感知器

1.3 激活函数

1.3.1 sign函数

1.3.2 sigmoid函数(Logistic函数)

1.3.3 tanh双曲正切函数

1.3.4 ReLU函数

1.4 分类

二、BP人工神经网络

2.1 概述

2.2 处理过程

2.3 例题

2.4 Matlab实现

2.4.1 一个简单程序

2.4.2 newff——BP神经网络参数设置函数

2.4.3 train——BP神经网络训练函数


一、人工神经网络

1.1 人工神经网络结构

1.2 神经元/感知器

1.3 激活函数

1.3.1 sign函数

                     

1.3.2 sigmoid函数(Logistic函数)

                    

1.输出映射在 ( 0 1 ) 之间,输出 范围 有限
2.单调连续,易于求导
3.优化 效果 稳定
4.适合用于输出层感知器的激活函数

   

1.因为 sigmoid 函数具有的饱和 性,容易 产生梯度 消失,导致 训练 失效
2.输出 并不是以 0 中心

       可以看出,sigmoid函数的导数只有在x=0附近的时候有比较好的激活性,在正负饱和区的梯度都接近于0,造成梯度弥散,无法完成深层网络的训练。

1.3.3 tanh双曲正切函数

             

1.取值 范围为 [- 1 1]
2.在 特征相差明显时的应用效果 较好,在循环 训练过程中会不断扩大特征 效果
3.是 0 均值
4.应用中比 sigmoid 函数有更强的 应用性
5.同样 具有饱和 性,也 会造成梯度 消失

1.3.4 ReLU函数

                                        

                                 

1.用于 某些算法(如随机梯度下降) 时,收敛速度较快
2.当 x <0 时, ReLU 饱和;当 x > 0 时,则 不存在饱和 问题
3.在 x > 0 时保持梯度不 衰减,从而 缓解梯度消失 问题。但随着训练推进,部分 输入会落入硬饱和 区,导致 对应权重无法 更新,导致神经元死亡
4.输出 均值也大于 0
5.偏移 现象和神经元死亡会共同影响网络的收敛性。

1.4 分类

(1)拓扑结构划分

        两层、三层、多层神经网络

(2)结点间的连接方式划分

        层间连接、层内连接

(3)结点间的连接方向划分

        前馈式神经网络BP(Back Propagation)、反馈式神经网络(Feedback)

二、BP人工神经网络

2.1 概述

        BP人工神经网络一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一

        BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程        

 

2.2 处理过程

(1)初始化网络权值和处理单元的阈值

        最简单的办法就是随机初始化,分别wijwjkwklbijbjkbkl赋随机值

(2)信号的前向传播,计算各处理单元的输出

        按照网络连接以及组合函数和激活函数关系公式,逐层计算隐藏层处理单元和输出层处理单元的输入和输出。

 (3)误差后向传播

对于训练数据xi,输出应为yl,与人工神经网络实际输出Ol存在差异

定义系统的总输出误差为系统输出层各处理单元输出误差的平均值

即各输出Ol与训练数据yl的差异),

输出与其期望值的均方差

 

 需要根据差异的情况对系统内各连接的权值进行调整,使二者相等或逼近 yl

(4)模型评估

(5)模型应用

2.3 例题

 

2.4 Matlab实现

2.4.1 一个简单程序

P=[0 1 2 3 4 5 6 7 8 9 10];          %输入
T=[0 1 2 3 4 3 2 1 2 3 4];           %期望输出
ff=newff(P,T,20);                    %建立一个BP网络,包含20个节点的隐含层
ff.trainParam.epochs=50;             %最大训练次数
ff=train(ff,P,T);                    %训练
Y1=sim(ff,P);                        %仿真
plot(P,T,'o-');

2.4.2 newff——BP神经网络参数设置函数

功能:构建一个BP神经网络

(1)net=newff(P, T, S)

P:  R*Q1矩阵,表示创建的神经网络中,输入层有R个神经元。每行对应一

     个神经元输入数据的典型值,实际应用中常取其最大最小值。

T:  SN*Q2矩阵,表示创建的网络有SN个输出层节点,每行是输出值的典型

     值。

S:  标量或向量,用于指定隐藏层神经元个数,若隐藏层多于一层,则写成

     行向量的形式。

(2)net=newff(P, T, S, TF, BTF, BLF, PF, IPF, OPF, DDF)

TFi:    i层节点的传递函数,包括线性传递函数purelin, 正切S型传递函数

           tansig,对数S型传递函数logsig,默认为“tansig”

BTF:  训练函数,用于网络权值和阈值的调整,默认为基于莱文贝格-马夸

           特共轭梯度法的训练函数trainlm,其他参数见下表所示;

一般在使用过程中设置这2个参数,后面5个参数采用系统默认参数。

BP神经网络训练函数

训练函数的意义

MATLAB中相应的函数

梯度下降法

traingd

动量反传的梯度下降法

traingdm

动态自适应学习率的梯度下降法

traingda

带动量动态自适应学习率的梯度下降法

traingdx

弹性梯度下降法

trainrp

量化共轭梯度法

traincg

莱文贝格-马夸特共轭梯度法

trainlm

弗莱彻-里夫斯共轭梯度法

traingf

波拉克-里比埃共轭梯度法

traingp

鲍威尔-比尔共轭梯度法

traingb

2.4.3 train——BP神经网络训练函数

功能:用训练函数训练BP神经网络

[net, tr]=train(NET, P, T)

NET:  待训练网络;

     P:  输入数据矩阵;

     T:  期望输出数据矩阵;

  net:  训练好的网络;

     tr:  训练过程记录。

BP神经网络训练函数

训练参数名称及默认值

属性

net.trainParam.epochs=100

最大训练次数

net.trainParam.goal=0

训练目标

net.trainParam.show=25

两次显示之间的训练次数(无显示时取NAN

net.trainParam.time=inf

最大训练时间(秒)

net.trainParam.max_fail=5

确认失败的最大次数

net.trainParam.min_grad=1e-6

最小性能梯度

net.trainParam.lr=0.2

学习速率

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
新版Matlab中神经网络训练函数Newff的详细讲解-新版Matlab中神经网络训练函数Newff的使用方法.doc 本帖最后由 小小2008鸟 于 2013-1-15 21:42 编辑 新版Matlab中神经网络训练函数Newff的详细讲解 一、   介绍新版newffSyntax·          net = newff],{TF1 TF2...TFNl}, BTF,BLF,PF,IPF,OPF,DDF) Descriptionnewff],{TF1 TF2...TFNl}, BTF,BLF,PF,IPF,OPF,DDF) takes several arguments PR x Q1 matrix of Q1 sample R-element input vectorsTSN x Q2 matrix of Q2 sample SN-element target vectorsSiSize of ith layer, for N-1 layers, default = [ ]. TFiTransfer function of ith layer. (Default = 'tansig' for hidden layers and 'purelin' for output layer.)BTFBackpropagation network training function BLFBackpropagation weight/bias learning function IPFRow cell array of input processing functions. OPFRow cell array of output processing functions. DDFData divison function ExamplesHere is a problem consisting of inputs P and targets T to be solved with a network.·          P = [0 1 2 3 4 5 6 7 8 9 10];T = [0 1 2 3 4 3 2 1 2 3 4];Here a network is created with one hidden layer of five neurons.·          net = newff;The network is simulated and its output plotted against the targets.·          Y = sim;plotThe network is trained for 50 epochs. Again the network's output is plotted.·          net.trainParam.epochs = 50;net = train;Y = sim; plot 二、   新版newff与旧版newff调用语法对比 Example1比如输入input(6*1000),输出output为(4*1000),那么旧版定义:net=newff,[14,4],{'tansig','purelin'},'trainlm');新版定义:net=newff; Example2比如输入input(6*1000),输出output为(4*1000),那么旧版定义:net=newff,[49,10,4],{'tansig','tansig','tansig'},'traingdx');新版定义:net=newff; 更详细请看word文档 新版Matlab中神经网络训练函数Newff的使用方法.doc

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清园暖歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值