径向基神经网络

1、径向基函数 (Radial Basis Function,RBF) 神经网络是一种性能良好的前向网络,具有最佳逼近、训练简洁、学习收敛速度快以及克服局部最小值问题的性能,目前已经证明径向基网络能够以任意精度逼近任意连续的函数。因此它已经被广泛应用于模式识别、非线性控制和图像处理等领域。

2、RBF神经网络的结构--RBF 神经网络的基本思想是用径向基函数(RBF)作为隐单元,的“基” ,构成隐含层的空间,隐含层对输入矢量进行变换,将低维的模式输入数据转换到高位空间内,使得在低维空间内的线性不可分为题在高维空间内线性可分。

3、RBF 神经网络神经网络有很强的非线性拟合能力,可映射任意复杂的非线性关系,而且学习规则简单,便于计算机实现。具有很强的鲁棒性、记忆能力、非线性映射能力以及强大的自学习能力,因此有很大的应用市场。RBF 神经网络是一种性能优良的前馈型神经网络,RBF 网络可以任意精度逼近任意的非线性函数,且具有全局逼近能力,从根本上解决了BP网络的局部最优问题,而且拓扑结构紧凑,结构参数可实现分离学习,收敛速度快。RBF 网络和模糊逻辑能够很好的实现互补,提高神经网络的学习泛化能力。

4、RBF 神经网络结构与多层前向网络类似,它一般由输入层、隐含层和输出层构成。第一层为输入层,由信号源节点组成,传递信号到隐层。第二层为隐层,隐层节点的变换函数是对中心点径向对称且衰减的非负非线性函数。第三层为输出层,一般是简单的线性函数,对输入模式作出响应。其结构如图3.8所示

RBF 神经网络输入层到隐含层之间的权值固定为1,隐含层单元的传递函数采用了径向基函数,隐含层神经元是将该层权值向量Wi与输入向量Xi之间的矢量距离与偏差bi 相乘后作为该神经元激活函数的输入。若取径向基函数为高斯函数,则神经元的输出为:

xi为核函数的中心,σ为函数宽度参数,用它来确定每一个径向基层神经元对其输入矢量,也就是X与w之间距离相对应的径向基函数的宽度。从上面的RBF网络的结构图我们可以,确定RBF网络结构的过程就是确定隐含层神经元的中心
xi、宽度σ以及输出权值w的过程。

5、RBF网络的学习算法

RBF网络要学习的参数有三个:基函数的中心xi和方差σ以及隐含层与输出层之间的权值w 。根据径向基函数中心选取方法的不同,RBF网络有多种学习方法,其中最常用的有四种学习方法:随机选取中心法、k-均值聚类算法、自组织选取中心法和正交最小二乘法。

①、确定基函数的中心xi

②、确定基函数的方差σ

一旦RBF 神经网络的中心确定以后,那么其宽度由下列公式来确定:

其中,n为隐含层单元的个数,di为所选中心之间的最大距离。

③、隐含层到输出层之间的权值w

RBF神经网络的介绍:点击打开链接

