老饼讲解-神经网络 机器学习 神经网络 深度学习
综合杂文

【RBF】RBF径向基神经网络一篇介绍

作者 : 老饼 发表日期 : 2022-11-01 20:32:41 更新日期 : 2023-09-22 15:53:48
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



RBF径向基神经网络由Powell在1985年提出,广泛应用于数值预测

本文深入浅出地介绍径向基神经网络是什么,并展示matlab实现径向基神经网络的例子

帮助初学者直接了当地理解径向基神经网络的思想与应用




   01. RBF神经网络是什么   



本节快速、简单、直接介绍RBF神经网络是什么



      RBF神经网络是什么    


RBF神经网络简单的说,就是用多个钟型函数(径向基)来凑合出目标曲线
 

从图中可以看到,
RBF神经网络以6个原始数据点(图中蓝色的点)为中心,生成了6个RFB曲线
6个RBF曲线叠加后就是一条能够光滑地拟合原始数据点的曲线(绿色)
 
径向基神经网络主要就是利用了RFB函数只对中心邻近区域有影响的特性(局部性)
从而在每个局部都用一个径向基去凑合,最终达到全局拟合
因此,可易知
RBF神经网络模型的数学表达式类似如下形式
  







    02. 关于径向基函数的数学表达式   



本节介绍径向基神经网络的数学表达式和网络拓扑图



    径向基神经网络的通用数学表达式   


一个2输入、3个RBF神经网络的数学表达式如下:
  
 

其中
👉RBF内的b和W用于调节径向基的宽度和x轴位置
👉RBF外的W和b用于调节径向基的高度和y轴位置
往往也会用网络拓扑图来表示,如下
  
 径向基神经网络的训练就是求解上述表达式中各个RBF的w和b,
使得最终网络的输出与真实y值一致




    径向基神经网络的具体数学表达式   


我们使用的径向基函数(Radial Basis Function)一般都是高斯函数
   
 它的图象如下
 

由于 
所以具体使用时,
径向基神经网络的表达式如下:
 
                          
 其中
 dist 代表欧氏距离函数
例如 






    03. 径向基神经网络的求解    



本节介绍径向基神经网络的求解方法



    径向基神经网络的求解方法   


径向基神经网络的常见基本求解方法有三种
👉 1. 精确求解            
👉 2. OLS求解法         
👉 3. K-means聚类法


在matlab的工具箱中,
newrbe 就是使用精确求解方法
newrb 则是使用OLS求解法      
matlab没有实现k-means求解径向基神经网络的方法




    精确求解和OLS求解的区别    


关于RBF神经网络的精确求解
精确求解以每个样本为中心,n个样本就生成n个径向基
然后预设径向基的宽度,最后再求解径向基的高度和阈值
它的最大特色是,训练数据的输出误差为0,因此称为精确求解
 关于RBF神经网络的OLS求解
 
OLS求解法与精解求解的主要思想差不多,
只不过精确求解有n个样本就有n个径向基,网络会非常庞大和复杂
因此,OLS是将径向基逐个添加进来,如下
  
可以看到,随着径向基的添加,网络误差在下降,
从而我们可以选择误差较小,而又能满足我们需求径向基个数作为我们最终的网络







    04. RBF神经网络代码实例    




本节展示一个RBF神经网络的实例,从中更具体的学习和掌握RBF神经网络




    RBF神经网络实例与matlab代码实现    


下面演示使用matlab的newrb函数,
实现一个径向基神经网络拟合以下数据点
 
 
 代码实现如下
%代码说明:径向基newrb的matlab工具箱使用Demo
%来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2018a
%-----------------------------------------------------
%----数据准备----
close all 
x  = [-2 -1 0 1 2];
y  = [3 2 3 1 2];  % 输出数据
%----网络训练----
[net,tr] = newrb(x, y, 0.01, 0.5);    % 以X,Y建立径向基网络,目标误差为0.01,径向基的宽度参数spread=0.5
simY = sim(net,x)                  % 用建好的网络拟合原始数据
perf = tr.perf
w21 = net.iw{1}
b2  = net.b{1}
w32 = net.lw{2,1}
b3  = net.b{2}
%----绘制拟合曲线----
figure(1);
hold on 
t   = -2:0.1:2;              
rbf = repmat(w32',1,size(t,2)).* exp(-(repmat(b2,1,size(t,2)).*dist(w21,t)).^2);
simt = sum(rbf) + b3;
for i = 1:size(rbf,1)
    plot(t,rbf(i,:),':')
end
plot(x,y,'*')  
plot(t,simt,'r')  




     运行结果解释    


上述代码运行后输出如下
  
  
 由于程序中我们设置了误差目标为0.01,
当添加了4个RBF的时候,误差就已经满足要求
可以看到,网络拟合的数据与原数据基本一致 
下面是最终训练好的径向基神经网络的权重和阈值
 
将权重、阈值代入径向基神经网络的数学表达式,
即可得到最终的模型表达式为:












 End 






联系老饼