机器学习笔记-Radial Basis Function Network

来源:互联网 发布:mac book 能做什么 编辑:程序博客网 时间:2024/06/06 18:20

林轩田机器学习技法关于特征学习系列,其中涉及到Neural NetworkBackpropagation AlgorithmDeep LearningAutoencoder
PCARadial Basis Function NetworkK-MeansMatrix Factorization 等。

  • 机器学习笔记-Neural Network
  • 机器学习笔记-Deep Learning
  • 机器学习笔记-Radial Basis Function Network
  • 机器学习笔记-Matrix Factorization

Radial Basis Function Network

先从一个之前介绍过的模型 Gassian SVM 说起,简单的来说这个模型就是在SVM中加入了高斯核函数,从而可以做到在无限维度的空间中找最大分隔超平面。该模型最终得到的分类器如下:

gsvm(x)=sign(SVαnynexp(γxxn2)+b)(1)

仅仅从最终得到的结果来看,Gassian SVM可以看做是一些高斯函数的线性组合,这些高斯函数的中心点是support vector,这些线性组合的系数是αnyn

Radial basis function指的是我们要计算的函数的结果只和距离(xxn)有关;

Radial basis function径向基函数是一个取值仅仅依赖于离原点距离的实值函数。也就是Φ(x)=Φ(x),或者还可以是到任意一点c的距离,c点称为中心点,也就是Φ(x,c)=Φ(xc)

我们记 gn(x)=ynexp(γxxn2),这个式子可以理解为,看看x和中心点xn的距离,离得越近,exp(γxxn2)的值越大,那么就给出越大的和样本(xn,yn)同方向上(同号)的得分 ynexp(γxxn2)。最终(1)式就可以理解为一个新的x到不同的中心xn的得分gn(x)在参数αn下的线性组合 gsvm(x)=sign(svαngn(xn)+b)

这样的话这个模型就可以理解为是一些和支撑向量(support vector)有关的径向基函数(radial basis function)的线性组合(linear aggregation)
这一篇要介绍的Radial basis function network(RBFNetwork)就是这样的模型的延伸:组合只与半径(xxn)有关的函数,从而得到好的学习结果。

如果把RBFNetwork的架构画出来和neural network是非常相似的,这可能也是其称为network的原因。如下图:


这里写图片描述

可以看到在RBFNetwork的中间一层,借用neural network的概念,也就是隐层中,共有m个节点,分别表示m个中心点,这一层的功能就是计算样本点到每一个中心点的RBF函数值,然后再在输出层进行linear aggregationRBFNetworkneural network的一个分支,它研究的是将neural network中的神经元的功能从计算权重和输入的內积变为计算一个有关距离的函数值时,模型可以取得怎么样的效果。

RBF Network Hypothesis

现在我们可以使用下面的式子来描述不同的RBFNetwork的形式:

h(x)=Output(m=1MβmRBF(x,μm)+b)

其中:RBF(x,μm)可以是高斯或者是其他的距离的函数,μn是中心点向量,βm是线性组合的系数,Output的方式视要解决的问题是回归还是分类而定。这里面有两个比较关键的因素, 一个需要参考的中心点μm有哪些,另一个是线性组合的系数βm怎么来决定。例如对于Gaussian SVM来说:RBF是高斯函数;由于要解决的是二元分类问题,所以Output采用的函数是signM的大小是支持向量的个数;μm是支持向量;βm是对偶SVM问题的解αm和支持向量的labelym的乘积。

所以一般的来说, RBFNetwork需要决定的就是中心点μm和线性组合的系数βm,另外还有一个参数,例如RBF函数的选择以及Output的输出方式。

