RBF网络原理
RBF网络,即径向基神经网络,也是前馈型网络的一种。它的设计思想和BP网络完全不一样。
Cover定理:将复杂的模式分类问题非线性的投射到高维空间将比投射到低维空间更可能是线性可分的。也就是说这个问题在低维空间不一定是线性可分的,但如果把它映射到高纬度的空间去,在那里就可能是线性可分的。这就是RBF网络的原理。
RBF将问题转换为线性可分之后便没有了BP网络的局部极小值问题。但是RBF需要比BP网络更多的隐含层神经元。
RBF网络是一个三层的网络,出了输入输出层之外仅有一个隐层。隐层中的转换函数是局部响应的高斯函数,而其他前向型网络,转换函数一般都是全局响应函数。由于这样的不同,要实现同样的功能,RBF需要更多的神经元,这就是rbf网络不能取代标准前向型网络的原因。但是RBF的训练时间更短。它对函数的逼近是最优的,可以以任意精度逼近任意连续函数。隐层中的神经元越多,逼近越精确
RBF网络学习过程
在RBF网络之前训练,需要给出输入向量X和目标向量T,训练的目的是要求得第一层和第二层之间的权值W1、阀值B1,和第二层与第三层之间的权值W2、阀值B2。
整个网络的训练分为两步,第一部是无监督的学习,求W1、B1。第二步是有监督的学习求W2、B2。
隐藏层神经元个数
网络会从0个神经元开始训练,通过检查输出误差使网络自动增加神经元。每次循环使用,重复过程直到误差达到要求。因此RBF网络具有结构自适应确定,输出与初始权值无关的特征。(BP网络就不这样)
广义回归神经网络GRNN
径向基神经元和线性神经元可以建立广义回归神经网络,它是径RBF网络的一种变化形式,经常用于函数逼近。在某些方面比RBF网络更具优势。
概率神经网络PNN
径向基神经元和竞争神经元还可以组成概率神经网络。PNN也是RBF的一种变化形式,结构简单训练快捷,特别适合于模式分类问题的解决。
扩展速度spread的确定
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()
创建一个广义回归神经网络,通常用于函数逼近。
参考书目:
《MATLAB神经网络30个案例分析》
《MATLAB神经网络应用设计》
《神经网络理论与MATLAB r2007实现》
《精通matlab神经网络》