径向基函数(Radial Basis Function,RBF)神经网络是一种传统的神经网络,于1988年首次被提出。1989年,Jackson论证了RBF神经网络对非线性连续函数的一致逼近性能。

RBF神经网络有很强的逼近能力、分类能力和学习速度。其工作原理是把网络看成对未知函数的逼近,任何函数都可以表示成一组基函数的加权和,也即选择各隐层神经元的传输函数,使之构成一组基函数来逼近未知函数。RBF人工神经网络由一个输入层、一个隐含层和一个输出层组成。

RBF神经网络结构简单、训练简洁且收敛速度快,能够逼近任意非线性函数,因此被广泛应用于时间序列分析、模式识别、非线性控制和图形处理等领域。

1.RBF神经网络结构模型

以下内容主要参考了《MATLAB神经网络43个案例分析》第7章。
RBF神经网络的神经元模型如图所示。径向基神经网络的节点激活函数采用径向基函数,通常定义为空间任一点到某一中心之间的欧式距离的单调函数。

图中所示的径向基神经元结构可以看出,径向基神经网络的激活函数是以输入向量x和权值向量w之间的距离Il dist ll作为自变量的。径向基神经网络的激活函数R的一般表达式为

随着权值和输入向量之间距离的减少,网络输出是递增的,当输入向量和权值向量一致时,神经元输出为1。图中的b为阈值,用于调整神经元的灵敏度。利用径向基神经元和线性神经元可以建立广义回归神经网络,此种神经网络适用于函数逼近方面的应用;径向基神经元和竞争神经元可以建立概率神经网络,此种神经网络适用于解决分类问题。

由输入层、隐藏层和输出层构成的一般径向基神经网络结构如下图所示。在RBF神经网络中,输入层仅仅起到传输信号的作用,与传统的神经网络相比,输入层和隐含层之间可以看作连接权值为1的连接,输出层和隐含层所完成的任务是不同的,因而它们的学习策略也不相同。输出层是对线性权进行调整,采用的是线性优化策略,因而学习速度较快。而隐含层是对激活函数(格林函数或高斯函数,一般取高斯函数)的参数进行调整,采用的是非线性优化策略,因而学习速度较慢。

2. 相关MATLAB函数

以下内容参考了mathworks官网文档Radial Basis Neural Networks对几个函数的介绍,以及函数各自的介绍文档。

radbas函数为径向基传递函数,其调用格式为

A = radbas(N,FP)

其中
N为输入向量组成的S×Q维矩阵;
FP为函数参数的结构(忽略);
A为函数返回矩阵,与N一一对应,即N中的每个元素通过径向基函数得到A;

newrb()函数可以设计一个近似径向基网络,其调用格式为

[net,tr] = newrb(P,T,goal,spread,MN,DF)

其中
P为Q组输入向量组成的R×Q维矩阵;
T为Q组目标分类向量组成的S×Q维矩阵;
goal为均方误差目标(Mean Squared Error Goal),默认为0;
spread为径向基函数的扩展速度,默认为1;
MN为神经元的最大数目,默认为Q;
DF为两次显示之间所添加的神经元数目,默认为25;
net为返回值,即一个RBF网络;
tr为返回值,训练记录。

用newrb()创建RBF网络是一个不断尝试的过程,在创建过程中,需要不断增加中间层神经元的个数,直到网络的输出误差满足预先设定的值或者达到最大神经元数量为止。该函数设计的径向基网络net可用于函数逼近。径向基函数的扩展速度spread越大,函数的拟合就越平滑。但是,过大的spread意味着需要非常多的神经元以适应函数的快速变化。如果spread设定过小,则意味着需要许多神经元来适应函数的缓慢变化,这样一来,设计的网络性能就不会很好。对于特定问题,需要多次尝试寻找最好的网络结构。

newrbe函数用于设计一个精确径向基网络,其调用格式为

net = newrbe(P,T,spread)

其中,
P为Q组输入向量组成的R×Q维矩阵;
T为Q组目标分类向量组成的S×Q维矩阵;
spread为径向基函数的扩展速度,默认为1。
和newrb()不同,newrbe()能够基于设计向量快速、无误差地设计一个径向基网络。

3. 相关代码

3.1 实现非线性函数的拟合

Radial Basis Approximation是利用RBF进行函数拟合的示例,并进行了详细的介绍,但是对我没啥用,只把链接放在这里。Radial Basis Underlapping Neurons和Radial Basis Overlapping Neurons研究了扩散常数如何影响径向基网络的设计过程。

3.2 解决多分类问题

代码来源为Classification by Radial Basis Function Neural Networks,使用newrb函数建立的RBF神经网络对三分类问题进行训练和测试,具体过程见代码注释。

