淘先锋技术网

首页 1 2 3 4 5 6 7

一、 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 训练效果

在这里插入图片描述
拟合效果如图所示,红色线与蓝色线几乎完全重合。