RBF神经网络

【例子】如何查看RBF神经网络的数学表达式

作者 : 老饼 发表日期 : 2023-07-01 19:40:04 更新日期 : 2024-12-10 20:47:22
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



在matlab中训练完RBF神经网络后,往往希望查看RBF神经网络具体的模型数学表达式

本文通过一个具体的例子,展示如何在matlab中提取出RBF神经网络的隐层、输出层的权重、阈值

通过本文,可以了解如何在训练完RBF神经网络后获得RBF神经网络的模型数学表达式





   01. RBF神经网络的数学公式-提取方法   





本节介绍在训练好RBF神经网络后如何提取网络的权重阈值





   RBF神经网络的数学公式提取方法    


在训练好RBF网络后,往往我们需要提取出它的数学表达式
 也就是提取出如下形式的数学表达式:  
 

要提取数学表达式,其实就是提取网络的权重和阈值:
 假设net是我们训练好的RBF网络,
那么只需用如下语句就可以提取RBF网络的权重和阈值: 
w2   = net.iw{1}                           % 提取隐层的权重(即径向基的中心)   
b2   = net.b{1}                            % 提取隐层的阈值                             
w3   = net.lw{2,1}                        % 提取输出层权重                             
b3   = net.b{2}                            % 提取输出层的阈值                         
备注:它同时适用于newrbe和newrb






   RBF神经网络的数学公式提取方法-代码示例    


下面先构建一个RBF神经网络,并提取出权重阈值
然后用RBF模型公式计算网络的输出,并与工具箱的sim函数进行比较
这里以newrb为例,同样适用于newrbe
% 本代表用于展示如何查看RBF径向基神经网络的权重和阈值
% 本代码来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2018a   
%----数据准备----                                        
x  = [-2,-1,0,1,2;-6,-2,0,3,8];                                   % 输入数据
y  = [3,2,3,1,2];                                                 % 输出数据
%----网络训练----                                                 
net = newrb(x, y, 0.1,0.5);                                       % 以X,Y建立RBF神经网络,目标误差为0.01,径向宽度系数spread=0.5
											                      
% 提取网络的权重、阈值                                            
w2  = net.iw{1}                                                   % 提取隐层的权重(即径向基的中心)
b2  = net.b{1}                                                    % 提取隐层的阈值
w3  = net.lw{2,1}                                                 % 提取输出层权重
b3  = net.b{2}                                                    % 提取输出层的阈值

% 检验公式的正确性:比较工具箱的结果与用公式计算的结果的最大差异
py_tool = sim(net,x);                                             % 直接调用工具箱的sim函数来预测y
rbf     = exp(-(repmat(b2,1,size(x,2)).*dist(w2,x)).^2);          % 用权重、阈值代入公式计算RBF
py      = sum(repmat(w3',1,size(x,2)).*rbf )+ b3;                 % 用权重、阈值代入公式计算最终的输出
max_err = max(abs(py(:) - py_tool(:)))                            % 比较工具箱的结果与用公式计算的结果的最大差异
代码运行结果如下:
 RBF神经网络的权重和阈值  
将上述权重、阈值代回数学表达式,即如下:
  
其中,dist函数是欧氏距离公式,它的计算如下:
  
可以看到,提取出的权重阈值代入公式计算的结果与调用工具箱是一致的
说明这就是我们要提取的RBF神经网络的数学表达式了
在实际应用中,数据样本较多,网络的权重、阈值相对也较大
所以一般都不会像文中那样打印出来,而是以窗口方式查看变量

 数据窗口查看matlab的RBF神经网络的权重与阈值






好了,通过上述例子的解说,应该都知道如何在matlab查看RBF神经网络的数学表达式了~








 End 




联系老饼