目录
老饼讲解:一步一步上手学习

【例子】RBF神经网络-简单例子(一)

作者 : 老饼 发表日期 : 2026-03-16 13:20:51 更新日期 : 2026-05-13 08:38:41
老饼讲解-简单易懂,干货满满,爽过嗦螺!


前面我们已经摸清楚RBF神经网络是什么了,这节我们先拉点数据出来,简单地玩一玩RBF神经网络,来看看RBF神经网络的效果,同时印证一下之前学习到的内容。

一、RBF神经网络-曲线拟合-例子

1.1. RBF神经网络例子-问题

这里我们简单的以sin函数的拟合作为例子,看看RBF神经网络解决曲线拟合问题的效果。

我们先从sin函数中采集15个样本,如下:

sin函数的数据采样

好了,下面我们用RBF神经网络来拟合以上的样本点,然后看看它的拟合效果怎么样。

1.2. RBF神经网络例子-代码实现

要构建一个RBF神经网络,可以借助matlab的神经网络工具箱的newrbe或newrb函数,在这里作为入门,我们先使用newrbe函数,以后再慢慢讲newrb函数。

好了,根据以上的样本点数据,我们用newrbe函数构建一个RBF神经网络,具体代码如下:

% 代码说明:用newrb构建一个RBF神经网络,来拟合sin函数
% 来自《老饼讲解-RBF神经网络》www.bbblearn.com ,matlab版本:2018a
close all 
% 加载数据与模型构建
x   = linspace(-pi,pi,15);                      % 自变量x采样
y   = sin(x);                                   % 函数值y
net = newrbe(x, y, 0.5);                        % 以X,Y建立RBF神经网络,径向基宽度参数spread=0.5
py  = sim(net,x);                               % 用建好的RBF神经网络预测训练数据

% 打印模型结果                          
err_rate = mean(abs(py-y))                      % 计算预测误差MAE
figure                                          % 初始化画布
plot(x,y,'*')                                   % 画出样本点
hold on                                         % 先hold on 一下
t= -pi:0.1:pi;                                  % 生成拟合曲线的x
simt = sim(net,t);                              % 拟合的y
plot(t,simt,'r')                                % 画出拟合曲线
title('模型拟合结果')                           % 标题
legend('训练样本点','拟合曲线')                 % 图例

代码运行结果如下:

模型拟合结果

可以看到,拟合曲线经过了每一个训练样本点,同时,样本点与样本点之间也是平滑过度的,整体上已经很好地拟合出了sin函数的曲线形态。

1.3. RBF神经网络例子-代码解说

在上述代码中,其实只有几句关键代码:

下面我们逐句解说一下:

首先是第5行,这是我们的输入数据,它在之间生成15个数据,而第6行则是对应地得到y。

值得注意的是:matlab中约定,x和y每行代表一个变量、每列代表一个样本,所以这里的x和y都是的数据。

第7行是用x和y来构建一个RBF神经网络,并指定宽度参数为spread=0.5。这里spread设得越大,就代表所使用的RBF越宽,在这里我们先这样理解就可以了。然后返回的net就是构建好的RBF神经网络。

第8行就是演示如何用构建好的RBF神经网络来预测,其中net是我们上面训练好的RBF神经网络,x则是我们需要预测的输入数据,然后就得到模型的预测值py。

在这里的预测,我们直接用x来作为输入,事实上,我们需要预测什么,就输入什么,例如要预测x=0.8时的输出,那么就用:py = sim(net,0.8)就可以了。

好了,后面都是一些画图的代码,就不再展开解说了。

1.4. 如何查看模型表达式

有的同学就会问了,我们构建好的模型最后是什么?事实上,我们知道RBF神经网络的表达式为:

所以,我们只需要提取出模型的隐层、输出层权重、阈值出来,再代入上面的模型就可以了,而代码中的sim函数,其实就是用以上的模型表达式来进行预测。由于模型提取这个比较常用,我们就放到后面再作为一张独立文章进行解说好了,这里暂时不展开。

结束语

这一节我们简单的使用了一个RBF神经网络来进行曲线拟合,事实上RBF神经网络就是这么简单,它根据输入数据来生成多个RBF,然后这些RBF之和就是RBF神经网络的输出了,同时,我们也初步了解了如何在matlab中实现一个RBF神经网络,只需要使用newrbe或newrb函数就可以了,然后调用sim函数就可以进行预测了。



图标 评论
添加评论