BP人工神经网络常用传递函数

BP 网络常用传递函数

BP 网络的传递函数有多种。Log-sigmoid 型函数的输入值可取任意值,输出值在0和1之间;tan-sigmod 型传递函数tansig 的输入值可取任意值,输出值在-1到+1之间;线性传递函数purelin 的输入与输出值可取任意值。隐含层常采用S 型传递函数。

BP 网络通常有一个或多个隐层,该层中的神经元均采用sigmoid 型传递函数,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值。各种传递函数如图5.6所示。

只改变传递函数而其余参数均固定,用本章5.2节所述的样本集训练BP 网络时发现,传递函数使用tansig 函数时要比logsig 函数的误差小。于是在以后的训练中隐层传递函数改用tansig 函数,输出层传递函数仍选用purelin 函数。

3) 每层节点数的确定:

使用神经网络的目的是实现摄像机输出RGB 颜色空间与CIE-XYZ 色空间转换,因此BP 网络的输入层和输出层的节点个数分别为3。下面主要介绍隐层节点数量的确定。

对于多层前馈网络来说,隐层节点数的确定是成败的关键。若数量太少,则网络所能获取的用以解决问题的信息太少;若数量太多,不仅增加训练时间,更重要的是隐层节点过多还可能出现所谓“过渡吻合”(Overfitting )问题,即测试误差增大导致泛化能力下降,因此合理选择隐层节点数非常重要。关于隐层数及

其节点数的选择比较复杂,一般原则是:在能正确反映输入输出关系的基础上,

应选用较少的隐层节点数,以使网络结构尽量简单。本论文中采用网络结构增长型方法,即先设置较少的节点数,对网络进行训练,并测试学习误差,然后逐渐增加节点数,直到学习误差不再有明显减少为止。

newff()

功能建立一个前向BP 网络

格式 net = newff(PR,[S1 S2...SN1],{TF1 TF2...TFN1},BTF ,BLF ,PF)

说明

net 为创建的新BP 神经网络;

PR 为网络输入取向量取值范围的矩阵;

[S1 S2„SNl]表示网络隐含层和输出层神经元的个数;

{TFl TF2„TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig ’;

BTF 表示网络的训练函数,默认为‘trainlm ’;

BLF 表示网络的权值学习函数,默认为‘learngdm ’;

PF 表示性能数,默认为‘mse ’。

参数TFi 可以采用任意的可微传递函数,比如transig ,logsig 和purelin 等;

训练函数可以是任意的BP 训练函数,如trainm ,trainbfg ,trainrp 和traingd 等。

BTF 默认采用trainlm 是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会 消耗大量的内存资源。如果计算机内存不够大,不建议用trainlm ,而建议采用训练函数trainbfg 或trainrp 。

虽然这两个函数的运行速度比较慢,但它们的共同特点是内存占用量小,不至于出现训练过程死机的情况。

参数TFi 可以采用任意的可微传递函数,比如transig ,logsig 和purelin 等;

训练函数可以是任意的BP 训练函数,如trainm ,trainbfg ,trainrp 和traingd 等。BTF 默认采用trainlm 是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会消耗大量的内存资源。如果计算机内存不够大,不建议用trainlm ,而建议采用训练函数trainbfg 或trainrp 。虽然这两个函数的运行速度比较慢,但它们的共同特点是内存占用量小,不至于出现训练过程死机的情况。

训练函数:

包括梯度下降bp 算法训练函数traingd ,动量反传递的梯度下降bp 算法训练函数traingdm ,动态自适应学习率的梯度下降bp 算法训练函数traingda ,动量反传和动态自适应学习率的梯度下降bp 算法训练函数traingdx ,levenberg_marquardt的bp 算法训练函数trainlm 。 BP 网络一般都是用三层的,四层及以上的都比较少用;

传输函数的选择,这个怎么说,假设你想预测的结果是几个固定值,如1,0等,满足某个条件输出1,不满足则0的话,首先想到的是hardlim 函数,阈值型的,当然也可以考虑其他的;

然后,假如网络是用来表达某种线性关系时,用purelin---线性传输函数;

若是非线性关系的话,用别的非线性传递函数,多层网络时,每层不一定要用相同的传递函数,可以是三种配合,可以使非线性和线性,阈值的传递函数等;

compet---竞争型传递函数;

hardlim---阈值型传递函数;

hardlims---对称阈值型传输函数;

logsig---S 型传输函数;

poslin---正线性传输函数;

purelin---线性传输函数;

radbas---径向基传输函数;

satlin---饱和线性传输函数;

satlins---饱和对称线性传输函数;

softmax---柔性最大值传输函数;

tansig---双曲正切S 型传输函数;

tribas---三角形径向基传输函数;

二、神经元上的传递函数

传递函数是BP 网络的重要组成部分,必须是连续可微的,BP 网络常采用S 型的对数或正切函数和线性函数。

Logsig 传递函数为S 型的对数函数。

调用格式为:

A=logsig(N )

N :Q 个S 维的输入列向量;

A :函数返回值,位于区间(0,1) 中

info=logsig(code )

依据code 值的不同返回不同的信息,包括:

deriv ——返回微分函数的名称;

name ——返回函数全程;

output ——返回输出值域;

active ——返回有效的输入区间

例如:n=-10:0.1: 10;

a=logsig(n);plot(n,a)

matlab 按照来计算对数传递函数的值:n=2/(1+exp(-2n))

函数logsig 可将神经元的输入(范围为整个实数集)映射到区间(0,1)中。

三、BP 网络学习函数

learngd

该函数为梯度下降权值/阈值学习函数,通过神经元的输入和误差,以及权值和阈值的学习

速率,来计算权值或阈值的变化率。

调用格式;

[dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)

以一个单隐层的BP 网络设计为例,介绍利用神经网络工具箱进行BP 网络设计及分析的过程

1. 问题描述

通过对函数进行采样得到了网络的输入变量P 和目标变量T :

P=-1:0.1:1;

T=[-0.9602 -0.577. -0.0729 0.3771 0.6405 0.6600 0.4609 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201]

2. 网络的设计

网络的输入层和输出层的神经元个数均为1,网络的隐含神经元个数应该在3~8之间。 网络设计及运行的代码:

s=3:8;

res=1:6;

for i=1:6; net=newff(minmax(P),[s(i),1],['tansig',logsig],'traingdx');

net.trainParam.epachs=2000;

net.trainParam.goal=0.001;

net=train(net,P,T)

y=sim('net,P')

error=y-T;

res(i)=norm(error);

end

代码运行结果:

网络训练误差

%获取训练数据与预测数据

input_train=data(n(1:9900),1:3)';

output_train=data1(n(1:9900),1)';

input_test=data(n(9901:10000),1:3)';

output_test=data1(n(9901:10000),1)';

%数据归一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train); %% bp训练

