通俗易懂讲解RBF网络

简介: 通俗易懂讲解RBF网络


1  RBF Network Hypothesis


之前我们介绍过,在SVM中引入Gaussian Kernel就能在无限多维的特征转换中得到一条“粗壮”的分界线(或者高维分界平面、分界超平面)。从结果来看,Gaussian SVM其实就是将一些Gaussian函数进行线性组合,而Gaussian函数的中心就位于Support Vectors上,最终得到预测模型gsvm(x)

image.png

Gaussian kernel的另一种叫法是Radial Basis Function(RBF) kernel,即径向基函数。这个名字从何而来?首先,radial表示Gaussian函数计算结果只跟新的点x与中心点xn的距离有关,与其它无关。basis function就是指Gaussian函数,最终的矩gsvm(x)就是由这些basis function线性组合而成。


从另外一个角度来看Gaussian SVM。首先,构造一个函数gn(x)

image.png

上式中,指数项表示新的点x与xn之间的距离大小。距离越近,即权重越大,相当于对yn投的票数更多;而距离越远,权重越小,相当于对yn投的票数更少。其物理意义是新的点与xn的距离远近决定了gn(x)yn的接近程度。如果距离越近,则yngn(x)的权重影响越大;如果距离越远,则yngn(x)的权重影响越小。那么整体来说,gsvm(x)就由所有的SV组成的gn(x)线性组合而成,不同gn(x)对应的系数是αn,最后由sign函数做最后的选择。这个过程很类型我们之前介绍的aggregation中将所有较好的hypothesis线性组合,不同的gn(x)有不同的权重αn。我们把gn(x)叫做radial hypotheses,Gaussian SVM就是将所有SV对应的radial hypotheses进行线性组合(linear aggregation)。

image.png

那么,Radial Basis Function(RBF) Network其实就是上面Gaussian SVM概念的延伸,目的就是找到所有radial hypotheses的linear aggregation,得到更好的网络模型。


之所以叫作RBF Network是因为它的模型结构类似于我们之前介绍的Neural Network。

image.png

Neural Network与RBF Network在输出层基本是类似的,都是上一层hypotheses的线性组合(linear aggregation)。但是对于隐藏层的各个神经元来说,Neural Network是使用内积(inner-product)加上tanh()函数的方法,而RBF Network是使用距离(distance)加上Gaussian函数的方法。总的来说,RBF Network是Neural Network的一个分支。

image.png

至此,RBF Network Hypothesis以及网络结构可以写成如下形式:

image.png

上式中,μm表示每个中心点的位置,隐藏层每个神经元对应一个中心点;βm表示每个RBF的权重,即投票所占比重。


对应到Gaussian SVM上,上式中的RBF就是Gaussian函数。由于是分类问题,上式中的Output就是sign函数。其中,RBF的个数M就等于支持向量的个数SV,μm就代表每个SV的坐标xm,而βm就是在Dual SVM中推导得到的αn*ym值。那我们学习的目标就是根据已知的RBF和Output,来决定最好的中心点位置μm和权重系数βm

image.png

在之前介绍SVM的时候,我们就讲过Mercer定理:一个矩阵是Kernel的充分必要条件是它是对称的且是半正定的,条件比较苛刻。除了Gaussian kernel还有Polynomial kernel等等。Kernel实际上描述了两个向量之间的相似性,通过转换到z空间计算内积的方式,来表征二者之间的相似性。而RBF实际上是直接使用x空间的距离来描述了一种相似性,距离越近,相似性越高。因此,kernel和RBF可以看成是两种衡量相似性(similarity)的方式。本文介绍的Gaussian RBF即为二者的交集。

image.png

除了kernel和RBF之外,还有其它衡量相似性的函数。例如神经网络中的神经元就是衡量输入和权重之间的相似性。


经过以上分析,我们知道了RBF Network中distance similarity是一个很好的定义特征转换的方法。除此之外,我们还可以使用其它相似性函数来表征特征转换,从而得到更好的机器学习模型。


2   RBF Network Learning


我们已经介绍了RBF Network的Hypothesis可表示为:

image.png

