本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
精确径向基神经网络是一种使用径向基函数(RBF)进行多变量插值的方法,它在理论上可以逼近任意曲线
本文参考matlab2014b函数newrbe的官方说明,讲解newrbe函数各个入参的意义与使用DEMO
通过本文,可以快速了解newrbe函数的各个参数,以及如何简单使用newrbe函数来构建一个RBF神经网络
本节展示matlab中的newrbe函数的简单使用DEMO
newrbe-简单使用Demo
newrbe函数可以用插值法快速构建一个RBF神经网络
newrbe函数的简单使用Demo代码如下:
%代码说明:径向基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
本节翻译matlab-doc文档给出的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会引起数值问题
本节简单讲解newrbe函数构建RBF神经网络时所使用的算法
newrbe-待求解的参数
newrbe构建的是一个三层RBF神经网络模型
它需要求解的参数有:
👉 W21:输入层到隐层的权重
👉 B2 :隐层阈值
👉 W32:隐层到输入层权重
👉 B3 :输出层阈值
PASS: 为什么输入层到隐层的权重用W21表示?
因为权重矩阵一般用 K+1层神经元个数*K层神经元个数来表示,这样方便计算
第2层是隐层,第1层是输入层,所以用W21表示输入层到隐层的权重
newrbe的求解方法
W21的求解
对于RBE,输入数据X就直接是W21
B2的求解
B2由spread参数生成
取值为 ,即 ,
这样设计的目的是使径向基输入(即x到训练样本的距离)为+/–spread时,径向基的值为0.5
W32、B3的求解
先用W21和B2算法隐神经元的激活值(即径向基的值)A,
再用最小二乘法即可求得W32 和 B3(即对[ W32 B3] * [A ; ones] = T 求解)
好了,以上就是matlab中构建RBF神经网络的newrbe函数的使用说明了~
End