机器学习——RBF神经网络

这篇具有很好参考价值的文章主要介绍了机器学习——RBF神经网络。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RBF神经网络

本文部分资料与案例来源:《MATLAB神经网络43个案例分析》

RBF神经网络简述

再介绍RBF神经网络之前我们先来看一下径向基函数(RBF),在百度百科上,RBF定义如下:

径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是Φ(x)=Φ(‖x‖),或者还可以是到任意一点c的距离,c点称为中心点,也就是Φ(x,c)=Φ(‖x-c‖)。

简单来说,RBF就是一个表示空间中一点到中心点距离的函数,常用的RBF主要有以下几种:
机器学习——RBF神经网络
而采取径向基函数作为激活函数的神经网络就是RBF神经网络,RBF神经网络是一种前向神经网络(信号一直向前传递不会返回),是一种三层的前向网络。RBF神经网络的第一层为输入层,由信号源节点组成;第二层为隐藏层,隐藏层中神经元变换函数即为径向基函数;第三层是输出层,它对模式输入做出响应。
上面这些文字可能有一些抽象,接下来我们以下图为例讲一讲RBF神经网络大概是个什么东西:
下图是一个简单的径向基神经网络模型:
机器学习——RBF神经网络

从图中可以看到,径向基神经网络的激活函数是以输入向量和权值向量之间的距离作为自变量的。即输入隐藏层的数据为输入变量 X ⃗ = [ x 1 , x 2 , … , x m ] \vec X=[x_1,x_2,\dots,x_m] X =[x1,x2,,xm]与权值向量 W ⃗ = [ w 1 , w 2 , … , w m ] \vec W=[w_1,w_2,\dots,w_m] W =[w1,w2,,wm]的距离,一般取 ∣ ∣ d i s t ∣ ∣ = ∑ i = 1 m ( x i − w i ) 2 ||dist||=\sqrt{\sum_{i=1}^m{(x_i-wi)^2}} ∣∣dist∣∣=i=1m(xiwi)2 。图中的b为阈值,当 ∣ ∣ d i s t ∣ ∣ ||dist|| ∣∣dist∣∣的值小于b时,将不会激活神经网络,用于调节神经网络的灵敏度;而权值向量 W ⃗ \vec W W 就是我们找到的数据中心。

隐藏层的激活函数一般取高斯函数: f ( x ) = e − 1 2 σ 2 x 2 f(x)=e^{- \frac 1{2\sigma^2}x^2} f(x)=e2σ21x2,其中 σ \sigma σ
高斯函数的方差,是一个常数。隐藏层每个节点的输出就是输入的 ∣ ∣ d i s t ∣ ∣ ||dist|| ∣∣dist∣∣通过激活函数变换后的函数值。

至于输出y,由于这个模型只有一输出,隐藏层也只有一个结点,因此 y = e − 1 2 σ 2 ∣ ∣ d i s t ∣ ∣ 2 y=e^{- \frac 1{2\sigma^2}||dist||^2} y=e2σ21∣∣dist2

对于更为复杂一点的径向基神经网络,其隐藏层具有多个结点,其结构如下所示:
机器学习——RBF神经网络
此时隐藏层有多个向输出层的输出,而输出层的输出则是隐藏层输出的线性加权平均,为了区别输入层的权值向量,我们用 w i 2 w^2_i wi2表示第i个隐藏层结点的权值,于是输出层的输出为 y = o u t p u t ( ∑ i = 1 n w i 2 R B F ( X ⃗ , W ⃗ i ) ) y=output(\sum_{i=1}^nw^2_iRBF(\vec X,\vec W_i)) y=output(i=1nwi2RBF(X ,W i)), W ⃗ i \vec W_i W i为第i个隐藏层结点的中心点向量,output()函数则需要根据不同的场景使用不同的函数,例如二分分类我们则可以使用sign()函数。
更为一般的神经网络结构则是隐藏层输出层都含有多个结点的结构,原理与上面的简单结构相差不大,这里就不在介绍。

机器学习——RBF神经网络

RBF神经网络算法步骤

RBF神经网络学习算法需要求解的参数有三个:基函数的中心向量 W ⃗ \vec W W 、方差 σ \sigma σ以及隐含层到输出层的权值。根据选取的径向基函数中心的方法不同,RBF神经网络有不同的学习方式。下面将介绍自组织选取中心的RBF神经网络学习法。该方法由两个阶段组成:一是自组织学习阶段,此阶段为无导师学习过程,求解隐藏层基函数的中心向量与方差;二是有导师学习阶段,此阶段求解隐藏层到输出层之间的权值。