%初始化网络结构

net=newff(inputn,outputn,100);

net.trainParam.show=30;

net.trainParam.epochs=300;

net.trainParam.lr=0.01;

net.trainParam.goal=1e-6;

%网络训练

net=train(net,inputn,outputn);

%% bp预测

%预测数据归一化

inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出

an=sim(net,inputn_test);

%网络输出反归一化

BPoutput=mapminmax('reverse',an,outputps); %% 结果分析

figure

plot(BPoutput,':og');

hold on

plot(output_test,'-*');

legend('预测输出',' 期望输出','fontsize',12) title('BP 网络预测输出','fontsize',12)

xlabel('样本','fontsize',12)

ylabel('输出','fontsize',12)

%预测误差

error=BPoutput-output_test;

figure

plot(error,'-*')

title('神经网络预测误差')

errorsum=sum(abs(error))

save data2 net inputpsoutputps

BP 网络常用传递函数

BP 网络的传递函数有多种。Log-sigmoid 型函数的输入值可取任意值,输出值在0和1之间;tan-sigmod 型传递函数tansig 的输入值可取任意值,输出值在-1到+1之间;线性传递函数purelin 的输入与输出值可取任意值。隐含层常采用S 型传递函数。

BP 网络通常有一个或多个隐层,该层中的神经元均采用sigmoid 型传递函数,输出层的神经元则采用线性传递函数,整个网络的输出可以取任意值。各种传递函数如图5.6所示。

只改变传递函数而其余参数均固定,用本章5.2节所述的样本集训练BP 网络时发现,传递函数使用tansig 函数时要比logsig 函数的误差小。于是在以后的训练中隐层传递函数改用tansig 函数,输出层传递函数仍选用purelin 函数。

3) 每层节点数的确定:

使用神经网络的目的是实现摄像机输出RGB 颜色空间与CIE-XYZ 色空间转换,因此BP 网络的输入层和输出层的节点个数分别为3。下面主要介绍隐层节点数量的确定。

对于多层前馈网络来说,隐层节点数的确定是成败的关键。若数量太少,则网络所能获取的用以解决问题的信息太少;若数量太多,不仅增加训练时间,更重要的是隐层节点过多还可能出现所谓“过渡吻合”(Overfitting )问题,即测试误差增大导致泛化能力下降,因此合理选择隐层节点数非常重要。关于隐层数及

其节点数的选择比较复杂,一般原则是:在能正确反映输入输出关系的基础上,

应选用较少的隐层节点数,以使网络结构尽量简单。本论文中采用网络结构增长型方法,即先设置较少的节点数,对网络进行训练,并测试学习误差,然后逐渐增加节点数,直到学习误差不再有明显减少为止。

