本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
spread参数决定了RBF的宽度,它是RBF神经网络建模时的重要参数之一,会影响模型的泛化能力
本文讲解一种spread的计算公式,它的主要原理是根据隐节点个数与输入区域大小来确定spread
通过本文,可以了解一种适用范围广的spread设置公式,为rbf神经网络的spread参数设置提供参考
本节介绍一种RBF神经网络的spread参数公式,以及它的推导
理想状态下spread的设置思路
spread就是径向基中心到腰间位置的距离,如下:
在两个相邻径向基的腰部交叉时,合并得到的曲线可以相对较为平滑,如下
此时,spread是两个径向基中心距离的一半
因此,我们对spread的设置思路为:将spread设为两个相邻径向基中心距离的一半
在现实中,每两个相邻径向基的距离往往都是不一样的,
而由于所有径向基的spread是统一设定的,所以不管spread设为多少,都会有某一对径向基不满足上述要求
但这并不妨碍我们假设径向基的分布是理想的,因为这种理想情况下推导出的spread虽然不够严谨,但也极具参考意义
理想状态下spread的设置公式
RBF神经网络Spread设置公式
假设每个径向基在区域中均匀分布,要使相邻径向基腰部交叉,
则spread的取值公式如下(推导过程见下文):
其中
:径向基的个数
:变量个数
:第i个变量的输入范围长度
OLS求解法中spread的设置公式
在使用OLS求解法训练RBF神经网络(即matlab的newrb函数)时
径向基个数K是不确定的,它的最大值为样本个数
因此,在训练前需预估最终使用的径向基占比为,即
, 其中
则spread的设置公式如下:
,
其中
:样本的个数
:变量个数
:第i个变量的输入范围长度
:径向基使用占比,需自行设置
上述公式中的需要自行设置
如果比较保守,假定newrb使用了所有的径向基进行建模,那么
如果比较激进,假定newrb只使用了1个径向基进行建模,那么
按笔者一般的经验,可以将设为或
本节讲解RBF神经网络Spread设置公式的推导过程
spead设置公式-推导过程
方形区间下spread的取值
现假设输入的维度为n,并且每个输入维度的区间长度相等,如下
现将区域每个维度都等量划分为份,则整个区间就有个小区域,如下
现在有K个径向基,
如果要使每个小区域都有一个径向基负责,则 ,也即
而我们希望相邻径向基之间的中心距离为2*spread
实际上就是要求每个小区域的长度为2*spread,因此有:
由上可得
非方形区间下spread的取值
如果每个输入的区间长度不一样时,不妨记第i个输入的区间长度为
则整个输入空间大小为,换算成方形空间则有
即换算后的方形空间每维的长度为:
利用方形空间的结果,从而有:
编后语
由于目前找到的一些关于spread设置公式都是针对"K-means求解RBF中心"而设定的
但这些公式只适用于"K-means求解RBF中心",而不适用于newrbe和newrb,
因为后者的径向基数量相对前者要多很多,以致于公式无法计算
为了在newrb中也有可参考的公式,笔者因此设计出文中的方法先作为参考性使用
如果读者发现有什么好的spread设置公式,不妨推荐给笔者
好了,以上就是一种适用于OLS求解法的RB神经网络关于spread的设置公式了~
End