本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
精确径向基神经网络由Powell在1985年提出
精确径向基神经网络是一种使用径向基函数(RBF)进行多变量插值的方法,可以逼近任意曲线
本文讲解matlab神经网络工具箱使用精确径向基神经网络的Demo以及入参说明
(基本参考于matlab2014b函数newrbe的官方说明)
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。
在此翻译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:输入层到隐层的权重
👉 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