径向基神经网络RBF

RBF网络原理

RBF网络,即径向基神经网络,也是前馈型网络的一种。它的设计思想和BP网络完全不一样。

 

Cover定理:将复杂的模式分类问题非线性的投射到高维空间将比投射到低维空间更可能是线性可分的。也就是说这个问题在低维空间不一定是线性可分的,但如果把它映射到高纬度的空间去,在那里就可能是线性可分的。这就是RBF网络的原理。

 

RBF将问题转换为线性可分之后便没有了BP网络的局部极小值问题。但是RBF需要比BP网络更多的隐含层神经元。

 

RBF网络是一个三层的网络,出了输入输出层之外仅有一个隐层。隐层中的转换函数是局部响应的高斯函数,而其他前向型网络,转换函数一般都是全局响应函数。由于这样的不同,要实现同样的功能,RBF需要更多的神经元,这就是rbf网络不能取代标准前向型网络的原因。但是RBF的训练时间更短。它对函数的逼近是最优的,可以以任意精度逼近任意连续函数。隐层中的神经元越多,逼近越精确(极限学习机和它是多么的相似呀)

 

RBF网络学习过程


隐藏层神经元个数

网络会从0个神经元开始训练,通过检查输出误差使网络自动增加神经元。每次循环使用,重复过程直到误差达到要求。因此RBF网络具有结构自适应确定,输出与初始权值无关的特征。(BP网络就不这样)

 

广义回归神经网络GRNN

径向基神经元和线性神经元可以建立广义回归神经网络,它是径RBF网络的一种变化形式,经常用于函数逼近。在某些方面比RBF网络更具优势。

 

概率神经网络PNN

径向基神经元和竞争神经元还可以组成概率神经网络。PNN也是RBF的一种变化形式,结构简单训练快捷,特别适合于模式分类问题的解决。

 

扩展速度spread的确定,(方差sigma)

RBF网络有个参数叫扩展速度spread,在MATLAB中创建RBF网络时是要事先设定好的,其默认值为1。

spread越大,函数拟合越平滑,但是逼近误差会变大,需要的隐藏神经元也越多,计算也越大。

spread越小,函数的逼近会越精确,但是逼近过程会不平滑,网络的性能差,会出现过适应现象。

所以具体操作的时候要对不同的spread值进行尝试,spread即要大到使得神经元产生响应的输入范围能够覆盖足够大的区域,同时也不能太大,而使各个神经元都具有重叠的输入向量响应区域。(隐层输出值相当于是基向量,尽量不要让它重叠,否则浪费资源)

 

MATLAB的实现

newrb()

设计一个径向基网络。newrb()创建网络的过程是一个不断尝试隐藏层神经元个数的过程,在创建过程中,会根据误差不断向隐藏层添加神经元,直到误差满足要求为止。

 

newrbe()

和newrb()功能差不多,用于创建一个精确地神经网络(隐层节点和输入样本个数相等),能够基于设计向量快速的无误差的设计一个径向基网络。该函数在创建RBF网络的时候,自动选择隐含层数目,隐藏层的数目等于样本输入向量的数目,使得误差为0。在样本输入向量非常多的情况下,用rbe就不大合适。

 

Newpnn()

创建一个概率神经网络,是一个适用于分类的神经网络。spread的默认参数是0.1,spread对分类性能的影响非常大。当spread接近于0时,对应的PNN就成为了一个最领域分类器,当spread接近于1时,对应的PNN就要考虑附近的设计向量。(这句话我也看不懂)

 

Newgrnn()

创建一个广义回归神经网络,通常用于函数逼近。





这个幻灯片讲的非常好http://wenku.baidu.com/view/c61384dda58da0116c174946.html

还有这个:http://wenku.baidu.com/link?url=MSnKYFYYKma35ByTi6jOeP5rZ2-YLEEjMAA2e1D3S1YrcVcg_sU9BDWopLWGjrf3IZ5EI5tdGks7AVNi6MDT_uZKLBhwCebhB4-1_S_bb73

和上一篇的elm对比会发现二者思想非常接近,elm,bp和rbf三者的学习方法可谓是融合在了一起

径向神经网络RBF)是一种常用的神经网络,常用于回归和分类任务。其特点是具有自适应的非线性映射能力,能够拟合各种复杂的非线性函数,并且具有较好的泛化能力。 在MATLAB中,可以通过以下代码进行RBF回归预测: 1. 加载数据 首先需要加载需要进行回归预测的数据,可以使用MATLAB中的load函数,例如: data = load('data.txt'); 其中,data.txt是存储数据的文件名,需要保证数据的格式正确。 2. 分离数据 将数据分成训练集和测试集,可以使用MATLAB中的crossvalind函数,例如: cv = crossvalind('Kfold', size(data, 1), 10); trainData = data(cv ~= 1, :); testData = data(cv == 1, :); 其中,将数据分成了10份,cv~=1表示排除第一份,cv==1表示第一份。 3. 训练模型 使用MATLAB中的newrb函数进行RBF网络的训练,例如: net = newrb(trainData(:, 1:end-1)', trainData(:, end)', 0, 1, 10, 1); 其中,trainData(:, 1:end-1)表示取数据的前n-1列作为输入,trainData(:, end)表示取数据的最后一列作为输出。0, 1, 10, 1分别表示误差目标、学习速率、隐藏层神经元个数和正则化参数。 4. 进行预测 使用MATLAB中的simulate函数进行预测,例如: predict = sim(net, testData(:, 1:end-1)'); 其中,testData(:, 1:end-1)表示取数据的前n-1列作为输入。 5. 评价模型 使用MATLAB中的regperf函数对模型进行评价,例如: MSE = regperf(predict', testData(:, end)) 其中,MSE表示均方误差。 以上就是使用MATLAB实现径向神经网络RBF回归预测的全部代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值