%% 网络的构建和训练
% 训练数据,输入为9*3的矩阵,9个输入,带有3个特征
data = [10 0 0;10 0 1;10 1 0;2 10 0;2 10 1;2 11 0;5 0 10;5 0 11;5 1 10];
% 从输出目标可以看到输入分为3类
target = [1;1;1;2;2;2;3;3;3];% 利用数据构建RBF神经网络并训练
net = newrb(data',target');  % 注意矩阵的转置
save('net.mat','net');       % 将网络net保存为.mat文件,后面可直接调用% 查看效果
y = sim(net,data');  % 网络对输入进行运算得到输出y
y=round(y);          % 将输出y的近似值作为分类结果
performance = sum(target==y')/size(target,1)  % 计算网络输出和实际输出的对应程度%% 测试训练后的模型
load('net.mat');     % 导入之前保存的网络
testdata = [10 0 0]; % 给出一个新的数据
y = sim(net,testdata'); % 利用训练后的网络对新数据进行分类
y=round(y);             % 得到分类结果

运行结果,会给出网络的均方根误差MSE,以及准确率performance,这里的效果还是很好的。

NEWRB, neurons = 0, MSE = 0.666667performance =1

笔者的其他博客,欢迎大家阅读学习,共同进步
傻瓜攻略(一)——MATLAB主成分分析代码及结果分析实例

MATLAB中plotconfusion函数的应用

傻瓜攻略(二)——MATLAB数据挖掘之Apriori算法实现

win10系统中通过conda命令安装tensorflow(cpu版本,不用pip)

傻瓜攻略(六)——MATLAB实现RBF神经网络相关推荐

  1. 傻瓜攻略(十六)——MATLAB实现txt文件复杂内容的读取

    理想情况下,txt文件中的内容是很规则的,如下图,这样的文件导入是很简单的,参见傻瓜攻略(十一)--MATLAB实现指定文件夹中txt文件的批量读取 然而现实却是,我们想要导入的txt文件中往往含有比 ...

  2. 傻瓜攻略(八)——MATLAB实现模糊综合评判(两种运算方法)

    模糊综合评判法 模糊综合评价法是一种基于模糊数学(fuzzy mathematics)的综合评价方法.该综合评价法根据模糊数学的隶属度理论把定性评价转化为定量评价,即用模糊数学对受到多种因素制约的事物 ...

  3. 傻瓜攻略(十五)——MATLAB中简单的聚类分析方法

    本文是对聚类分析较为简单的介绍,笔者自从大二开始接触数学建模,就使用过Q型聚类和R型聚类,但是一直到研一结束,都没有一个具体的认识,浅尝辄止,不敢言通.最近参加研究生数学建模比赛,又用到了R型聚类方法 ...

  4. 傻瓜攻略(十二)——MATLAB实现偏最小二乘回归PLS

    这一定是一篇真正的傻瓜攻略,原理为根,算法为骨,应用为肉,傻瓜为皮. 本文主要介绍偏最小二乘回归的基本实现,主要内容基于司守奎<数学建模算法与应用>第11章,在其基础上进行优化. 偏最小二 ...

  5. SPM12 核磁数据预处理 傻瓜攻略

    写在最前:鉴于我自己脑子傻,请不要迷信这篇文章的方法的正确性,数据分析的方法真的很多,基于数据的差异可能在一些地方的设置或数据处理步骤都会有差异!也希望发现这篇文章哪里有错误或可以改进的大神可以评论指 ...

  6. matlab 神经网络设计多层隐含层_[rbf神经网络]请教关于MATLAB中RBF神经网络隐含层神经元个数的问题...

    rbf神经网络 请教关于MATLAB中RBF神经网络隐含层神经元个数的问题 问题补充:MATLAB中用newrb(P, T, goal, spread)创建的神经网络,用于数据的预测,程序可以运行并能 ...

  7. 半自动化批量下载专利全文pdf傻瓜攻略

    半自动化批量下载专利全文pdf傻瓜攻略 写在前面 适合人群 使用前提 基本思路 键鼠记录器脚本 前期准备 脚本原理 注意事项 检查下载效果 写在前面 整理专利的时候,在专利引擎上只能一条条的下载,很是 ...

  8. 海淘iherb购物最新傻瓜攻略

    海淘iherb购物最新傻瓜攻略 这篇文档将介绍一个新人如何从美国iherb网站海淘母婴类奶粉,米粉等,保健品类蜂蜜,蜂胶等,及化妆品类,食品杂货类等等, 通过这篇文章的介绍, 我们可以不用出门就像从淘 ...

  9. 傻瓜攻略(十七)——MATLAB实现SVM二分类之fitcsvm

    以下内容基于MATLAB官网的介绍文档,进行了一点个人的理解和整理,不算原创,但也不是单纯的翻译.具体内容缺斤少两的,想看具体的英文内容请点击链接fitcsvm. MATLAB实现SVM二分类之fit ...

最新文章

  1. 关于 RMAN 备份 数据块 一致性的讨论
  2. 使用OpenCV进行图像全景拼接
  3. Quarkus:一个Kubernetes原生Java框架
  4. 子元素margin-top影响父标签原因
  5. Java 接口和抽象类可以被new么?
  6. Gym - 215177C 玩游戏
  7. 用For循环加cat按顺序合并文件
  8. C++ 多重继承之内存存储
  9. Java实现学生管理系统(完整代码)
  10. mysql存大日志_MySQL三大日志
  11. iOS开发之 WebView
  12. 微软改进的DSSM结构:
  13. 《javascript高级程序设计》笔记:继承
  14. ANSYS ICEM CFD 网格划分步骤简要总结
  15. 阿里云服务器搭建以及简易的WEB项目部署过程
  16. 免费录屏软件哪个好用 ? 7 款免费又好用的录屏工具 , 打工人必备
  17. python socket清空接收缓冲区_Python网络编程——修改套接字发送和接收的缓冲区大小...
  18. javascript 百度地图定位标点,定位详情
  19. 陈冠希传 转载,奇文共欣赏
  20. micropython入门指南电子版_MicroPython入门指南

热门文章

  1. js实现数字的千分化
  2. python画五角星代码_Python使用turtule画五角星的方法
  3. 开始尝试淘宝直通车推广
  4. 遇见未来 | 对话朱贤文,PostgreSQL是一匹即将发力的黑马
  5. mac os 录屏快捷键_Mac录屏软件集合,自带不够专业来凑
  6. 计算机二级工作表不会,计算机二级Office:Excel工作簿与工作表操作
  7. 智博联反射波测桩分析软件 V141125专业版
  8. vue-router路由防卫
  9. 【快讯通知】江苏省2022年度社会保险有关基数通知
  10. 2020C证(安全员)考试题及C证(安全员)考试题库