我们以高斯函数作为径向基神经网络的激活函数,则激活函数可以表示为:
R ( X ⃗ p − W ⃗ i ) = e − ∣ ∣ X ⃗ p − W ⃗ i ∣ ∣ 2 2 σ 2 R(\vec X^p-\vec W^i)=e^{-\frac {||\vec X^p-\vec W^i||^2}{2\sigma^2}} R(X pW i)=e2σ2∣∣X pW i2
w i 为高斯函数中心 ∣ ∣ x i − w i ∣ ∣ 为欧式范数 σ 为高斯函数方差 X ⃗ p = [ x 1 p , x 2 p , … , x m p ] 为第 p 个输入样本 W ⃗ i = [ w 1 i , w 2 i , … , w m i ] 为第 i 个隐藏层结点径向基函数的中心向量 p = 1 , 2 , … , P , P 为样本总数 w_i为高斯函数中心\\||x_i-w_i||为欧式范数\\\sigma为高斯函数方差\\\vec X^p=[x^p_1,x^p_2,\dots,x^p_m]为第p个输入样本\\\vec W^i=[w^i_1,w^i_2,\dots,w_m^i]为第i个隐藏层结点径向基函数的中心向量\\p=1,2,\dots,P,P为样本总数 wi为高斯函数中心∣∣xiwi∣∣为欧式范数σ为高斯函数方差X p=[x1p,x2p,,xmp]为第p个输入样本W i=[w1i,w2i,,wmi]为第i个隐藏层结点径向基函数的中心向量p=1,2,,PP为样本总数

径向神经网络的输出为:
y j = ∑ i = 1 h w i j 2 e − ∣ ∣ X ⃗ p − W ⃗ i ∣ ∣ 2 2 σ 2 y_j=\sum_{i=1}^hw^2_{ij}e^{-\frac {||\vec X^p-\vec W^i||^2}{2\sigma^2}} yj=i=1hwij2e2σ2∣∣X pW i2
w i j 2 为隐藏层第 i 个结点到输出层第 j 个结点的权值 i = 1 , 2 , … , h 为隐含层节点数 y j 为神经网络的第 j 个输出结点的实际输出。 w^2_{ij}为隐藏层第i个结点到输出层第j个结点的权值\\i=1,2,\dots,h为隐含层节点数\\y_j为神经网络的第j个输出结点的实际输出。 wij2为隐藏层第i个结点到输出层第j个结点的权值i=1,2,,h为隐含层节点数yj为神经网络的第j个输出结点的实际输出。
算法得具体步骤如下:
步骤1:基于K-均值聚类方法求取基函数中心:

  1. 网络初始化:随机选取h个训练样本作为聚类中心 c i ( i = 1 , 2 , … , h ) c_i(i=1,2,\dots,h) ci(i=1,2,,h);
  2. 将输入的训练样本集合按最近邻规则分组:即按照样本 X ⃗ p \vec X^p X p与已选择得聚类中心之间的欧氏距离将样本分配到不同的集合 ϱ i ( i = 1 , 2 , … , h ) 中 \varrho_i(i=1,2,\dots,h)中 ϱi(i=1,2,,h)
  3. 重新调整聚类中心:计算各个集合中训练样本得平均值,将这些均值作为新的聚类中心,如果新的聚类中心不在发生变化,则所得到的 c i c_i ci即为神经网络的最终的基函数中心 W i W^i Wi,否则返回2进行下一轮中心求解。
    步骤二:求解方差 σ \sigma σ:
    高斯函数的方差计算公式如下:
    σ = W m a x 2 h \sigma=\frac {W_{max}}{\sqrt{2h}} σ=2h Wmax
    W m a x 为选取的聚类中心之间的最大距离, h 为隐藏层结点个数 W_{max}为选取的聚类中心之间的最大距离,h为隐藏层结点个数 Wmax为选取的聚类中心之间的最大距离,h为隐藏层结点个数
    步骤3:计算隐藏层和输出层之间的权值:
    w i j = e h c m a x 2 ∣ ∣ X ⃗ p − W ⃗ i ∣ ∣ 2 , i = 1 , 2 , … , h ; p = 1 , 2 , … , P w_{ij}=e^{\frac h{c^2_{max}}||\vec X^p-\vec W^i||^2},i=1,2,\dots,h;p=1,2,\dots,P wij=ecmax2h∣∣X pW i2i=1,2,,h;p=1,2,,P
    从上式中我们可以看出j=p,即输入样本数目等于输出结果数目。

使用RBF神经网络进行曲线拟合

其相关函数可以查阅Matlab文档:
newrb(P,T,goal,spread,MN,DF);
net = newrbe(P,T,spread);
A = radbas(N,FP);
代码如下:文章来源地址https://www.toymoban.com/news/detail-473432.html

%% Matlab神经网络43个案例分析
 
%% 清空环境变量
clc
clear
%% 产生训练样本(训练输入,训练输出)
% ld为样本例数
ld=400; 

% 产生2*ld的矩阵 
x=rand(2,ld); 

% 将x转换到[-1.5 1.5]之间
x=(x-0.5)*1.5*2; 

% x的第一行为x1,第二行为x2.
x1=x(1,:);
x2=x(2,:);

% 计算网络输出F值
F=20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);

%% 建立RBF神经网络 
% 采用approximate RBF神经网络。spread为默认值
net=newrb(x,F);

%% 建立测试样本

