matlab工具箱的使用说明
工具箱DEMO
精确径向基
作者 : 老饼 日期 : 2022-06-09 15:09:08 更新 : 2022-06-29 01:37:41
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》bp.bbbdata.com


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

本文讲解matlab神经网络工具箱使用精确径向基神经网络的Demo以及入参说明(基本参考于matlab2014b函数newrbe的官方说明)。



  一、简单demo  


matlab工具箱建立精确径向基神经网络(newrbe)的Demo代码(2014b版matlab实测已跑通):

%代码说明:径向基newrbe的matlab工具箱使用Demo
%来自《老饼讲解神经网络》bp.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。




  二、工具箱说明  

在此翻译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会引起数值问题。



   三、算法  


   ●  待求解的参数   

精确径向基是一个三层神经网络,需要求解的参数有:    W21   ,   B 2    ,   W32   ,    B 3    。

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  












联系小饼