在SVM with Gaussian Kernel中曾经提到,Kernel function的结果简单来说就是两个向量转换到高维空间中的內积,既然是內积因此可以理解为是一种衡量相似性的方法,即原来两个低维空间向量的相似性通过转换到高维空间计算內积来描述。Poly核中隐藏着一个多项式转换,也可以说其描述的是一个更高维空间中的相似性,同理高斯函数中隐藏着一个无限维空间中的相似性。
而在这里的RBF也是一种相似性的衡量,不过是直接通过在X空间中的距离来计算的,例如高斯函数,就是将距离的平方取负号然后exp就可以描述相似性。所以只要距离能算出来就可以定义不同的RBF
所以KernelRBF可以看成是两种相似性的衡量方法,而Gaussian是这两种方式的交集。

RBFNetwork告诉我们一个很重要的事情是:相似性是一种很好的定义特征转换的方法,所以当有另外的相似性的衡量方法,和kernel无关,和RBF无关,那么就可以利用这些相似性作为特征转化来提高学习的效果。

如下的三个函数都可以看做是RBF

  • exp(γxμ2)
  • xTx2xTμ+μTμ
  • x=μ

RBF Network Learning

上一小节介绍了RBF的基本概念

h(x)=Output(m=1MβmRBF(x,μm))

其中一个需要解决的问题是中心点μm如何选取,一个简单的解决方法是将每一个数据都当做是中心点,这样的RBFNetwork称为Full RBFNetwork

Full RBFNetworkM=N(资料量),μm=xm。这样的方式可以理解为每一个已知的数据都会参与对未知数据的预测,只不过对预测结果的贡献取决于和未知样本的相似性或者说距离。例如,对于二分类问题来说, ym{1,+1}full RBF network构成的分类器如下:

guniform(x)=sign(m=1Nymexp(γxxm2))(2)

Nearest Neighbors

由于不知道该如何选取中心点而把所有的样本都视为中心,其实对这样的方式稍加改进就能得到另一种十分常见的机器学习方法:K-NN,即k近邻。

2式所示的uniform full RBF network中,可以理解为是在计算N个高斯函数的结果的线性组合,这些高斯函数的值有大有小,其中和x最相近的xm所在的那个高斯函数取得最大的值,由于高斯函数衰减的很快,所以通常值最大的高斯函数给出的结果往往能够决定最终的结果,这样我们就可以使用高斯函数值最大的那个中心点的label作为对结果的预测,而不用对所有的高斯函数的结果进行求和。(这个时候模型由aggregation变为selection)。其实就是在所有的样本中找一个和待预测样本最相似的样本将其label做为待预测的样本的label。将这样的方式进行延伸就得到了 k nearest neighbors,即找和待预测样本最相似的 k 个样本,对这些样本点的labelvoting

不管是uniform full RBF network 还是 k nearest neighbors,可以看到在训练阶段只是做了数据的存储,所有的工作量都集中到了预测阶段。

Interpolation by full RBF network

上面介绍了full RBF network,但是其中用来组合高斯函数的参数被简单的设置为了ym,这里我们对其进行改进,学习得到最佳的参数βm。并且我们的目标是使用full RBF network来做regression即我们希望得到的模型是:

h(x)=(m=1NβmRBF(x,xm))

要求得最佳的βm,其实就是要在通过RBF进行转换之后的数据:zn={RBF(xn,x1),RBF(xn,x2),,RBF(xn,xN)},n=1,2,.N上做一个线性回归。可以得到线性回归的最佳解:

β=(ZTZ)1ZTy

其中

  • Z是一个N×N对称矩阵(zi.j=RBF(xi,xj)=RBF(xj,xi)=zj,i)
  • 当所有的xn不同的时候,使用高斯函数计算得到的Z矩阵是可逆的。

因为Z是对称的, 是可逆的,所以有β=(ZTZ)1ZTy=Z1Z1Zy=Z1y

所以当使用Gaussian函数作为RBF,每一个数据点都作为中心点,并且资料不重复的话,那么最佳的βm有很简单的解析解β=Z1y

这样我们就得到了full Gaussian RBF network for regression的模型,如下:

gRBF=(m=1NZ1y expxxm2)

