径向基函数网络(Radial Basis Function Network):就是将基假设函数进行线性聚合。
径向基函数网络假设函数(RBF Network Hypothesis)
先回顾一下高斯支持向量机(Gaussian SVM):
gsvm(x)=sign(SV∑αnynexp(−γ∥x−xn∥2)+b)
其实际上是找出系数 αn 将以 xn 为中心的高斯函数进行线性结合。
Gaussian kernel 又叫 Radial Basis Function (RBF) kernel,其中 Radial 指的是这里之关系 x 与中心 xn 之间的距离(类似于一种放射线长度求解)。
那么写出高斯支持向量机中的径向基假设函数:
gn(x)=ynexp(−γ∥x−xn∥2)
那么高斯支持向量机可以改写为:
gsvm(x)=sign(SV∑αngn(x)+b)
可以看出被选择的径向基假设函数的线性结合(linear aggregation of selected radial hypotheses)。
RBF Network 的网络结构示意图如下:

实际上 RBFNet 是 NNet 的一个分支,可见输出层虽然使用的是投票,但是这也是一种线性组合所以与神经网络是一样的。但是隐含层是不同的,在神经网络中使用的是内积加 tanh 输出,而在 RBFNet 中使用的是距离计算加高斯函数。
那么可以写出 RBFNet 的输出假设函数:
h(x)= Output (m=1∑MβmRBF(x,μm)+b)
其中 μm 是中心点,βm 是投票系数。
对比与高斯支持向量机:
- RBF(径向基函数)选择的是高斯函数。
- Output(输出)选择 sign 做为二分类输出。
- M 则是支持向量的个数(#SV)。
-
μm 则是支持向量 xm。
-
βm 则是通过 SVM Dual 问题求解 αm 与 ym 的乘积。
不失普遍性的来说:如果要学习径向基函数网络的话,需要选择四个部分:径向基函数 RBF ,输出层假设函数 Output ,中心点的求取 μm ,投票的系数 βm。
实际上核技巧实际上就是根据在 Z 空间上的内积求取相似性,比如多项式核:
Poly(x,x′)=(1+xTx′)2
而RBF则是直接通过在 X 空间上的距离求取相似性,一般认为距离越近相似性越大,也就是说距离与相似性单调相关。比如下面这个截断相似性函数:
Truncated (x,x′)=[∥x−x′∥≤1](1−∥x−x′∥)2
而高斯函数则处于他们的交集。
Gaussian (x,x′)=exp(−γ∥x−x′∥2)
相似性是很好的一种特征转换方法。在RBF中则是将中心距离相似性作为特征转换的。其他的相似性函数比如神经元函数或者DNA序列相似性函数:
Neuron (x,x′)=tanh(γxTx′+1) DNASim (x,x′)= EditDistance (x,x′)
RBF网络的训练/学习(RBF Network Learning)
完全RBF网络(Full RBF Network)
如果不考虑 bais ,那么可以写为:
h(x)=Output(m=1∑MβmRBF(x,μm))
如果令 M=N 并且每一个 μm=xm 那么这个RBF网络便是完全RBF网络(full RBF Network)。这么做的物理意义是 xm 将通过系数 βm 来影响每一个与之相似的 x。
那么举例来说,如果使用一个 uniform influence 即 βm=1⋅ym,也就是说大家票数一致。
gunitorm (x)=sign(m=1∑Nymexp(−γ∥x−xm∥2))
所以说完全RBF网络是一种偷懒的做法,省去了中心向量 μm 的求取。
最邻近算法(Nearest Neighbor)
由于高斯函数衰减很快,那么会导致离中心最近的值会获得很大的权重,支配(dominates)投票过程,也就是说具有 “专断权”。所以这个过程更类似于选择一个最大值(最近向量),而不是聚合过程。即:
gnbor (x)=ym such that x closest to xm
所以叫做最邻近模型(nearest neighbor model)。
常用的是 K 邻近模型,根矩 Top k 最邻近的样本进行均值投票(uniformly aggregate k neighbor),虽然很懒(lazy)但是很直观。
无正则化用于插值(Interpolation)
那么如果用于 Regression,那么以平方误差作为误差测量函数,最后的假设函数可以写为:
h(x)=(m=1∑NβmRBF(x,xm))
可以看出这就是在通过 RBF 映射到的空间上训练线性回归模型
那映射后的数据表示为:
zn=[RBF(xn,x1),RBF(xn,x2),…,RBF(xn,xN)]
矩阵 Z 由 n 个 zn 构成,所以矩阵 Z 为 N(example)×N(centers) 的对称方阵(symmetric square matrix),根据线性回归可以写出 β 的最优解:
β=(ZTZ)−1ZTy, if ZTZ invertible
那么如果全部的 xn 的都是不同的,那么 Z (with Gaussian RBF)便是可逆的(invertible)。
又因为 Z 是对称方阵,也就是说 ZT=Z。那么可以化简为:
β=(ZZ)−1Zy=Z−1y
正则化(Regularization)
那么 x1 的 RBF的网络输出为:
gRBF(x1)=βTz1=yTZ−1(first column of Z)=yT[10…0]T=y1
也就是说 gRBF(xn)=yn, i.e. Ein(gRBF)=0,那么这样的结果用于精确插值的函数估计(exact interpolation for function approximation)是非常好的,但是在机器学习中便会出现过拟合问题。所以可以加入 Regularization,当然前面学习过岭回归(ridge regression),可以将 regularized full RBFNet β 的求解改写为:
β=(ZTZ+λI)−1ZTy
在 kernel ridge regression 中,有一个 K 矩阵:
Z=[Gaussian (xn,xm)]= Gaussian kernel matrix K
在 kernel ridge regression 中,β 的求解为:
β=(K+λI)−1y
两者很相近,但是由于正则化的对象不同所以求解公式也不同,在核岭回归中的针对的正则化对象为无限多维的转换。而 RBF 中针对的是有限多维的 N 维的转换。
K均值算法(k-Means Algorithm)
反观 SVM,实际上并没有使用到全部的 xn ,而只是用到了支持向量,即 M≪N。
gsvm(x)=sign(SV∑αmymexp(−γ∥x−xm∥2)+b)
也就是通过限制中心的个数和投票的权重来达到正则化的效果(regularization by constraining number of centers and voting weights)。
现在的思路是找出一些“中心”代表(prototypes)。
聚类问题(Clustering Problem)
找代表的过程实际上是一种聚类问题。什么意思呢?
if x1≈x2⟹ no need both RBF(x,x1)&RBF(x,x2) in RBFNet ⟹ cluster x1 and x2 by one prototype μ≈x1≈x2
也就是说 RBF(x,x1) 可以很大程度上代表(表示) RBF(x,x2)。
那么这种通过代表(代理人)进行聚类(clustering with prototype)的过程为:
- 将 {xn} 分为M个互斥(不想交)的集合(disjoint sets):S1,S2,⋯,SM。
- 为每一个 Sm 选择最佳的 μm≈x1m≈⋯≈xKm ,其中 x1m⋯xKm∈Sm。
使用平方测量的聚类误差
Ein(S1,⋯,SM;μ1,⋯,μM)=N1n=1∑Nm=1∑M[xn∈Sm]∥xn−μm∥2
所以现在的聚类问题的优化目标为:
{S1,⋯,SM:μ1,⋯,μM}minEin(S1,⋯,SM;μ1,⋯,μM)
优化(Optimization)
在优化过程中涉及到两个部分的最佳化问题:如何分群以及如何寻找中心点。
这样的组合和数值( combinatorial-numerical optimization)两个问题结合优化的过程是比较难以优化的:
那么如果只对一个问题寻优,那么问题就会简单很多。
分区寻优(Partition Optimization)
假设 μ1,μ2,…,μk 已经固定,那么一个又一个地通过下面这个公式选择最优的组群:
optimal chosen subset Sm= the one with minimum ∥xn−μm∥2
也就是对于每一个 xn 都在 μ1,μ2,…,μk 中选择最近的 μm ,并以此为依据进行最优分区(optimally partitioned)。
代表寻优(Prototype Optimization)
假设 S1,⋯,SM 已经固定,那么这个优化问题便成为了一个关于每一个 μm 的无约束最优化问题:
∇μmEin=−2n=1∑N[xn∈Sm][xn−μm)=−2((xn∈Sm∑xn)−∣Sm∣μm)
可以看出来最优的代表值便是全部样本的平均值:
optimal prototype μm= average of xn within Sm
对于每个 S1,S2,…,Sk 都求均值作为最佳 μm 的计算方法(optimally computed)。
具体实现
(1) initialize μ1,μ2,…,μk: say, as k randomly chosen xn (2) alternating optimization of Ein : repeatedly (1) Optimize S1,S2,…,Sk: each xn optimally partitioned using its closest μi (2) Optimize μ1,μ2,…,μk : each μn optimally computed as the consensus within Sm until converge
收敛(converge ):S1,S2,…,Sk 不再改变。因为上述的交替迭代过程是使得 Ein 不断变小的过程,同时Ein 的最小值为 0,所以必然收敛。
由于交替寻优(alternating minimization)的特性,K均值算法成为了最流行的距离算法。
正则化RBF网络
使用K均值算法,找出K个具有代表性的 μk,来构造 N(examples)×K(centers) 的 Z 矩阵。
那么 RBF Network Using k-Means 的实现过程为:
(1) run k -Means with k=M to get {μm} (2) construct transform Φ(x) from RBF (say, Gaussian) at μmΦ(x)=[RBF(x,μ1),RBF(x,μ2),…,RBF(x,μM)] (3) run linear model on {(Φ(xn),yn)} to get β (4) return gRBFNET (x)= LinearHypothesis (β,Φ(x))
这实际上就是使用无监督学习方法来辅助特征转换(using unsupervised learning (k-Means) to assist feature transform)。需要的参数有两个:一个是代表的个数 M,另一个是RBF的选择(比如中心为 γ 的高斯函数)。
k-Means和RBF网络的实际应用(k-Means and RBF Network in Action)
K-Means in Action
下面展示k-Means算法的实际优化过程:

其中第一行是分区优化,第二行是代表(中心点)寻优。可看出合理的初始值和k可以获得不错的聚类效果。
RBF Network Using k-Means in Action

图中发黑的地方代表了高斯密度函数的分布形式。可以看出合理的中心点可以使得 RBF Network 获得比较好的效果。
Full RBF Network in Action
最左边是使用了正则化的RBF的分类效果。最右边是最近邻算法的分类效果。因为两者在一定程度上都用到了全部的数据,所以看起来有些过拟合。所以在实际运用中完全 RBF 网络很少使用。
