径向基(RBF)函数神经网络使用解说

本帖由Matlab技术论坛原创,原帖参见 http://www.matlabsky.com/thread-1540-1-5.html 



众所周知,BP网络用于函数逼近时,权值的调节采用的是负梯度下降法。这个调节权值的方法有局限性,即收敛慢和局部极小等。径向基函数网络(RBF)在逼近能力、分类能力和学习速度等方面均优于BP网络。 

Matlab中提供了四个径向基函数相关的函数,它们都是创建两层的神经网络,第一层都是径向基层,第二层是线性层或者竞争层。主要的区别是它们权值、阀值就算函数不同或者是否有阀值。 

注意:径向基函数网络不需要训练,在创建的时候就自动训练好了。 

1.net = newrbe(P,T,spread) 

newrbe()函数可以快速设计一个径向基函数网络,且是的设计误差为0。第一层(径向基层)神经元数目等于输入向量的个数,加权输入函数为dist,网络输入函数为netprod;第二层(线性层)神经元数模有输出向量T确定,加权输入函数为dotprod,网络输入函数为netsum。两层都有阀值。 

第一层的权值初值为p',阀值初值为0.8326/spread,目的是使加权输入为±spread时径向基层输出为0.5,阀值的设置决定了每一个径向基神经元对输入向量产生响应的区域。 

2.[net,tr] = newrb(P,T,goal,spread,MN,DF) 

该函数和newrbe一样,只是可以自动增加网络的隐层神经元数模直到均方差满足精度或者神经元数模达到最大为止。 


P=-1:0.1:1; 
T=sin(P); 
spread=1; 
mse=0.02; 
net=newrb(P,T,mse,spread); 
t=sim(net,P); 
plot(P,T,'r*',P,t) 



3.net = newgrnn(P,T,spread)泛回归网络(generalized regression neural network) 

广义回归网络主要用于函数逼近。它的结构完全与newbre的相同,但是有以下几点区别(没有说明的表示相同): 
(1)第二网络的权值初值为T 
(2)第二层没有阀值 
(3)第二层的权值输入函数为normpod,网络输入函数为netsum 



> > P=0:1:20; 
> > T=exp(P).*sin(P); 
> > net=newgrnn(P,T,0.7); 
> > p=0:0.1:20; 
> > t=sim(net,p); 
> > plot(P,T,'*r',p,t) 



4.net = newpnn(P,T,spread)概率神经网络(probabilistic neural network) 

该网络与前面三个最大的区别在于,第二层不再是线性层而是竞争层,并且竞争层没有阀值,其它同newbre,故PNN网络主要用于解决分类问题。PNN是按下面的方式进行分类的: 
为网络提供一输入向量后,首先,径向基层计算该输入向量同样本输入向量之间的距离||dist||,该层的输出为一个距离向量;竞争层接受距离向量为输入,计算每个模式出现的概率,通过竞争传递函数为概率最大的元素对应输出1,否则为0。 

注意:由于第二层是竞争层,故输入/输出向量必须使用ind2vec/vec2ind函数进行转换,也就是将索引转换为向量或者向量转换为索引。 



> > P=[1 2; 2 2;1 1]' 

P = 
1 2 1 
2 2 1 

> > Tc=[1 2 3]; 
> > T=ind2vec(Tc) 

T = 
(1,1) 1 
(2,2) 1 
(3,3) 1 

> > spread=1; 
> > net=newpnn(P,T,spread); 
> > t=sim(net,P) 


t = 
(1,1) 1 
(2,2) 1 
(3,3) 1 

> > tc=vec2ind(t) 

tc = 
1 2 3 
%从这里可以看出gnn对P准确分类了

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值