我们来分析看看这样的模型有什么特别之处。当我们把训练集中的一个样本的 xn 喂给该模型的时候发现经过该模型计算之后会得到该样本的 yn 值。具体的计算过程如:

gRBF(x1)=βTz1=(Z1y)T(first column of Z)=yTZ1(first column of Z)=yT[1 0  0]T=y1

其中,ZT=Z(Z1)T=Z1ZTZ=I

也就是说gRBF在训练集上的错误率为0。这样的结果对于一些应用例如函数逼近function approximation来说是完美的,因为经过拟合的函数通过了每一个已知的样本点,但是对于machine learning来说不是一个好的结果,因为这可能有overfitting的风险。

Regularized full RBF network

在线性回归linear regression中,通过加入正则化项来防止过拟合,加了正则化项的linear regression称为ridge regression。此时求得的regularized full RBFNet for regression的最佳的β为:

β=(ZTZ+λI)1ZTy(3)

kernel ridge regressrion 中最佳的β为:

β=(K+λI)1y(4)

可以看到(3)(4)式非常的相近,因为RBFNet中的Z其实就等于高斯核矩阵K,而产生差别的原因在于regularization的方式不同,在kernel ridge regressrion中是针对无限多维的转换做regularization,在regularized full RBFNet中是对有限维度的转换做regularization

以上的讨论都是基于所有的资料都用作中心点的情况,我们说这样可能会出现overfitting,所以需要添加regularizer。借鉴SVMsupport vector的结果,当不使用所有的数据点都作为中心点的时候,可能会有更好的结果。用比较少的中心点也可以当成是在做regularization, 因为这样的话第二层的权重就变少了。下一节我们将介绍如何从所有的数据点中选择出具有代表性的数据点作为中心点。

k-Means Algorithm

这一小节我们的主要目标是找一些有代表性的样本作为RBFNetwork的中心点,而不是将所有的样本都当成是RBFNetwork的中心点。因为当x1x2的时候,它们的径向基函数表达的意思也是差不多的,这样就可以找一些比较有代表性的样本点来构成最终的RBF Network,而不必在做预测的时候考虑所有点的影响。接下来可以看到, 在解决这个问题的过程中,我们推导出了聚类算法k-Means,并从数学的角度或者说是最优化的角度重新认识了这个简单但是十分有用的算法。

这个找有代表性的样本点的问题可以转化为聚类问题,因为当对数据聚类完成之后,每一个类的聚类中心就是我们想要找的RBF Network中具有代表性的点。

对于聚类问题,我们希望每一个类中的样本点要尽可能的相似,即, 如果 x1,x2Sm,那么 μmx1x2。(假设μmSm的聚类中心,也就是我们想要找的代表点)同样我们也可以定义一个损失函数如下:

Ein(S1,,SM;μ1,,μM)=1Nn=1Nm=1M[[xnSm]]xnμm2(1)

我们想要Ein最小, 其中:如果成立, [[]]=1;如果不成立,[[]]=0N为样本的个数, M为聚类的个数。直观上讲,1式就是要最小化所有样本点到聚类中心点的距离。一方面我们要找到最佳的数据聚类方式,这是一个组合最优化问题;另一方面我们需要找到最佳的中心点选取方式,这是一个数值最优化问题。也就是需要决定两组参数{S1,,Sm},{μ1,,μM},在这里我们采取的优化方式是进行交替的优化,optimize alternatingly

μ1,,μM固定的时候,也就是聚类中心已经固定下来了, 现在只需要考虑对于一个样本点xn来说,如何决定其归属的类,根据1式很容易得到,当选择使得xnμm最小的Sm,也就是离xn最近的聚类中心所在的类作为xn所属的类别时Ein最小。
问题解决了一半, 当每一个样本点都决定了其归属的类别之后,接下来就可以更新每一个类的中心.

通常我们会将类中数据点的均值作为该类新的聚类中心, 为什么这么做呢?

S1,,Sm固定的时候,最小化Ein的问题就变成了针对变量μ的一个无约束的最优化问题。当然毫不犹豫的求取梯度:

