RBF神经网络原理详解和MATLAB实现.docx
- 文档编号:11790622
- 上传时间:2023-04-01
- 格式:DOCX
- 页数:16
- 大小:1.49MB
RBF神经网络原理详解和MATLAB实现.docx
《RBF神经网络原理详解和MATLAB实现.docx》由会员分享,可在线阅读,更多相关《RBF神经网络原理详解和MATLAB实现.docx(16页珍藏版)》请在冰豆网上搜索。
RBF神经网络原理详解和MATLAB实现
RBF神经网络:
原理详解和MATLAB实现
——2020年2月2日
一、径向基函数RBF
定义(Radialbasisfunction——一种距离)
径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是Φ(x)=Φ(‖x‖),或者还可以是到任意一点c的距离,c点称为中心点,也就是Φ(x,c)=Φ(‖x-c‖)。
任意一个满足Φ(x)=Φ(‖x‖)特性的函数Φ都叫做径向基函数。
标准的一般使用欧氏距离(也叫做欧式径向基函数),尽管其他距离函数也是可以的。
在神经网络结构中,可以作为全连接层和ReLU层的主要函数。
如何理解径向基函数与神经网络?
一些径向函数代表性的用到近似给定的函数,这种近似可以被解释成一个简单的神经网络。
径向基函数在支持向量机中也被用做核函数。
常见的径向基函数有:
高斯函数,二次函数,逆二次函数等。
应用
构造神经网络的基本方法为假设某种过程是属于某种函数空间的函数,然后连接成神经网格,运行一段时间该网络的电势趋于最小达到某种动态的平衡,从而可以求出该函数,而选择径向基函数空间是一个比较简单的容易用神经网络实现的方法。
二、RBF神经网络的基本思想(从函数到函数的映射)
1.用RBF作为隐单元的“基”构成隐含层空间,将输入矢量直接(不通过权映射)映射到隐空间。
2.当RBF的中心点确定后,映射关系也就确定。
(中心点通常通过K-MEANS聚类获得)
3.隐含层空间到输出空间的映射是线性的。
(其中的权值通过最小二乘法获得)
4.将低维度映射到高维度,使得线性不可分转化为线性可分。
三、RBF神经网络模型
(一)RBF神经网络神经元结构
RBF是具有单隐层的三层前向网络。
第一层为输入层,由信号源节点组成。
第二层为隐藏层,隐藏层节点数视所描述问题的需要而定,隐藏层中神经元的变换函数即径向基函数是对中心点径向对称且衰减的非负线性函数,该函数是局部响应函数,具体的局部响应体现在其可见层到隐藏层的变换跟其它的网络不同。
以前的前向网络变换函数都是全局响应的函数。
第三层为输出层,是对输入模式做出的响应。
输入层仅仅起到传输信号作用,输入层和隐含层之间之间可以看做连接权值为1的连接,输出层与隐含层所完成的任务是不同的,因而他们的学习策略也不同。
输出层是对线性权进行调整,采用的是线性优化策略,因而学习速度较快;而隐含层是对激活函数(格林函数,高斯函数,一般取后者)的参数进行调整,采用的是非线性优化策略,因而学习速度较慢。
也就是说,RBF实际上是一个两层的神经网络。
隐层是使用RBF作为激活函数的神经元,输出层采用线性函数的神经元,做一个线性分类。
隐含层使用径向基函数对数据重新构建,利用 Φ(||X-Xp||)来代替原始的数据向量表示,一共有P个中心,所以获得的新数据有P个维度,此时再对数据进行分类。
输出层等于W Φ(||X-Xp||),W为需要求解的权重。
RBF神经元模型
说明:
1.输入层为向量,维度为m,样本个数为n,传输函数为线性函数。
2.隐藏层与输入层全连接,层内无连接,隐藏层神经元个数与样本个数相等,也就是n,传输函数为径向基函数。
输入的X1-Xm为离散点,我们要得到平滑函数,即通过基函数对样本点附近的点做插值。
通常我们将基函数设为高斯核函数。
RBF网络的优点:
① 它具有唯一最佳逼近的特性,且无局部极小问题存在。
② RBF神经网络具有较强的输入和输出映射功能,并且理论证明在前向网络中RBF网络是完成映射功能的最优网络。
③ 网络连接权值与输出呈线性关系。
④ 分类能力好。
⑤ 学习过程收敛速度快。
(二)高斯核函数
可以简述为:
高斯函数:
exp(-d^2/(2*sigma^2));
sigma:
平滑因子,又称为基函数的拓展函数或者宽度。
平滑因子控制高斯函数的平滑度。
当平滑因子较低时,高斯函数就会尖锐,也就是边缘点的权值会很小,导致过拟合。
距离d:
距离d就是向量离每一个隐含层中心的距离,通常隐含层的中心对应每个节点,所以每个距离就是节点矩阵自身相对自身每个点的距离。
距离表示着离节点越近,所受该节点的输出影响就越大。
四、基于高斯核的RBF神经网络拓扑结构
第一层输入层:
由信号源节点构成,仅起到数据信息的传递作用,对输入信息不做任何变换
第二层隐含层:
节点数视需要而定。
当隐含层神经元核函数(作用函数)是高斯函数时,对输入信息进行空间映射的变换。
第三层输出层,对输入模式做出响应。
输出层神经元的作用函数为线性函数,对隐含层神经元输出的信息进行线性加权后输出,作为整个神经网络的输出结果。
径向基网络传递函数是以输入向量与阈值向量之间的距离||X-Cj||作为自变量的。
其中||X-Cj||是通过输入向量和加权矩阵C的行向量的乘积得到的。
径向基神经网络传递函数采用Gaussian函数:
当输入自变量为0时,传递函数取得最大值1,。
随着权值和输入向量间的距离不断减小,网络输出是递增的。
也就是说,径向基函数对输入信号在局部产生响应。
函数的输入信号X靠近函数的中央范围时,隐含层节点将产生较大的输出。
由此可以看出这种网络具有局部逼近能力。
当输入向量加到网络输入端时,径向基层每个神经元都会输出一个值,代表输入向量与神经元权值向量之间的接近程度。
如果输入向量关于权值向量相差很多,则径向基层输出接近于0,;如果输入向量与权值向量很接近,则径向基层的输出接近于1,经过第二层(隐含层)的线性神经元,输出值就靠近第二层权值。
在这个过程中,如果只有一个径向基神经元的输出为1,而其他神经元输出均为0或者接近0,那么线性神经元的输出就相当于输出为1的神经元对应的第二层(隐含层)权值的值。
五、RBF网络的学习算法
(一)算法需要求解的参数
0.确定输入向量
1.径向基函数的中心(隐含层中心点)
初始化隐含层各神经元的中心参数
不同隐含层神经元的中心应有不同的取值,并且与中心的对应宽度能够调节,使得不同的输入信息特征能被不同的隐含层神经元最大的反映出来。
在实际应用中,一个输入信息总是包含在一定的取值范围内。
不失一般性,将隐含层各神经元的中心分量的初值,按从小到大等间距变化,使较弱的输入信息在较小的中心附近产生较强的响应。
间距的大小可由隐藏层神经元的个数来调节。
好处是能够通过试凑的方法找到较为合理的隐含层神经元数,并使中心的初始化尽量合理,不同的输入特征更为明显地在不同的中心处反映出来,体现高斯核的特点。
中心的选取主要有三个方法
(1) 固定中心法
(2)自组织选取中心法
(3)有监督选取中心法
常用K-means聚类方法求取基函数中心
原理:
算法首先随机选择K个对象,每个对象初始地代表了一族的平均值或中心。
对剩余的每个对象根据其余各个族中心的距离,将它赋给最近的族,然后重新计算每个族的平均值。
这个过程不断重复,知道准则函数收敛。
K-means算法过程图
2.方差(sigma)
上文已介绍。
3.初始化隐含层至输出层的连接权值
(1)
其中p是隐藏层单元数,q是输出层单元数。
参考中心初始化的方法给出隐藏层到输出层的权值初始化方法:
其中mink是训练集中第k个输出神经元中所有期望输出的最小值;maxk是训练集中第k个输出神经元中所有期望输出的最大值。
(2)通过最小二乘法求得
下面从MATLAB实例中给出最小二乘法求权值的运用。
%给出变量
%实际数据
data=-9:
1:
8;
%测试数据
x=-9:
.2:
8;
%目标输出
label=[129,-32,-118,-138,-125,-97,-55,-23,-4,2,1,-31,-72,-121,-142,-174,-155,-77];
%sigma值
spread=2;
plot(data,label,'o');
%拟合这条曲线的权值
dis=dist(data',data);
gdis=exp(-dis.^2/spread);%gauss
G=[gdis,ones(length(data(1,:
)),1)];%广义rbf网络(加入一个恒为1的隐含层节点)
w=G\label';%最小二乘的矩阵求解
%测试所拟合的权值
chdis=dist(x',data);
chgdis=exp(-chdis.^2/spread);
chG=[chgdis,ones(length(x(1,:
)),1)];
chy=chG*w;
plot(x,chy);
基于以上:
可以得出RBF神经网络中心参数的初始值为:
(p为隐含层神经元总个数,j=1,2,...,p)mini是训练集中第i个特征所有输入信息的最小值,maxi为训练集中第i个特征所有输入信息的最大值。
4.初始化宽度向量
宽度向量影响着神经元对输入信息的作用范围:
宽度越小,相应隐含层神经元作用函数的形状越窄,那么处于其他神经元中心附近的信息在该神经元出的响应就越小。
计算方法:
df为宽度调节系数,取值小于1,作用是使每个隐含层神经元更容易实现对局部信息的感受能力,有利于提高RBF神经网络的局部响应能力。
(二)计算隐含层第j个神经元的输出值zj
Cj是隐含层第j个神经元的中心向量,由隐含层第j个神经元对应于输入层所有神经元的中心分量构成,
Dj为隐含层第j个神经元的宽度向量,与Cj相对应,
Dj越大,隐含层对输入向量的影响范围就越大,且神经元间的平滑度也比较好;||.||为欧式范数。
(三)计算输出层神经元的输出
其中:
为输出层第k个神经元与隐含层第j个神经元间的调节权重。
(四)权重参数的迭代计算
RBF神经网络权重参数的训练方法在这里取为梯度下降法。
中心、宽度和调节权重参数均通过学习来自适应调节到最佳值,迭代计算如下:
为第k个输出神经元与第j个隐含层神经元之间在第t次迭代计算时的调节权重。
为第j个隐含层神经元对于第i个输入神经元在第t次迭代计算时的中心分量;
为与中心
对应的宽度
η为学习因子
E为RBF神经网络评价函数:
其中,Olk为第k个输出神经元在第l个输入样本时的期望输出值;ylk为第k个输出神经元在第l个输入样本时的网络输出值。
综上所述,给出RBF神经网络的学习算法:
①按
(一)确定参数的五个步骤对神经网络参数进行初始化,并给定η和α的取值及迭代终止精度ε的值。
②按下式计算网络输出的均方根误差RMS的值,若RMS≤ε,则训练结束,否则转到第③步
③按照(四)权重迭代计算,对调节权重,中心和宽度参数进行迭代计算。
④返回步骤②
六、RBF神经网络算法的MATLAB实现
通过matlab自带的函数做RBF网络学习
1. newrb() 新建一个径向基神经网络
2.newrbe()新建一个严格的径向基神经网络
3.newrnn()新建一个广义回归径向基神经网络
4.newpnn()新建一个概率径向神经网络
格式:
net=newrb(P,T,GOAL,SPREAD,MN,DF)
P:
输入向量
T:
目标向量
SPREAD:
径向基函数的分布密度,默认为1
MN:
神经元的最大数目
DF:
两次显示之间所添加的神经元数目
七、RBF神经网络学习算法的范例
(一)简例
建立一个径向基神经网络,对非线性函数y=sqrt(x)进行逼近,并作出网络的逼近误差曲线。
代码:
%输入从0开始变化到5,每次变化幅度为0.1
x=0:
0.1:
5;
y=sqrt(x);
%建立一个目标误差为0,径向基函数的分布密度为0.5
%隐含层神经元个数的最大值为20,每增加5个神经元显示一次结构
net=newrb(x,y,0,0.5,20,5)
t=sim(net,x)
%作出误差函数
plot(x,y-t,'*-')
(二)预测汽油辛烷值
源码:
一些重要函数:
1.MATLAB命令行窗口键入docnewrbe查看newrbe文档介绍:
2.关于RBF的介绍
3.MATLAB命令行窗口键入editnewrbe查看其主函数
4.参数spread
net=newrbe(P,T,spread)
只有一个参数spread需要调整
P
RxQmatrixofQR-elementinputvectors
T
SxQmatrixofQS-elementtargetclassvectors
spread
Spreadofradialbasisfunctions(default=1.0)
Thelargerthe spread is,thesmootherthefunctionapproximationwillbe.Toolargeaspreadcancausenumericalproblems.
也就是说,spread这个参数越大,b减小,在下图中可以看出,激活函数的输入变小。
若欧式距离相同,激活函数的输入变小,RBF图像越平滑,RBF的输出差距不大,则所有输入的作用都会被减弱。
八、参考资料
仅供学习
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RBF 神经网络 原理 详解 MATLAB 实现