快速上手-RBF神经网络-代码与实现例子

举报
社死当场 发表于 2026/06/10 09:50:42 2026/06/10
【摘要】 RBF(Radial Basis Function)神经网络全称径向基函数神经网络‌,它1988年由布鲁姆赫德(Broomhead)和洛维(Lowe)首次提出的一种以RBF函数作为隐层激活函数的人工神经网络模型,它能以任意精度逼近任意连续函数,在机器学习领域广泛应用于曲线拟合、回归任务。 01.RBF神经网络-模型解说下面就是RBF神经网络的模型结构了:RBF神经网络是典型的三层神经网络结

RBF(Radial Basis Function)神经网络全称径向基函数神经网络‌,它1988年由布鲁姆赫德(Broomhead)和洛维(Lowe)首次提出的一种以RBF函数作为隐层激活函数的人工神经网络模型,它能以任意精度逼近任意连续函数,在机器学习领域广泛应用于曲线拟合、回归任务。

01.RBF神经网络-模型解说

下面就是RBF神经网络的模型结构了:
RBF神经网络的结构

RBF神经网络是典型的三层神经网络结构‌,从输入到输出依次为输入层、隐含层、输出层。它呈现“输入非线性映射→输出线性组合”的分层结构,其中输入层是我们的输入,而隐层是RBF节点,输出层就是我们的输出了。

整体来说,就是将输入转换为RBF节点,然后再将RBF隐节点转换为最终的输出,具体的数学表述如下:
image.png

其中的W、b这些参数,就是RBF神经网络需要训练的参数了。不同的模型参数、就能拟合不同的输入、输出关系,在使用时就需要用我们的数据来喂养它,使它能拟合我们的数据样本。

02. RBF神经网络-代码实现

下面我们可以通过一个例子来看看RBF神经网络的使用方法和效果。

% 本代码用于展示如何使用newrb构建一个RBF径向基神经网络
% 来自《老饼讲解-RBF神经网络》,matlab版本:2018a
%--------数据准备----------                              
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是要用来进行预测的输入

% -------打印结果----------
disp('------训练过程-------')                   % 标题
train_record = [tr.epoch;tr.perf]               % 训练过程
disp('------训练结果-------')                   % 标题
hn  = size(net.lw{2,1},2);                      % 计算隐节点个数  
mae = mean(abs(py-y));                          % 计算MAE
disp(['隐节点个数:' ,num2str(hn)])              % 打印隐节点个数
disp(['MAE:' ,num2str(mae)])                    % 打印隐节点个数
plot(1:length(y),y,'*',1:length(y),py,'o')      % 绘制结果,x轴代表样本
legend('原始数据的y','网络预测的y')             % 添加图例

运行结果如下:


上面就是用RBF神经网络来拟合我们数据样本点的一个例子了。

03.RBF神经网络-newrb语法解说

上面使用到newrb函数,这是matlab实现RBF神经网络的函数,下面我们来说说newrb的使用方法。
newrb的调用形式如下:
net = newrb(P,T,goal,spread,MN,DF) % 全部入参
net = newrb(P,T,goal,spread) % 常用入参
(二) newrb的入参说明
newrb共有六个入参:
P : R行Q列的输入矩阵,R个输入变量,Q个样本。
T : S行Q列的目标输出矩阵,S个输出变量,Q个样本。
goal : 均方误差目标(默认=0.0)。
spread : 径向基函数的扩展系数(默认=1.0)。
MN : 隐层神经元的最大个数(默认是Q)。
DF : 每添加DF个神经元,在command窗口打印一次当前结果
备注:需要注意的是,输入输出数据每列代表一个样本,每行代表一个变量。
更多可以参考《RBF神经网络-newrb-函数》

04.看RBF神经网络的特点

最后来看看RBF神经网络的特点:

  • ‌逼近能力强‌:理论上可以任意精度逼近任意非线性连续函数,非常适合处理非线性问题。
  • ‌学习速度快‌:输出层权重采用线性优化策略求解,不需要反向迭代调整多层参数,训练效率远高于传统BP神经网络。
  • 存在局部特性‌:隐含层神经元仅对靠近中心点的输入产生有效响应,更适合局部特征提取。
  • 缺点‌:若训练数据不足或参数设置不当,容易出现过拟合(训练集效果好、测试集泛化能力差)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。