μmEin=(Nn=1Mm=1[[xnSm]]xnμm2)μm=2n=1N[[xnSm]](xnμm)=2(xnSmxn|Sm|μm)

令梯度为0求取最佳解。

2(xnSmxn|Sm|μm)=0μm=xnSmxn|Sm|

这样我们就得到了一个非常著名的无监督学习算法, k-Means聚类算法。上面的谈论给了一些不同的视角来看待这个算法的运作。

k Means Algorithm

  • 随机从数据中选择 k 个数据点作为初始的聚类中心
  • repeate
    • 将每一个样本点归属到离它最近的聚类中心,从而得到k个类
    • 求取每一个类中的均值作为新的聚类中心
  • until converge

为什么该算法一定会收敛呢?也就是说为什么经过一定次数的迭代之后{S_1, \cdots, S_m}会不在发生变化而稳定呢?经过上面的分析我们知道,每一个步骤,不过是确定了中心划分数据点, 还是确定了类簇决定新的聚类中心,都是在最小化Ein,而Ein的下限为0, 所以该算法一定会收敛。

RBF Network Using k-Means

我们之所以会推导k-Means这个算法,是为了确定RBF Network的中心点。结合k-Means得到的RBFNetwork算法如下:

RBF Network Using kMeans

  • run kMeans with k=M to get {μm}
  • construct transform Φ(x) from RBF at μm:Φ(x)=[RBF(x,μ1),RBF(x,μ2),,RBF(x,μM)]
  • run linear model on {(ϕ(xn),yn)} get β
  • return grbfNet(x)=LinearHypothesis(β,Φ(x))

首先使用k-Means算法来得到样本的M个中心点,我们利用这些中心点结合径向基函数RBF定义特征转换 Φ(x),原始数据经过特征转换得到新的数据 Φ(x)=[RBF(x,μ1),RBF(x,μ2),,RBF(x,μM)], 在这些数据上利用线性模型:linear regression,logistic regression,linear SVM等等来求解β,得到最后的RBF Network

这是我们第二次看到使用非监督的学习算法来萃取数据中的特征,第一次是利用autoencoder

RBF Network中的参数主要有M:中心点的个数;RBF中的参数,例如如果使用Gaussian的话需要决定其中的λ

k-Means and RBF Network in Action

k-Means算法的结果受给定的参数 k 和初始聚类中心设定的影响,因为在求解的过程中使用的方法是alternating optimization所以并不一定会保证得到全局最优的解。

下面的图给出了一个利用RBFNetwork Using kMeans做二分类的例子,


这里写图片描述

从上图可以得到的结论是, 当使用k-Means方法能够找出更合理的数据中心点或者说数据的代表的时候,那么RBF Network在基于这样的特征转换之下会得到更好的结果。

当使用full RBF network,也就是将所有的样本点都当做是中心点,来解决以上的二分类问题时,结果如下图,其中最右边的kNN也是使用所有的样本点作为中心点,只不过在做决策的时候只考虑k个。最左侧是在full RBF network上加了正则化项,得到了更加平滑的分类边界。由于在预测的时候,full RBF network这样的模型要考虑所有的资料,所有在实际中通常不是很常用。


这里写图片描述

总结

本篇主要介绍了RBF network,其模型由一些中心点prototype上的径向基函数RBF构成,这些径向基函数可以高斯函数等等,这些中心点可以是所有的样本点或者是部分具有代表性的样本点。在寻找具有代表性的中心点的过程中,推导出了无监督学习算法,k-Means聚类算法,其优化求解的过程是alternating optimization。当中心点被选取出来之后,构建RBF network模型就只需要将所有的原始数据经过利用这些中心点结合径向基函数RBF定义的特征转换得到的新数据上求解一个linear model。最后我们看到这样的算法的表现大多依赖一开始选择的中心点的设置。

阅读全文
0 0
原创粉丝点击