神经网络-专题详述

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

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



本文介绍如何从matlab的RBF神经网络中将数学表达式中的权重阈值提取出来

并进一步展示一个具体的例子,展示具体是如何提取出来的,并在提取后验证数学表达式的准确性




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



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



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


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

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





   02. RBF神经网络的数学公式提取--实例代码   



本节完整展示一个RBF神经网络提取权重阈值的例子

并对提取结果进行准确性校验



   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建立径向基网络,目标误差为0.01,径向基的宽度参数spread=0.5
											                
% 提取网络的权重、阈值                                      
w21 = net.iw{1}                                             % 提取隐层的权重(即径向基的中心)
b2  = net.b{1}                                              % 提取隐层的阈值
w32 = net.lw{2,1}                                           % 提取输出层权重
b3  = net.b{2}                                              % 提取输出层的阈值

% 检验公式的正确性:比较工具箱的结果与用公式计算的结果的最大差异
py_tool = sim(net,x);                                      % 直接调用工具箱的sim函数来预测y
rbf     = exp(-(repmat(b2,1,size(x,2)).*dist(w21,x)).^2);  % 用权重、阈值代入公式计算RBF
py      = sum(repmat(w32',1,size(x,2)).*rbf )+ b3;         % 用权重、阈值代入公式计算最终的输出
max_err     = max(abs(py(:) - py_tool(:)))                 % 比较工具箱的结果与用公式计算的结果的最大差异




   代码运行结果   


运行结果如下
 matlab的RBF神经网络的权重与阈值  
将上述权重、阈值代回数学表达式,即如下:
 
其中,dist函数是欧氏距离公式,它的计算如下:
  
可以看到,
提取出的权重阈值代入公式计算的结果与调用工具箱是一致的,
说明这就是我们要提取的RBF神经网络的数学表达式了


    补充    


在实际应用中,数据样本较多,网络的权重、阈值相对也较大,
所以一般都不会像文中那样打印出来,而是以窗口方式查看变量
数据窗口查看matlab的RBF神经网络的权重与阈值





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







 End 




联系老饼