实验数据集 点击打开链接

  1. clear all
  2. clc   %清除命令窗口
  3. load Data-Ass2;
  4. d=data';  %求转置
  5. dat=d(1:2500,1:2);
  6. labels=d(1:2500,3);
  7. inputNums=2; %输入层节点
  8. outputNums=1; %输出层节点  许多情况下直接用1表示
  9. hideNums=10; %隐层节点数
  10. maxcount=1000; %最大迭代次数
  11. samplenum=2500; %一个计数器,无意义
  12. precision=0.001; %预设精度
  13. alpha=0.01; %学习率设定值
  14. a=0.5; %BP优化算法的一个设定值,对上组训练的调整值按比例修改
  15. error=zeros(1,maxcount+1); %error数组初始化;目的是预分配内存空间
  16. errorp=zeros(1,samplenum); %同上
  17. w=rand(hideNums,outputNums); %10*3;w表隐层到输出层的权值
  18. %求聚类中心
  19. [Idx,C]=kmeans(dat,hideNums);
  20. %X 2500*2的数据矩阵
  21. %K 表示将X划分为几类
  22. %Idx 2500*1的向量,存储的是每个点的聚类标号
  23. %C 10*2的矩阵,存储的是K个聚类质心位置
  24. %求扩展常数
  25. dd=zeros(1,10);
  26. for i=1:10
  27. dmin=10000;
  28. for j=1:10
  29. ddd=(C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2;
  30. if(ddd<dmin&&i~=j)
  31. dmin=ddd;
  32. end
  33. end
  34. dd(i)=dmin;
  35. end
  36. %b为进行计算后隐含层的输入矩阵
  37. b=zeros(2500,10);
  38. for i=1:2500
  39. for j=1:10
  40. b(i,j)=exp( -( (dat(i,1)-C(j,1))^2+(dat(i,2)-C(j,2))^2 )/(2*dd(j)) );%dd为扩展常数
  41. end
  42. end
  43. count=1;
  44. while (count<=maxcount) %结束条件1迭代1000次
  45. c=1;
  46. while (c<=samplenum)%对于每个样本输入,计算输出,进行一次BP训练,samplenum为2500
  47. %o输出的值
  48. double o;
  49. o=0.0;
  50. for i=1:hideNums
  51. o=o+b(c,i)*w(i,1);
  52. end
  53. %反馈/修改;
  54. errortmp=0.0;
  55. errortmp=errortmp+(labels(c,1)-o)^2; % 第一组训练后的误差计算
  56. errorp(c)=0.5*errortmp;
  57. yitao=labels(c,1)-o; %输出层误差
  58. for i=1:hideNums  %调节到每个隐藏点到输出点的权重
  59. w(i,1)=w(i,1)+alpha*yitao*b(c,i);%权值调整
  60. end
  61. c=c+1; %输入下一个样本数据
  62. end  %第二个while结束;表示一次训练结束
  63. %求最后一次迭代的误差
  64. double tmp;
  65. tmp=0.0; %字串8
  66. for i=1:samplenum
  67. tmp=tmp+errorp(i)*errorp(i);%误差求和
  68. end
  69. tmp=tmp/c;
  70. error(count)=sqrt(tmp);%求迭代第count轮的误差求均方根,即精度
  71. if (error(count)<precision)%另一个结束条件
  72. break;
  73. end
  74. count=count+1;%训练次数加1
  75. end
  76. %测试
  77. test=zeros(500,10);
  78. for i=2501:3000
  79. for j=1:10
  80. test(i-2500,j)=exp( -( (d(i,1)-C(j,1))^2+(d(i,2)-C(j,2))^2 )/(2*dd(j)) );%dd为扩展常数
  81. end
  82. end
  83. count=0;
  84. for i=2501:3000
  85. net=0.0;
  86. for j=1:hideNums
  87. net=net+test(i-2500,j)*w(j,1);
  88. end
  89. if( (net>0&&d(i,3)==1) || (net<=0&&d(i,3)==-1) )
  90. count=count+1;
  91. end
  92. end

RBF神经网络的matlab简单实现的更多相关文章

  1. RBF、GRNN 和 PNN 神经网络在Matlab中的用法

    一.RBF神经网络 RBF神经网络概述 径向基函数神经网络 与 BP 神经网络的区别在于训练过程--其参数初始化具有一定方法,并非随机,隐含层的末尾使用了径向基函数,它的输出经过加权和得到 LW2.1 ...

  2. RBF神经网络和BP神经网络的关系

    作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...

  3. bp神经网络及matlab实现

    本文主要内容包含: (1) 介绍神经网络基本原理,(2) AForge.NET实现前向神经网络的方法,(3) Matlab实现前向神经网络的方法 . 第0节.引例  本文以Fisher的Iris数据集 ...

  4. RBF神经网络

    RBF神经网络 RBF神经网络通常只有三层,即输入层.中间层和输出层.其中中间层主要计算输入x和样本矢量c(记忆样本)之间的欧式距离的Radial Basis Function (RBF)的值,输出层 ...

  5. 非刚性图像配准 matlab简单示例 demons算法

    2011-05-25 17:21 非刚性图像配准 matlab简单示例 demons算法, % Clean clc; clear all; close all; % Compile the mex f ...

  6. RBF神经网络——直接看公式,本质上就是非线性变换后的线性变化(RBF神经网络的思想是将低维空间非线性不可分问题转换成高维空间线性可分问题)

    Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列,在图像识别.语音识别.无人驾驶等技术上都已经落地.而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶 ...

  7. RBF神经网络学习算法及与多层感知器的比较

    对于RBF神经网络的原理已经在我的博文<机器学习之径向基神经网络(RBF NN)>中介绍过,这里不再重复.今天要介绍的是常用的RBF神经网络学习算法及RBF神经网络与多层感知器网络的对比. ...

  8. 基于HHT和RBF神经网络的故障检测——第二篇论文读后感

    故障诊断主要包括三部分: 1.故障信号检测方法(定子电流信号检测 [ 定子电流幅值和电流频谱 ] ,振动信号检测,温度信号检测,磁通检测法,绝缘检测法,噪声检测法) 2.故障信号的处理方法,即故障特征 ...

  9. RBF神经网络通用函数 newrb, newrbe

      RBF神经网络通用函数 newrb, newrbe 1.newrb 其中P为输入向量,T为输出向量,GOAL为均方误差的目标,SPREED为径向基的扩展速度.返回值是一个构建好的网络,用newrb ...

随机推荐

  1. Html5知识点以及兼容性

    什么的HTNL5? HTML5 是最新的 HTML 标准. HTML5 是专门为承载丰富的 web 内容而设计的,并且无需额外插件. HTML5 拥有新的语义.图形以及多媒体元素. HTML5 提供的 ...

  2. Python学习笔记(四)Python程序的控制结构

    在学习了 Python 的基本数据类型后,我们就要开始接触Python程序的控制结构,了解 Python 是如何使用控制结构来更改程序的执行顺序以满足多样的功能需求.如果有的小伙伴在之前学过C语言,j ...

  3. Centos7.2源码编译安装LA(N)MP

    LAMP环境中php是作为apache的模块安装的,所以安装顺序是php放在apache的后面安装,这样便于安装php时可以在apache的模块目录生成对应的php模块. apache版本:2.4.3 ...

  4. 介绍vue项目中的axios请求(get和post)

    一.先安装axios依赖,还有qs依赖 npm install axios --save npm install qs --save qs依赖包用post请求需要用到的 插入一个知识点: npm in ...

  5. WordPress使用自定义文章类型实现任意模板的方法和怎么做邮件回复

    主要就是使用了register_post_type 函数. 1.创建插件目录 新建一个文件夹用来存放插件文件,这里我就命名这个文件夹为myMood 2.创php代码文件 在刚才创建的文件夹里面新建一个 ...

  6. BOT建设经营转让,PPP公私合作

    PPP.BOT两种模式有什么区别? BOT模式(build-operate-transfer),由投资方建设并专营一定期限最后移交政府的方式:PPP模式(public-private-partners ...

  7. Nginx教程(四) Location配置与ReWrite语法 (转)

    Nginx教程(四) Location配置与ReWrite语法 1 Location语法规则 1.1 Location规则 语法规则: location [=|~|~*|^~] /uri/ {… } ...

  8. docker--docker基本命令使用及发布镜像

    docker镜像可以完全看作一台全新的电脑使用,无论什么镜像都是对某一东西进行了配置,然后打包后可以快速移植到需要的地方直接使用 省去复杂的配置工作 比如java web项目部署,如果是新部署,需要装 ...

  9. oracle Transactional

    从shutdown transactional命令发布起, 禁止建立任何新的oracle连接. 从shutdown transactional命令发布起,禁止启动任何新的事务. 一旦数据库上所有的活动 ...

  10. Python内存机制简介

    1: 变量不是盒子,应该把变量视作便利贴.变量只不过是标注,所以无法阻止为对象贴上多个标注.标注就是别名: >>> a = [1, 2, 3] >>> b = a ...