神经网络杂文

【Demo】精确径向基神经网络-Matlab代码Demo

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


精确径向基神经网络由Powell在1985年提出

精确径向基神经网络是一种使用径向基函数(RBF)进行多变量插值的方法,可以逼近任意曲线

本文讲解matlab神经网络工具箱使用精确径向基神经网络的Demo以及入参说明

(基本参考于matlab2014b函数newrbe的官方说明)



  01. newrbe-简单demo  



matlab工具箱建立精确径向基神经网络(newrbe)的Demo代码

(2014b版matlab实测已跑通)


%代码说明:径向基newrbe的matlab工具箱使用Demo
%来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2014b
%-----------------------------------------------------
%----数据准备----
x1  = 1:0.2:10;
x2  = -5:0.2:4;
X   = [x1;x2];                % 输入数据,注意中间是分号
Y   = sin (X(1,:))+X(2,:);    % 输出数据

%----网络训练----
net = newrbe(X,Y,2);          % 以X,Y建立径向基网络,径向基的spread=2
simY = sim(net, X);           % 用建好的网络拟合原始数据

%----结果对比----
figure(1);
t = 1:size(Y,2);
plot(t,Y,'*',t,simY,'r')  

说明:
精确径向基神经网络newrbe实际是newrb(径向基)神经网络的特殊情况。
newrbe的结构与newrb完全一样,只不过隐节点个数不一样。
精确径向基的隐节点个数是固定个数(比样本个数少一个),而newrb则会使用OLS算法逐个添加神经元,直到误差小于指定误差为止。
因为理论上精确径向基神经网络对样本数据的预测误差可以达到0。




    02. newrbe-工具箱说明     



在此翻译matlab给出的doc newrb 文档

帮助大家更进一步使用newrbe

为方便大家理解,笔者作了些少改动


● 语法:


net = newrbe(P,T,spread)



● 描述:


精确径向基神经网络可以用于拟合函数
newrbe 非常快的设计出一个在样本上0错误的径向基神经网络
net = newrbe(P,T,spread) 需要2或3个输入参数,并返回一个新的精确径向基神经网络



● 入参说明:


 P: R行Q列的输入矩阵,R个输入变量,Q个样本
 T: S行Q列的目标输出矩阵,S个输出变量,Q个样本
 spread: 径向基函数的扩展系数(默认=1.0)

备注: spread越大,拟合出来的函数会更加平滑,但太大的spread会引起数值问题。




   03. newrbe的训练算法    



   ●  待求解的参数   


精确径向基是一个三层神经网络,
需要求解的参数有: 
 👉 W21:输入层到隐层的权重  
 👉 B2    :隐层阈值                   
 👉 W32:隐层到输入层权重     
 👉 B3   :输出层阈值               
PASS: 为什么输入层到隐层的权重用W21表示?
因为权重矩阵一般用 K+1层神经元个数*K层神经元个数来表示,这样方便计算
第2层是隐层,第1层是输入层,所以用W21表示输入层到隐层的权重



    求解方法   


W21的求解
 
对于RBE,输入数据X就直接是W21
 
  B2的求解
 
B2由spread参数生成

取值为 ,即 
 这样设计的目的是使径向基输入(即x到训练样本的距离)为+/–spread时,径向基的值为0.5

 
W32、B3的求解
先用W21和B2算法隐神经元的激活值(即径向基的值)A,
再用最小二乘法即可求得W32  和 B3(即对[ W32  B3] * [A ; ones] = T 求解)









  End  












联系老饼