newff()

功能建立一个前向BP 网络

格式 net = newff(PR,[S1 S2...SN1],{TF1 TF2...TFN1},BTF ,BLF ,PF)

说明

net 为创建的新BP 神经网络;

PR 为网络输入取向量取值范围的矩阵;

[S1 S2„SNl]表示网络隐含层和输出层神经元的个数;

{TFl TF2„TFN1}表示网络隐含层和输出层的传输函数,默认为‘tansig ’;

BTF 表示网络的训练函数,默认为‘trainlm ’;

BLF 表示网络的权值学习函数,默认为‘learngdm ’;

PF 表示性能数,默认为‘mse ’。

参数TFi 可以采用任意的可微传递函数,比如transig ,logsig 和purelin 等;

训练函数可以是任意的BP 训练函数,如trainm ,trainbfg ,trainrp 和traingd 等。

BTF 默认采用trainlm 是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会 消耗大量的内存资源。如果计算机内存不够大,不建议用trainlm ,而建议采用训练函数trainbfg 或trainrp 。

虽然这两个函数的运行速度比较慢,但它们的共同特点是内存占用量小,不至于出现训练过程死机的情况。

参数TFi 可以采用任意的可微传递函数,比如transig ,logsig 和purelin 等;

训练函数可以是任意的BP 训练函数,如trainm ,trainbfg ,trainrp 和traingd 等。BTF 默认采用trainlm 是因为函数的速度很快,但该函数的一个重要缺陷是运行过程会消耗大量的内存资源。如果计算机内存不够大,不建议用trainlm ,而建议采用训练函数trainbfg 或trainrp 。虽然这两个函数的运行速度比较慢,但它们的共同特点是内存占用量小,不至于出现训练过程死机的情况。

训练函数:

包括梯度下降bp 算法训练函数traingd ,动量反传递的梯度下降bp 算法训练函数traingdm ,动态自适应学习率的梯度下降bp 算法训练函数traingda ,动量反传和动态自适应学习率的梯度下降bp 算法训练函数traingdx ,levenberg_marquardt的bp 算法训练函数trainlm 。 BP 网络一般都是用三层的,四层及以上的都比较少用;

传输函数的选择,这个怎么说,假设你想预测的结果是几个固定值,如1,0等,满足某个条件输出1,不满足则0的话,首先想到的是hardlim 函数,阈值型的,当然也可以考虑其他的;

然后,假如网络是用来表达某种线性关系时,用purelin---线性传输函数;

若是非线性关系的话,用别的非线性传递函数,多层网络时,每层不一定要用相同的传递函数,可以是三种配合,可以使非线性和线性,阈值的传递函数等;

compet---竞争型传递函数;

hardlim---阈值型传递函数;

hardlims---对称阈值型传输函数;

logsig---S 型传输函数;

poslin---正线性传输函数;

purelin---线性传输函数;

radbas---径向基传输函数;

satlin---饱和线性传输函数;

satlins---饱和对称线性传输函数;

softmax---柔性最大值传输函数;

tansig---双曲正切S 型传输函数;

tribas---三角形径向基传输函数;

二、神经元上的传递函数

传递函数是BP 网络的重要组成部分,必须是连续可微的,BP 网络常采用S 型的对数或正切函数和线性函数。

Logsig 传递函数为S 型的对数函数。

调用格式为:

A=logsig(N )

N :Q 个S 维的输入列向量;

A :函数返回值,位于区间(0,1) 中

info=logsig(code )

依据code 值的不同返回不同的信息,包括:

deriv ——返回微分函数的名称;

name ——返回函数全程;

output ——返回输出值域;

active ——返回有效的输入区间

例如:n=-10:0.1: 10;

a=logsig(n);plot(n,a)

matlab 按照来计算对数传递函数的值:n=2/(1+exp(-2n))

函数logsig 可将神经元的输入(范围为整个实数集)映射到区间(0,1)中。

三、BP 网络学习函数

learngd

该函数为梯度下降权值/阈值学习函数,通过神经元的输入和误差,以及权值和阈值的学习

速率,来计算权值或阈值的变化率。

调用格式;

[dW,ls]=learngd(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)

以一个单隐层的BP 网络设计为例,介绍利用神经网络工具箱进行BP 网络设计及分析的过程

1. 问题描述

通过对函数进行采样得到了网络的输入变量P 和目标变量T :

P=-1:0.1:1;

T=[-0.9602 -0.577. -0.0729 0.3771 0.6405 0.6600 0.4609 0.1336 -0.2013 -0.4344 -0.5000 -0.3930 -0.1647 0.0988 0.3072 0.3960 0.3449 0.1816 -0.0312 -0.2189 -0.3201]