其中μm表示中心点的位置。μm的个数M是人为决定的,如果将每个样本点xm都作为一个中心点,即M=N,则我们把这种结构称为full RBF Network。也就是说,对于full RBF Network,每个样本点都对最终的预测都有影响(uniform influence),影响的程度由距离函数和权重βm决定。如果每个样本点的影响力都是相同的,设为1,βm=1⋅ym,那么相当于只根据距离的远近进行投票。最终将x与所有样本点的RBF距离线性组合,经过sign函数后,得到最终的预测分类结果。这实际上就是aggregation的过程,考虑并计入所有样本点的影响力,最后将x与所有样本点的distance similarity进行线性组合。

image.png

image.png

image.png

image.png

下一部分,我们将讨论如何选取M个中心点作为好的代表。


3  k-Means Algorithm


之所以要选择代表,是因为如果某些样本点很接近,那么就可以用一个中心点来代表它们。这就是聚类(cluster)的思想,从所有N个样本点中选择少数几个代表作为中心点。

image.png

聚类(clustering)问题是一种典型的非监督式学习(unsupervised learning)。它的优化问题有两个变量需要确定:一个是分类的分群值Sm,每一类可表示为S1,S2,⋯,SM;另外一个是每一类对应的中心点μ1,μ2,⋯,μM。那么对于该聚类问题的优化,其error function可使用squared error measure来衡量。

image.png

那么,我们的目标就是通过选择最合适的S1,S2,⋯,SMμ1,μ2,⋯,μM,使得Ein最小化。对应的公式可表示为:

image.png

从这个最小化公式,我们能够发现这是一个组合最佳化的问题,既要优化分群值Sm,又要求解每一类的中心点um。所以,这个最小化问题是比较复杂、难优化的。通常的办法是对Sμ分别进行最优化求解。


首先,如果μ1,μ2,⋯,μM是固定的,目标就是只要对所有的xn进行分群归类。这个求解过程很简单,因为每个样本点只能属于一个群S,不能同时属于两个或多个群。所以,只要根据距离公式,计算选择离xn最近的中心点μ即可。

image.png

然后,如果S1,S2,⋯,SM是固定的,目标就是只要找出每个类的中心点μ。显然,根据上式中的error function,所有的xn分群是已知的,那么该最小化问题就是一个典型的数值最优化问题。对于每个类群Sm,利用梯度下降算法,即可得到μm的解。

image.png

如上图所示,中心点μm就等于所有属于类群Sm的平均位置处。


经过以上的推导,我们得到了一个非常有名的一种unsupervised learning算法,叫做k-Means Algorithm。这里的k就是代表上面的M,表示类群的个数。


k-Means Algorithm的流程是这样的:首先,随机选择k个中心点μ1,μ2,⋯,μk;然后,再由确定的中心点得到不同的类群S1,S2,⋯,Sk;接着,再由确定的类群计算出新的不同的k个中心点;继续循环迭代计算,交互地对μS值进行最优化计算,不断更新μS值,直到程序收敛,实现Ein最小化。具体算法流程图如下所示:

image.png

有一个问题是,k-Means Algorithm的循环迭代一定会停止吗?或者说一定能得到最优解吗?答案是肯定的。因为每次迭代更新,μS值都会比上一次的值更接近最优解,也就是说Ein是不断减小的。而Ein的下界是0,所以,Ein最终会等于0,μS最终能得到最优解。


k-Means Algorithm已经介绍完毕。接下来,我们把k-Means Algorithm应用到RBF Network中去。首先,使用k-Means,得到原始样本的k个中心点。原始样本到k个中心点组成了RBF特征转换Φ(x)。然后,根据上面介绍过的线性模型,由最优化公式解计算得到权重β值。最后,将所有的Φ(x)β线性组合,即得到模型的表达式。具体的算法流程如下所示:

image.png

值得一提的是,这里我们使用了unsupervised learning(k-Means)与我们上节课介绍的autoencoder类似,同样都是特征转换(feature transform)的方法。


在最优化求解过程中,参数有k-Means类群个数M、Gaussian函数参数λ等。我们可以采用validation的方法来选取最佳的参数值。

image.png


4  k-means and RBF Network in Action


下面这部分,我们将举几个例子,看一下k-Means Algorithm是如何处理分类问题的。


第一个例子,平面上有4个类群,k=4。首先,我们随机选择4个中心点,如下图中四种颜色的方块所示:


image.png

image.png

image.png

image.png

image.png

image.png

image.png