% generate the testing data
interval=0.1;
[i, j]=meshgrid(-1.5:interval:1.5);
row=size(i);
tx1=i(:);
tx1=tx1';
tx2=j(:);
tx2=tx2';
tx=[tx1;tx2];

%% 使用建立的RBF网络进行模拟,得出网络输出
ty=sim(net,tx);

%% 使用图像,画出3维图

% 真正的函数图像
interval=0.1;
[x1, x2]=meshgrid(-1.5:interval:1.5);
F = 20+x1.^2-10*cos(2*pi*x1)+x2.^2-10*cos(2*pi*x2);
subplot(1,3,1)
mesh(x1,x2,F);
zlim([0,60])
title('真正的函数图像')

% 网络得出的函数图像
v=reshape(ty,row);
subplot(1,3,2)
mesh(i,j,v);
zlim([0,60])
title('RBF神经网络结果')


% 误差图像
subplot(1,3,3)
mesh(x1,x2,F-v);
zlim([0,60])
title('误差图像')

set(gcf,'position',[300 ,250,900,400])


到了这里,关于机器学习——RBF神经网络的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 1-径向基(RBF)神经网络PID控制器仿真

    1、内容简介 略 1-可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 4、参考论文 略 5、下载链接 链接:https://pan.baidu.com/s/1mNySkJC4voazGMLEEfIjDw  提取码:2exo

    2024年02月08日
    浏览(31)
  • Matlab实现神经网络RBF和PNN算法(附上完整源码)

    神经网络是一种模拟人类大脑的计算模型,能够通过学习和适应来解决各种问题。其中RBF和PNN是常用的神经网络算法,本文将介绍如何使用Matlab实现这两种算法。 RBF(Radial Basis Function)算法是一种基于径向基函数的神经网络算法,其主要思想是通过构建一组基函数来逼近目标

    2024年02月16日
    浏览(34)
  • 【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)

    目录 💥1 概述 📚2 运行结果 2.1 算例1 2.2 算例2 🎉3 参考文献 🌈4 Matlab代码实现 本文用于非线性系统识别任务的径向基函数神经网络(RBF-NN)的三种变体。特别是,我实现了具有常规和分数梯度下降的RBF,并将性能与时空RBF-NN进行了比较。 时空RBF-NN(Radial Basis Function Neur

    2024年02月15日
    浏览(36)
  • 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图)

    效果一览 基本介绍 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图) 程序设计 完整程序和数据获取方式:私信博主回复 Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图) 。 参考资料 [1] http://t.csdn.cn/pCWSp [2] https://download.csdn.net/d

    2024年01月20日
    浏览(41)
  • 机器学习-有监督学习-神经网络

    向量版本 y = ⟨ w , x ⟩ + b y = langle w, x rangle + b y = ⟨ w , x ⟩ + b 懂得两者区别 激活函数,损失函数 感知机模型的本质是线性模型,再加上激活函数 训练数据、损失函数、梯度下降,小批量梯度下降 神经网络算法整体流程: 初始化网络 前向传播 计算损失 计算微分 梯度下

    2024年02月07日
    浏览(37)
  • 【机器学习】——深度学习与神经网络

    目录 引入 一、神经网络及其主要算法 1、前馈神经网络 2、感知器 3、三层前馈网络(多层感知器MLP) 4、反向传播算法 二、深度学习 1、自编码算法AutorEncoder 2、自组织编码深度网络 ①栈式AutorEncoder自动编码器 ②Sparse Coding稀疏编码 3、卷积神经网络模型(续下次) 拓展:

    2024年02月09日
    浏览(31)
  • 【机器学习】——神经网络与深度学习

    目录 引入 一、神经网络及其主要算法 1、前馈神经网络 2、感知器 3、三层前馈网络(多层感知器MLP) 4、反向传播算法 二、深度学习 1、自编码算法AutorEncoder 2、自组织编码深度网络 ①栈式AutorEncoder自动编码器 ②Sparse Coding稀疏编码 3、卷积神经网络模型(续下次) 拓展:

    2024年02月10日
    浏览(42)
  • 机器学习 | 卷积神经网络

    采用任意一种课程中介绍过的或者其它卷积神经网络模型(例如LeNet-5、AlexNet等)用于解决某种媒体类型的模式识别问题。 卷积神经网络可以基于现有框架如TensorFlow、Pytorch或者Mindspore等构建,也可以自行设计实现。 数据集可以使用手写体数字图像标准数据集,也可以自行构

    2024年01月17日
    浏览(28)
  • 【头歌】机器学习 --- 神经网络

    第1关:神经网络基本概念 第2关:激活函数 第3关:反向传播算法  第4关:使用pytorch搭建卷积神经网络识别手写数字

    2024年02月04日
    浏览(35)
  • 【机器学习】神经网络

    神经网络:一种计算模型,由大量的节点(或神经元)直接相互关联而构成。每个节点(除输入节点外)代表一种特定的输出函数(或者认为是运算),称为激励函数;每两个节点的连接都代表该信号在传输中所占的比重(即认为该信号对该节点的影响程度) 神经网络三要素:模型、策略

    2024年02月15日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包