2. 网络的设计

网络的输入层和输出层的神经元个数均为1,网络的隐含神经元个数应该在3~8之间。 网络设计及运行的代码:

s=3:8;

res=1:6;

for i=1:6; net=newff(minmax(P),[s(i),1],['tansig',logsig],'traingdx');

net.trainParam.epachs=2000;

net.trainParam.goal=0.001;

net=train(net,P,T)

y=sim('net,P')

error=y-T;

res(i)=norm(error);

end

代码运行结果:

网络训练误差

%获取训练数据与预测数据

input_train=data(n(1:9900),1:3)';

output_train=data1(n(1:9900),1)';

input_test=data(n(9901:10000),1:3)';

output_test=data1(n(9901:10000),1)';

%数据归一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train); %% bp训练

%初始化网络结构

net=newff(inputn,outputn,100);

net.trainParam.show=30;

net.trainParam.epochs=300;

net.trainParam.lr=0.01;

net.trainParam.goal=1e-6;

%网络训练

net=train(net,inputn,outputn);

%% bp预测

%预测数据归一化

inputn_test=mapminmax('apply',input_test,inputps); %网络预测输出

an=sim(net,inputn_test);

%网络输出反归一化

BPoutput=mapminmax('reverse',an,outputps); %% 结果分析

figure

plot(BPoutput,':og');

hold on

plot(output_test,'-*');

legend('预测输出',' 期望输出','fontsize',12) title('BP 网络预测输出','fontsize',12)

xlabel('样本','fontsize',12)

ylabel('输出','fontsize',12)

%预测误差

error=BPoutput-output_test;

figure

plot(error,'-*')

title('神经网络预测误差')

errorsum=sum(abs(error))

save data2 net inputpsoutputps


相关文章

  • BP神经网络模型及其应用
  • 2007年第5期 No.52007 JournalofShayangTeachersCollege 沙洋师范高等专科学校学报 BP神经网络模型及其应用 邢进良 3 (沙洋师范高等专科学校 数理系,湖北 沙洋 448200) 摘 要:本文提出 ...查看


  • 第三讲神经元与网络结构-zzz的日志-网易博客
  • 2015/4/2 网易 博客 下载LOFTER客户端 第三讲 神经元与网络结构 ­ zzz的日志 ­ 网易博客 最多人用的同步记录工具 加关注登录创建博客 水墨点滴 一心一意,是世界上最温柔的力量 首页日志相册音乐博友关于我 日志 第一讲  ...查看


  • 人工智能在自动控制中的应用浅析
  • 人工智能在自动控制系统中的应用浅析 姓名:蔡志威 学号:2011080911 专业:电路与系统 摘 要:现如今,计算机技术已经成为全球最普及的信息技术, 人类的大脑是最为发达的机器,计算机所有的编程都是效仿人类的电脑,对其信息进行采集.分析 ...查看


  • 智能优化算法综述
  • Nanjing University of Science and Technology 智能优化算法的统一框架 110040692 5班 2011年6月20日 目录 1 概述................................ ...查看


  • 人工神经网络原理_分类及应用
  • 科技资讯 2014 NO.03 SCIENCE & TECHNOLOGY INFORMATION 学 术 论 坛 人工神经网络原理.分类及应用 王磊 (东莞职业技术学院教育技术中心 广东东莞 523808) 摘 要:本文就人工神经网 ...查看


  • 神经网络模型
  • 神经网络模型 模拟人类实际神经网络的数学方法问世以来,人们已慢慢习惯了把这种人工神经网络直接称为神经网络.神经网络在系统辨识.模式识别,智能控制等领域有着广泛而吸引人的前景.特别在智能控制中,人们对神经网络的自学习功能尤其感兴趣,并且把神经 ...查看


  • 人工神经网络分类器
  • 通信工程学院 题目 人工神经网络分类器 专业: 自动化 学号:52110608 学生姓名: 张继伟 指导教师姓名:刘富 日期: 年 月 日 人工神经网络分类 摘要:80 年代重新兴起的人工神经网络已成为世界人工智能研究的热门课题之一.本文介 ...查看


  • 贝叶斯网络的发展与展望
  • Vol.23No.2 April2006 文章编号:1671-7872(2006)02-0195-04安徽工业大学学报第23卷第2期J.ofAnhuiUniversityofTechnology2006年4月 贝叶斯网络的发展与展望 王理冬 ...查看


  • 高中会考信息复习提纲
  • 信息技术基础(必修)50 第一章 信息与信息技术 1.信息:利用文字.符号.声音.图形.图象等形式作为载体,通过各种渠道传播的信号.消息.情报或报道等内容,都可以称之为信息.(p2) 信息的发出方(信源)-----信息的接收方(信宿) 对信 ...查看


热门内容