从上图我们可以看到,经过六次迭代计算后,聚类的效果已经相当不错了。从另外一个角度来说,k值的选择很重要,下面我们来看看不同的k值对应什么样的分类效果。

image.png

如上图所示,初始时,我们分别设定k为2,4,7,随机选择中心点位置。在经过多次迭代后,得到的聚类结果如下:

image.png

通过上面这个例子可以得出,不同的k值会得到不同的聚类效果。还有一点值得注意的是,初始中心点位置也可能会影响最终的聚类。例如上图中k=7的例子,初始值选取的右边三个中心点比较靠近,最后得到的右边三个聚类中心点位置也跟初始位置比较相近。所以,k值大小和初始中心点位置都会影响聚类效果。


接下来,我们把k-Means应用到RBF Network中,同样分别设定k为2,4,7,不同模型得到的分类效果如下:

image.png

很明显,k=2时,分类效果不是太好;k=4时,分类效果好一些;而k=7时,分类效果更好,能够更细致地将样本准确分类。这说明了k-Means中k值设置得是否合理,对RBF Network的分类效果起到重要的作用。


再来看一个例子,如果使用full RBF Network进行分类,即k=N,如下图左边所示,设置正则化因子λ=0.001。下图右边表示只考虑full RBF Network中的nearest neighbor。下图中间表示的是k=4的RBF Network的分类效果。

image.png

从上图的比较中,我们可以发现full RBF Network得到的分类线比较弯曲复杂。由于full RBF Network的计算量比较大,所以一般情况下,实际应用得不太多。


5     Summary


本文主要介绍了Radial Basis Function Network。RBF Network Hypothesis就是计算样本之间distance similarity的Gaussian函数,这类原型替代了神经网络中的神经元。RBF Network的训练学习过程,其实就是对所有的原型Hypotheses进行linear aggregation。然后,我们介绍了一个确定k个中心点的unsupervised learning算法,叫做k-Means Algorithm。这是一种典型的聚类算法,实现对原始样本数据的聚类分群。接着,将k-Means Algorithm应用到RBF Network中,选择合适数量的中心点,得到更好的分类模型。最后,我们列举了几个在实际中使用k-Means和RBF Network的例子,结果显示不同的类群k值对分类的效果影响很大。


相关文章
|
6月前
|
机器学习/深度学习 算法
基于RBF神经网络的自适应控制器simulink建模与仿真
使用MATLAB2022a,开发了一个基于RBF神经网络的自适应控制器Simulink S函数,进行了控制仿真。核心程序展示了RBF网络的权重和参数调整。测试结果显示了控制效果。RBF网络是一种三层前馈网络,利用高斯函数处理非线性系统。自适应控制器通过在线调整参数应对系统变化。网络学习分为自组织和有导师两个阶段,通过误差信号调整权重,确保系统稳定性。
|
7月前
|
机器学习/深度学习 存储
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
|
7月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB 】RBF径向基神经网络回归预测
【MATLAB 】RBF径向基神经网络回归预测
276 0
|
机器学习/深度学习
RBF神经网络案例——客户流失率预测(二)
RBF神经网络案例——客户流失率预测
|
机器学习/深度学习
RBF神经网络案例——客户流失率预测(一)
RBF神经网络案例——客户流失率预测
122 0
|
机器学习/深度学习
基于BP神经网络、RBF神经网络以及PSO优化的RBF神经网络进行数据的预测(Matlab代码实现)
基于BP神经网络、RBF神经网络以及PSO优化的RBF神经网络进行数据的预测(Matlab代码实现)
基于BP神经网络、RBF神经网络以及PSO优化的RBF神经网络进行数据的预测(Matlab代码实现)
|
机器学习/深度学习
基于时空RBF神经网络的混沌时间序列预测(Matlab代码实现)
基于时空RBF神经网络的混沌时间序列预测(Matlab代码实现)
116 0
|
机器学习/深度学习 数据采集 算法
一种用于RBF神经网络的新型自适应内核研究(Matlab代码实现)
一种用于RBF神经网络的新型自适应内核研究(Matlab代码实现)
110 0
|
机器学习/深度学习 数据采集 数据建模
【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)
【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)
119 0
|
机器学习/深度学习 算法 数据挖掘
基于 K 均值聚类的径向基RBF神经网络优化(Matlab代码实现)
基于 K 均值聚类的径向基RBF神经网络优化(Matlab代码实现)
151 0