Halcom 发表于 2017-3-16 12:52:49

RBF神经网络的优化逼近

      RBF网络的学习过程与BP网络的学习过程类似,两者的主要区别在于各使用不同的作用函数。BP网络中隐层使用的是Sigmoid函数,其值在输入空间中无限大的范围内为非零值,因而是一种全局逼近的神经网络;而RBF网络中的作用函数是高斯基函数,其值在输入空间中有限范围内为非零值,因为RBF网络是局部逼近的神经网络。      RBF网络逼近程序如下:% RBF Network approximation
clc% 清屏
clear all;%删除workplace变量
close all;%关掉显示图形窗口
% 网络学习参数
alfa=0.08; %动量因子
xite=0.7;   %学习因子   
x=';

b=1.5*ones(4,1);   
c=0.5*ones(2,4);   
w=rands(4,1);   

w_1=w;
w_2=w_1;
c_1=c;
c_2=c_1;
b_1=b;
b_2=b_1;
d_w=0*w;
d_b=0*b;
y_1=0;

ts=0.001;
for k=1:1:2000
   
    time(k)=k*ts;
    u(k)=0.50*sin(1*2*pi*k*ts);

    y(k)=u(k)^3+y_1/(1+y_1^2);

    x(1)=u(k); %初值
    x(2)=y(k);

    for j=1:1:4
      h(j)=exp(-norm(x-c(:,j))^2/(2*b(j)*b(j)));% 高斯基函数
    end
    ym(k)=w'*h';
    em(k)=y(k)-ym(k);

    for j=1:1:4
      d_w(j)=xite*em(k)*h(j);
      d_b(j)=xite*em(k)*w(j)*h(j)*(b(j)^-3)*norm(x-c(:,j))^2;
      for i=1:1:2
            d_c(i,j)=xite*em(k)*w(j)*h(j)*(x(i)-c(i,j))*(b(j)^-2);
      end
    end
   w=w_1+ d_w+alfa*(w_1-w_2);
   b=b_1+d_b+alfa*(b_1-b_2);
   c=c_1+d_c+alfa*(c_1-c_2);
   
%%Jacobian信息
    yu=0;
    for j=1:1:4
      yu=yu+w(j)*h(j)*(c(1,j)-x(1))/b(j)^2; % 敏感度
    end
    dyu(k)=yu;

    y_1=y(k);

    w_2=w_1;
    w_1=w;

    c_2=c_1;
    c_1=c;

    b_2=b_1;
    b_1=b;
end
figure(1);
plot(time,y,'r',time,ym,'b'); % RBF网络辨识结果
xlabel('time(s)');ylabel('y and ym');
grid on
title('RBF网络辨识结果')
figure(2);
plot(time,y-ym,'r'); % RBF网络辨识误差
xlabel('time(s)');ylabel('identification error');
grid on
title('RBF网络辨识误差')
figure(3);
plot(time,dyu,'r');   % RBF网络敏感度Jacobian信息
xlabel('times');ylabel('dyu');
grid on
title('RBF网络敏感度Jacobian信息')
参考文献:MATLAB智能算法超级学习手册

页: [1]
查看完整版本: RBF神经网络的优化逼近