当前位置: 首页 > news >正文

【教程】几种不同的RBF神经网络

本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com

目录

  • 一、经典RBF神经网络
    • 1.1.经典径向基神经网络是什么
    • 1.2.经典径向基神经网络-代码与示例
  • 二、广义回归神经网络GRNN
    • 2.1.广义回归神经网络是什么
    • 2.2.广义回归神经网络是什么-代码与示例
  • 三、概率神经网络PNN
    • 3.1.概率神经网络是什么
    • 3.2.概率神经网络是什么-代码与示例

RBF神经网络指的是用RBF曲线来构成的神经网络模型,
RBF曲线
常见的RBF神经网络包括径向基神经网络、概率神经网络、广义回归神经网络等等。
下面我们介绍这几种常见的RBF神经网络。

一、经典RBF神经网络

1.1.经典径向基神经网络是什么

经典径向基神经网络的思想很纯粹,如下
经典径向基神经网络
可以看到,经典径向基神经网络在各个数据点都生成一个径向基。每个径向基的宽度是预设的,然后再求解每个径向基的高度,使得最后所有径向基叠加后能拟合目标曲线。可知,经典径向基神经网络是纯粹的曲线拟合,就是仅从数学角度去使用径向基函数来拟合目标曲线。

1.2.经典径向基神经网络-代码与示例

在matlab中使用newrbe来实现一个径向基神经网络,具体示例如下:

%------代码说明:用newrbe构建一个径向基神经网络 -----------------
% 来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2018a   
%-------------------------------------------------------------------%
%----数据准备----                              
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建立径向基网络,目标误差为0.01,径向基的宽度参数spread=0.5
py = sim(net,x)                                % 用建好的网络进行预测,这里的x是要用来进行预测的输入% ----打印结果----------
err_rate = mean(abs(py-y)./abs(y))             % 计算相对误差占比
plot(1:length(y),y,'*',1:length(y),py,'o')     % 绘制结果,x轴代表样本
legend('原始数据的y','网络预测的y')            % 添加图例

运行结果如下:
在这里插入图片描述
可以看到,网络的预测值与真实值完全一致,
这并非偶然,因为本例用于预测的数据就是训练数据,而newrbe在训练数据上是0误差的

二、广义回归神经网络GRNN

2.1.广义回归神经网络是什么

广义回归神经网络General Regression Neural Network也是径向基神经网络的一种,广义回归使用所有历史样本点来综合评估当前样本点。类似于投票的思想,即所有历史样本点都给出当前样本点与自己相似的概率,然后得到最终的综合评估,如下:
y = ∑ i y i ∗ p i y =\sum\limits_{i}y_i*p_i y=iyipi
其中,Pi的计算为:
p ^ i = exp ⁡ ( − a 2 ( x − x i ) 2 ) p i = p j / ∑ j P j \hat{p}_i = \exp(-a^2(x-x_i)^2) \\p_i =p_j/ \sum\limits_{j}P_j p^i=exp(a2(xxi)2)pi=pj/jPj

pi的意义如下图所示:
在这里插入图片描述

它假设x与任何一个已有样本中 xi 相同的概率都服从正态分布,然后再进行归一化就得到pi的计算公式。
相比经典RBF,广义回归更具解释性。

2.2.广义回归神经网络是什么-代码与示例

在matlab中使用newgrnn来实现一个广义回归神经网络,具体示例如下:

%代码说明:径向基newgrnn的matlab工具箱使用Demo
%来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2014b
%-----------------------------------------------------
%----数据准备----
x1  = 1:0.2:10;
x2  = -5:0.2:4;
X   = [x1;x2];                % 输入数据,注意中间是分号
Y   = sin (X(1,:))+X(2,:);    % 输出数据%----网络训练----
net = newgrnn(X,Y);           % 网络建立与训练
simY = sim(net, X);           % 用建好的网络拟合原始数据%----结果对比----
figure(1);
t = 1:size(Y,2);
plot(t,Y,'*',t,simY,'r')  

三、概率神经网络PNN

3.1.概率神经网络是什么

概率神经网络ProbabilisticNeuralNetwork是广义回归神经网络的拓展,广义回归神经网络用于数值预测,而概率神经网络则用于类别预测。
概率神经网络

概率神经网络用于类别预测,有多少个类别就有多少个输出,概率神经网络仅仅是将广义回归神经网络再加上一个compet运算,即哪个输出最大就置1,其余置0。

3.2.概率神经网络是什么-代码与示例

在matlab中使用newgrnn来实现一个广义回归神经网络,具体示例如下:

% 训练数据
P = [1 2 3 4 5 6 7];   % 输入数据
Tc = [1 2 3 2 2 3 1];  % 输出数据:类别编号
T = ind2vec(Tc);       % 将类标转换为onehot编码格式%设计一个PNN神经网络,并测试
net = newpnn(P,T);     % 生成一个概率神经网络
Y = sim(net,P)         % 用网络进行预测
Yc = vec2ind(Y)        % 将预测结果转为类别编号 

运行结果如下:
在这里插入图片描述
以上就是三种常见的RBF神经网络的介绍了


相关链接:

《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂
《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂
《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂

http://www.lryc.cn/news/386221.html

相关文章:

  • 【Liunx-后端开发软件安装】Liunx安装FDFS并整合nginx
  • 【Java笔记】Flyway数据库管理工具的基本原理
  • 国际数字影像产业园创业培训,全面提升创业能力!
  • pyqt5 制作视频剪辑软件,切割视频
  • VUE----通过nvm管理node版本
  • R语言进行字符的替换和删减gsub,substr函数
  • 2024年6月27日,欧盟REACH法规新增第31批1项SVHC高关注物质
  • 高通410-linux棒子设置网络驱动
  • PostgreSQL的系统视图pg_stat_archiver
  • 【D3.js in Action 3 精译】第一部分 D3.js 基础知识
  • 面试经验分享 | 渗透测试工程师(实习岗)
  • STM32 IWDG(独立看门狗)
  • ios swift5 获取wifi列表
  • 回溯法c++学习 解决八皇后问题
  • 5. Spring IoCDI ★ ✔
  • 数据库自动备份到gitee上,实现数据自动化备份
  • 探索 Spring Cloud Gateway:构建微服务架构的关键一环
  • P1114 “非常男女”计划最优解
  • C++ | Leetcode C++题解之第187题重复的DNA序列
  • 构建、标记和发布镜像
  • [Go Web] Kratos 使用的简单总结
  • 首个实时 AI 视频生成技术发布;科大讯飞发布星火大模型 4.0 丨 RTE 开发者日报
  • 什么是容器镜像
  • ElasticSearch-Windows系统ElasticSearch(ES)的下载及安装
  • 【应用开发二】GPIO操控(输出、输入、中断)
  • 单点登录方法
  • springboot集成JPA并配置hikariCP连接池问题解决
  • vue2的双向绑定
  • Vue3 国际化i18n
  • 算法金 | 使用随机森林获取特征重要性