径向基神将网络的神经元模型: 径向基神经王阔的节点激活函数采用径向基函数,通常定义空间任意一点到某一中心之间的欧氏距离的单调函数。
从模型可以得到,径向基神经网络的激活函数的输入向量是 输入向量和权重向量之间的距离作为自变量,随着权值和输入向量之间的距离减少,网络的输出时递增的,当输入向量和权重向量相等的时,达到最大值1,利用径向基神经网络和线性神经元可以建立广义回归神经网络,此种神经网络额可以适用函数的逼近方面的应用,径向基神经网络和竞争神经网络可以建立被概率神经网络,此种神经网络适合解决分类问题。
RBF神经网络的函数逼近问题:
% RBF网络的回归--非线性函数回归的实现
%% 清空环境变量
clc
clear
%% 产生输入 输出数据
% 设置步长
interval=0.01;
% 产生x1 x2
x1=-1.5:interval:1.5;
x2=-1.5:interval:1.5;
% 按照函数先求得相应的函数值,作为网络的输出。
F =20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
%% 网络建立和训练
% 网络建立 输入为[x1;x2],输出为F。Spread使用默认。
net=newrbe([x1;x2],F)
%% 网络的效果验证
% 我们将原数据回带,测试网络效果:
ty=sim(net,[x1;x2]);
% 我们使用图像来看网络对非线性函数的拟合效果
figure
plot3(x1,x2,F,'rd');
hold on;
plot3(x1,x2,ty,'b-.');
view(113,36)
title('可视化的方法观察准确RBF神经网络的拟合效果')
xlabel('x1')
ylabel('x2')
zlabel('F')
grid on
newrb()函数-------------------------该函数用来设计一个径向基神经网络,
[net tr]=newrb(p,t,goal,spread,MN,DF)
goal为均方误差,sperad表示径向基函数的扩展速度,spread越大,输出结果月光花,但是太大耳朵spread值会导致数值计算的困难,MN表示你神经元的最大数目, DF为两次显示之间所添加的神经元数目, tr表示训练记录,
径向基神经网络对函数的拟合效果:
% RBF网络的回归--非线性函数回归的实现
%% 清空环境变量
clc
clear
%% 产生训练样本(训练输入,训练输出)
% ld为样本例数
ld=400;
% 产生2*ld的矩阵
x=rand(2,ld);
% 将x转换到[-1.5 1.5]之间
x=(x-0.5)*1.5*2;
% x的第一行为x1,第二行为x2.
x1=x(1,:);
x2=x(2,:);
% 计算网络输出F值
F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
%% 建立RBF神经网络
% 采用approximate RBF神经网络。spread为默认值
net=newrb(x,F);
%% 建立测试样本
% generate the testing data
interval=0.1;
[i, j]=meshgrid(-1.5:interval:1.5);
row=size(i);
tx1=i(:);
tx1=tx1';
tx2=j(:);
tx2=tx2';
tx=[tx1;tx2];
%% 使用建立的RBF网络进行模拟,得出网络输出
ty=sim(net,tx);
%% 使用图像,画出3维图
% 真正的函数图像
interval=0.1;
[x1, x2]=meshgrid(-1.5:interval:1.5);
F = 20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
subplot(1,3,1)
mesh(x1,x2,F);
zlim([0,60])
title('真正的函数图像')
% 网络得出的函数图像
v=reshape(ty,row);
subplot(1,3,2)
mesh(i,j,v);
zlim([0,60])
title('RBF神经网络结果')
% 误差图像
subplot(1,3,3)
mesh(x1,x2,F-v);
zlim([0,60])
title('误差图像')
set(gcf,'position',[300 ,250,900,400])