径向基函数网络
高斯核SVM,可以实现无限维特征空间的最大边界分类器,它的实现方式是利用αn实现以支持向量xn为中心高斯函数的线性组合。
高斯核通常也称为径向基函数(RBF,radial basis function)。radial表示函数值只依赖于x与“中心”xn之间的距离;basis function表示用来组合的系数αn,yn。
令gn(x)=ynexp(−γ‖x−xn‖2),它表示基于x与xn之间距离权重的加权投票(+1或−1的票)。高斯核SVM可以表示为 gSVM(x)=sign(∑SVαngn(x)+b), 它是径向基假设的线性融合。
径向基函数网络就是径向基假设的线性融合,它也是一种神经网络。

神经网络与径向基函数网络如上图所示:
- 隐藏层:神经网络采用“内积+tanh”,径向基函数网络采用“距离+高斯函数”;
- 输出层都是同样的线性融合模型。
径向基函数网络的假设为 h(x)=Output(M∑m=1βmRBF(x,μm)+b), 高斯函数只是一种径向基函数RBF,βm是投票权值,Output形式由不同的回归或分类问题确定。μm和βm(带符号)是两个关键参数。高斯核SVM是一种径向基函数网络:径向基函数RBF采用高斯函数;对二分类问题输出是±1;M=#SV;μm是支持向量xm;βm是从对偶SVM推导的αmym。
给定径向基函数RBF和输出,径向基函数网络需要学习的参数是μm和βm。
核和RBF是两种不同的相似度度量方法。核描述基于Z空间内积的相似性,需要满足Mercer条件。RBF通过X空间的距离度量相似性,这种相似性与距离是单调递减(monotonically non-increasing)关系。一般采用度量x和x′相似性的函数还可以是1 Neuron(x,x′)=tanh(γx⊤x′+1),DNASim(x,x′)=EditDistance(x,x′)。 神经网络的神经元也是在比较输入向量与权值向量之间的相似性。
RBF网络展示了通过度量到中心的距离也是一种很好的特征转换。 相似性是一种很好的特征转换方法,相似性不一定与距离有关,也不一定与核有关。
学习算法
当M=N和μm=xm时,称为完全RBF网络。它的物理含义是每个点xm对周围的数据x有权重βm的影响,假设对二分类问题均匀影响(uniform influence)周围的数据,βm=1⋅ym,那么 guniform(x)=sign(N∑m=1ymexp(−γ‖x−xm‖2)), 这就是每个数据通过相似度对新数据的投票融合。这和k最近邻算法思想很相似。离x最近的xm让exp(−γ‖x−xm‖2)取得最大值。高斯函数衰减很快,最大的投票很可能会左右投票结果,不需要让所有数据投票,只用离x最近数据投票,用选择法(selection)替代融合法(aggregation), gnbor=ym such that x closest to xm, 这就是最近邻算法。若让k个xm参与对x投票就是k最近邻算法。
如果不直接用ym作为βm投票,而更进一步考虑对βm进行优化,用完全RBF网络解决基于平方误差的回归问题, h(x)=M∑m=1βmRBF(x,xm)。 这是基于RBF特征转换的线性回归, zn=[RBF(xn,x1),RBF(xn,x2),…,RBF(xn,xN)], 最优解为β=(Z⊤Z)−1Z⊤y(若Z⊤Z可逆),Z是N×N的对称方阵,那么就有 β=Z−1y。 若每个xn都不一样,那么Z总可逆。对于数据x1, gRBF(x1)=β⊤z1=y⊤Z−1⋅(first column of Z)=y⊤[1,0,…,0]⊤=y1, 那么就有 gRBF(xn)=yn, 对于回归问题Ein(gRBF)=0。在函数逼近(function approximation)领域这叫完美内插(exact interpolation);对机器学习而言这是过拟合,需要正则化。
正则化
对正则化的完全RBF网络的脊回归可得 β=(Z⊤Z+λI)−1Z⊤y, 其中Z可以看作高斯核矩阵,K=Z,对比脊回归的核模型,二则只相差矩阵Z⊤,前者是有限N维转换的回归,后者是无限维转换的回归。
对于SVM核模型,只采用了支持向量作为参考进行距离度量。减少中心数量(也就减少了参与投票的权值),只使用部分代表点(prototype)作为中心,使M≪N,也是一种有效的正则化方法。
如何找出这些有效的代表点呢?
k均值聚类
若x1≈x2,不需要RBF(x,x1)和RBF(x,x2)都出现在RBF网络中,可以只用一个clusterμ≈x1≈x2替代两个点即可。
聚类是将数据{xn}分为不相交的集合(类)S1,S2,…,SM。当每个集合用μm作为代表时,若x1和x2都属于Sm,当且仅当μm≈x1≈x2。聚类的目标函数为 min{S1,…,SM;μ1,…,μM}Ein(S1,…,SM;μ1,…,μM)=1NN∑n=1M∑m=1[[xn∈Sm]]‖xn−μm‖2。 这是混合的组合数值优化问题,很难最优化,但是可以简化为分别交替最优化Sm和μm:
- 最优划分:固定μ1,…,μM;选择每个xn所属的唯一类别Sm,使‖xn−μm‖最小。
- 最优计算:固定S1,…,SM;对每个μm,由于 ∇μmEin=−2N∑n=1[[xn∈Sm]](xn−μm)=−2((∑xn∈Smxn)−|Sm|μm)=0, 可得最佳μm是属于Sm所有xn的均值。
以上就是k均值算法的关键步骤,k=M,重复以上2步直至收敛。通常随机选择k个xn作为μk的初始值。收敛是指S1,…,Sk不再改变。算法通过交替最小化使Ein减小,一定能收敛。
####基于k均值的RBF网络
- 利用k均值算法,k=M,得到{μm};
- 进行特征转换 Φ(x)=[RBF(x,μ1),RBF(x,μ2),…,RBF(x,μM)];
- 通过{(Φ(xn),yn)}上的线性模型得到参数β;
- 返回gRBFNET(x)=LinearHypothesis(β,Φ(x))。
上述算法采用非监督的k均值作为特征转换,如同自编码器。RBF网络需要确定的的参数是M和RBF函数,这些可通过验证方法确定。
虽然RBF网络和SVM的核模型与神经网络性能差不多,但在实际中并不常用。
实战技能

只要选择合适的k和恰当的初始化,k均值算法通常表现良好。k均值算法对参数敏感,选择不同的k和不同的初始化,结果差异大,如上图所示。对参数交替最优化不能保证得到全局最优。

上图是利用了k均值的RBF网络,蓝色和红色表示两类的标签,阴影渐变区域表示k均值聚类的结果,黑色线条展示分类结果。上图左完全没办法分出两类,输出都是同一类的结果。如果k均值的效果较好,RBF网络效果也更好。

上图左和右分别展示了两种完全RBF网络的效果,所有的数据都参与分类计算,由于计算量很大,在实际中很少使用。或者说这类算法还需要借助其它方式,克服计算复杂度。
参考资料
脚注
-
EditDistance表示一个字符串如何通过最小的修改变为另一个字符串。 ↩