一、 RBF神经网络简介
1.1RBF神经网络模型
参考文献:RBF神经网络自适应控制MATLAB仿真
1.2 RBF神经网络梯度下降法训练
二、MATLAB仿真
2.1 简介
用RBF神经网络来拟合y(k) = u(k)^3+y(k-1)/(1+y(k-1)*y(k-1))函数,输入层节点数为2,中间层节点数为5,输出层节点数为1,其中u(k)为正弦函数。
2.2代码
main函数
clear
clc
close all
[c,b,w,c_1,c_2,b_1,b_2,w_1,w_2] = NetworkInit();
y_1 = 0;
x = [y_1;0];
yy = zeros(5000,1);
yym = zeros(5000,1);
for i=1:5000
u = sin(i/100);
y = f(u,y_1);
ym = NetworkUpdate(x,c,b,w);
[c,b,w,c_1,c_2,b_1,b_2,w_1,w_2] = Train(x,y,ym,c,b,w,c_1,c_2,b_1,b_2,w_1,w_2);%训练
y_1 = y;
yy(i) = y;yym(i) = ym;
end
plot(yy)
hold on
plot(yym)
神经网络初始化
function [c,b,w,c_1,c_2,b_1,b_2,w_1,w_2] = NetworkInit()
b=3*ones(5,1);
c=[-1 -1 0 1 1;
-1 -1 0 1 1];
w=rands(5,1);
c_1 = c;c_2 = c;
b_1 = b;b_2 = b;
w_1 = w;w_2 = w;
end
神经网络前向传播
function y=NetworkUpdate(x,c,b,w)
o = 5;
hj = zeros(1,o);
for i =1:o
hj(i) = Gauss(x,c(:,i),b(i));
end
y = hj*w;
end
高斯函数
function hj=Gauss(x,c,b)
hj = exp(-norm(x-c)^2/(2*b^2));
end
梯度下降法训练神经网络
function [c,b,w,c_1,c_2,b_1,b_2,w_1,w_2]=Train(x,y,ym,c,b,w,c_1,c_2,b_1,b_2,w_1,w_2)
alpha = 0.03;
xite=0.15;
hj = zeros(5,1);
for i =1:5
hj(i) = Gauss(x,c(:,i),b(i));
end
deltaw = xite*(y-ym)*hj;
deltab = zeros(5,1);
for i = 1:5
deltab(i) = xite*(y-ym)*w(i)*hj(i)*norm(x-c(:,i))^2/b(i)^3;
end
deltac = zeros(2,5);
for i = 1:2
for j = 1:5
deltac(i,j) = xite*(y-ym)*w(i)*hj(j)*(x(i)-c(i,j))/b(i)^2;
end
end
w = w_1 + deltaw + alpha*(w_1-w_2);
b = b_1 + deltab + alpha*(b_1-b_2);
c = c_1 + deltac + alpha*(c_1-c_2);
w_2 = w_1;w_1 = w;
b_2 = b_1;b_1 = b;
c_2 = c_1;c_1 = c;
end
目标函数
function y=f(u,y_1)
y = u^3+y_1/(1+y_1^2);
end
2.3 训练效果
拟合效果如图所示,红色线与蓝色线几乎完全重合。