刚开始接触RBF神经网络时,会发现matlab提供了newrb和newrbe两个函数来构建RBF神经网络,那到底该使用哪一个呢?其实只要知道它们的区别,自然就知道该使用哪一个了。下面我们就来说说newrb和newrbe的区别。
一、newrbe函数
1.1. newrbe函数-简单介绍
newrbe函数是构建RBF神经网络最基础的方法,它使用的是插值法。简单来说,就是给每一个训练样本点都构建一个RBF隐节点,例如现在训练的有10000个样本,那么最终构建出来的模型就会有10000个隐节点。不懂RBF插值法原理的可以参考《RBF神经网络-训练原理》。
1.2. newrbe函数-使用说明
newrbe函数的使用说明如下:

1.3. newrbe函数-使用示例
下面是一个使用newrb来构建RBF神经网络的例子:
matlab
%----数据准备----
x = [-2,-1,0,1,2;-6,-2,0,3,8]; % 输入数据
y = [3,2,3,1,2]; % 输出数据
%----网络训练----
net = newrbe(x, y, 0.5); % 以X,Y建立RBF神经网络,RBF宽度参数spread=0.5
py = sim(net,x) % 用建好的网络进行预测,这里的x是要用来进行预测的输入
以上就是newrbe函数了,接下来我们再看看newrb函数。
二、newrb函数
2.1. newrb函数-简单介绍
为什么会有newrb函数呢,这主要是newrbe函数训练出来的隐节点过多,就如上面所说的,10000个样本就有10000个隐节点,这显然是太多了,那么就到newrb出场了,它使用的是ols法来构建RBF神经网络,它的原理其实和插值法是类似的,只不过会尽量的减少隐节点的个数,当然,这是有代价的,那就是特征预测的精度,所以,我们要预设一个目标误差,这样它会在尽量减少隐节点个数的同时、keep住误差不要超出我们的目标。
2.2. newrbe函数-使用说明
newrb函数的使用方法如下:

2.3. newrb函数-使用示例
下面是一个使用newr来构建RBF神经网络的例子:
matlab
%--------数据准备----------
x = [-2,-1,0,1,2;-6,-2,0,3,8]; % 输入数据
y = [3,2,3,1,2]; % 输出数据
%--------网络训练----------
[net,tr] = newrb(x, y, 0.01,0.5); % 以X,Y建立RBF神经网络,目标误差0.01,RBF宽度参数spread=0.5
py = sim(net,x); % 用建好的网络进行预测,这里的x是要用来进行预测的输入
可以看到,使用newrb时,要比newrbe多一个参数,也就是需要设置目标误差。
三、newrb和newrbe的差异
经过上面的了解,我们可以总结一下newrb和newrbe函数的差异:
- newrb使用的是OLS法,而newrbe使用的是插值法。
- newrb需要设置一个目标误差,而newrbe误差必为0。
- newrb比newrbe使用更少的隐节点,模型体积更小一些。
- newrb使用更少的隐节点,所以一般比newrbe的泛化能力更强一些。
结束语
以上就是newrb和newrbe函数的介绍和对比了,更多的可以参考matlab的官方文档,也可以参考《老饼讲解-RBF神经网络》系列教程。