径向基神经网络续1

时间:2022-04-28
本文章向大家介绍径向基神经网络续1,主要内容包括1.创建函数、(1) newrb函数、2.传递函数、3.转换函数、4.权函数、5.竞争性传递函数、二、径向基审计网络的应用、2.GRNN网络实现曲线拟合、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

一、径向基神经网络的函数

1.创建函数

(1) newrb函数

该函数用于设计一个径向基神经网络:

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

其中,P为Q组输入向量;T为Q组目标分类向量;goal为均方误差,默认为0;spread为径向基函数的分布,默认值为1;MN为神经元的最大数目,默认值为Q;DF为两次显示之间所添加的神经元数目,默认为25;net为生成的径向基网络;tr为生成的训练记录。

在上述代码中,可自行修改spread参数的值,观察结果有何不同,加入用代码net=newrb(p,t,0,0.6);替换为net=newrb(p,t);可以讲spread参数从默认值1改为0.6,使拟合的曲线更加精细,拟合效果如上图所示。

(2) newrbe函数

该函数用于设计一个准确的径向基网络。函数的调用格式为:

net=newrbe(P,T,spread)

其中,P为Q组输入向量;T为Q组目标分类向量;spread为径向基函数的分布,默认值为1.

(3) newpnn函数

该函数可用于创建概率神经网络,概率神经网络是一种适用于分类问题的径向基函数。函数的调用格式为:

net=newpnn(P,T,spread)

其中,输入参数P为输入向量;T为目标向量;spread为径向基函数的分布密度,参数spread的大小对网络逼近精度有很大影响,需要不断调整spread的值。spread越小,函数的比较越精确,但是逼近的过程就越粗糙;spread越大,逼近过程就比较平滑,但是逼近的误差会比较大。

newpnn创建的是一个两层的神经网络:第一层的神经元是径向基神经元,用dist函数计算加权输入,用netprod计算网络输入;第二层的神经元是竞争神经元,用dotprod函数计算加权输入,用netsum函数计算网络输入。其中只有第一层包含阈值。网络将第一层的权值设置为P,第一层的阈值设置为0.8326/spread,且加权输入为±spread时,径向基函数取值恰好为0.5,第二层的权值被设置为T。(4)newgrnn函数

该函数可用于设计一个广义回归神经网络。广义回归神经网络是径向基神经网络的一种,通常用于函数逼近。函数的调用格式为:

net=newgrnn(P,T,spread)

其中,输入参数P为输入向量;T为输出向量;spread为径向基函数的分布函数,参数spread的大小对网络的逼近精度有很大的影响,需要不断地调整spread的值。

2.传递函数

在matlab神经网络工具箱中,提供了radbas函数用于实现径向基函数网络的传递。函数的调用格式为:

A = radbas(N,FP)

其中,输入参数N为SxQ维的网络输入(列)向量矩阵;FP为性能参数(可忽略),返回网络输入向量N的输出矩阵A。

3.转换函数

ind2vec(ind):将数据索引转换为向量组,其中ind2vec函数输入为包含n个下标的行向量ind,调用后可以得到m行n列的向量组矩阵,结果是矩阵中的每个向量I,除了ind中的第I个元素指定位置为1外,其余元素为0,结果矩阵的行数等于ind中最大的下标值。

vec2ind(vec):该函数的功能是将单值向量变换成下标值。

4.权函数

1.dist函数

计算欧几里得距离

2.normprod函数

用于实现规范点积权函数

5.竞争性传递函数

A=compet(N,FP)

二、径向基审计网络的应用

1.概率分类问题

clear all;
p=[1,2;2,2;1,1]';
t=[1,2,3];
% 绘制输入向量及其相应的类别
plot(p(1,:),p(2,:),'r.','markersize',30);
for i=1:3
    text(p(1,i)+0.1,p(2,i),sprintf('class %g',t(i)));
end
axis([0 3 0 3]);
% 将期望类别指针t转换为向量tc
tc=ind2vec(t);
spread=1;
net=newpnn(p,tc,spread);
a=sim(net,p);
ac=vec2ind(a);
plot(p(1,:),p(2,:),'r.','markersize',30);
axis([0 3 0 3]);
for i=1:3
    text(p(1,i)+0.1,p(2,i),sprintf('class %g',ac(i)));
end
% 在对新输入向量p进行测试
p=[2;1.5];
a=sim(net,p);
ac=vec2ind(a);
hold on
plot(p(1),p(2),'*','markersize',10,'color',[1 0 0]);
text(p(1)+0.1,p(2),sprintf('class %g',ac));
% hold off
xlabel('p(1,:)与p(1)')
ylabel('p(2,:)与p(2)')
% 通过立体图显示三个类别所在面的情况及新的输入向量对应的类别
p1=0:0.05:3;
p2=p1;
[p1,p2]=meshgrid(p1,p2);
pp=[p1(:),p2(:)]';
aa=sim(net,pp);
aa=full(aa);
m=mesh(p1,p2,reshape(aa(1,:),length(p1),length(p2)));
set(m,'facecolor',[0 0.5 1],'linestyle','none');
hold on
m=mesh(p1,p2,reshape(aa(2,:),length(p1),length(p2)));
set(m,'facecolor',[0 0.1 0.5],'linestyle','none');
m=mesh(p1,p2,reshape(aa(3,:),length(p1),length(p2)));
set(m,'facecolor',[0.5 0 1],'linestyle','none');
plot3(p(1,:),p(2,:),[1 1 1]+0.1,'.','markersize',30);
plot3(p(1),p(2),1.1,'*','markersize',10,'color',[1 0 0]);

2.GRNN网络实现曲线拟合

广义回归神经网络以径向基网络为基础发展而来,相比径向基网络,更适合解决曲线你和问题,而且速度更快。

clear all;
x=-9:8;
y=[129,-32,-118,-138,-125,-97,-55,-23,-4,2,1,-31,-72,-121,-142,-174,-155,-77];
plot(x,y,'ro');
p=x;
t=y;
tic;
net=newrb(p,t,0,2);
toc
xx=-9:0.2:8;
yy=sim(net,xx);
hold on;
plot(xx,yy);
tic;
net2=newgrnn(p,t,0.5);
toc
yy2=sim(net2,xx);
plot(xx,yy2,'.-k');
legend('原始数据','径向基拟合','广义回归拟合');