Machine Learning Techniques Lecture 14: Radial Basis Function Network | Cheney Shen

Technology blog

Machine Learning Techniques Lecture 14: Radial Basis Function Network


 
 

内容:

Radial Basis Function Network 模型,其hypothesis就基本是一堆RBF,比如高斯函数,用这些RBF作为代表来取代NN里面的神经元;学习的过程中如果决定了中心是哪些之后,剩下的就是做一步linear aggregation;然后我们介绍了k-means演算法来用于决定中心,其算法的核心就是 alternating potimization,对里面的变数交叉做最佳化;最后我们举例图示加深印象。

 
 


 
 

回顾:Deep Learning 是NN的延伸,NN很多很多层的时候,要怎么克服一些困难,比如训练的时候需要好的初始值,denoising autoencoder 就是一种做法(non-linear PCA),其和统计里面用来做资料处理的PCA 有一定的关联性

 
 

这里: Radial Basis Function Network

 
 


 
 

回顾一下很早以前讲的 Gaussian SVM,在SVM里面配合上gaussian kernel,就可以做到在一个无线多维转换的空间里面想办法找一个胖胖的边界。

 
 

如果从最后的结果得到的hypothesis来看,我们也可以说Gaussian SVM做的事情就是拿一堆Gaussian来,然后把他们做线性组合,他们的中心在Support Vector这些资料点上。

 
 

Gaussian Kernel 也叫做 Radial Basis Function(RBF) kernel,radial 代表你今天算的函数值只和x与中心点的距离有关,basis function 表示的是我们要拿来做线性组合的系数。

 
 

我们如何看待Gaussian SVM输出的函数呢,如果我们定义g_n如上面所示,其物理意义是看新的x与xn到底够不够近,越近的就给他越多的票用来投y_n是正一还是负一。我们的SVm就可以表达出那这些g_n来做加权线性组合,也就是以g_n为基础的linear aggregation。

 
 

Radial Basis Function (RBF) Network 就是这个概念的延伸,就是说怎么去线性组合radial hypothesis(只和半径有关的函数)。

 
 


 
 

为什么叫Network?

 
 

我们来看看NN和RBF的图如上面所示,RBF的第一层是Centers,就是点到中心点的距离,最后一层则是投票的动作。因此两者再输出的部分都是线性模型,类似;不一样的是第一层,NN里面是做内积在经过tanh转换,RBF是算距离,也可以把RBF看作是NN的一个分支。

 
 


 
 

蓝色部分公式就是RBF Network的hypothesis长相,蓝色部分就是RBF Basis长相,中心点是mu,Gaussian是其中一种;红色部分就是投票权重。

 
 

重要的参数:mu表示的是中心点,beta就是投票权重。

 
 

上面举得例子,RBF就是gaussian;Output就是binary classification。

 
 


 
 

kernel是把我原来的两个点转换到某个Z空间,在Z空间里面算一个向量内积。因为这样的操作关系,所以kernel就需要受到Mercer’s condition的保障,就是说其转换矩阵要是半正定的。Kernel描述的可以说是一种相似性,两个原来的向量的相似性通过转换到z空间来描述这种相似性。

 
 

RBF 则可以看作是在描述一种相似性,这个相似性则是可以直接用当前空间内的距离来描述。

 
 

因此 Kernel 和 RBF 可以看作是两种对相似性的衡量方式。Gaussian则是两者都可以解释。他们两个之外也有一些其他的不一样的相似性的表达方式,比如NN里面每一个神经元做的事情也是在比较两个向量的相似性,一个是输入的向量,一个是权重的向量,再比如DNA序列的比较,两者的相似性来源于两者互相变化的最小修改代价。

 
 

RBF Network 告诉我们的是,相似性是一个很好的定义特征转换的方法。

 
 


 
 

练习

 
 


 
 

上面讲了RBF network的基本概念,就是要找到一些中心,然后这些中心对应的RBF用beta这些系数做线性组合。那怎么找中心,干脆就把所有我们看见过的资料点统统当作是中心,这样的RBF Network叫做 full RBF Network(N笔资料就有N个中心)。他的物理意义就是我们看过的每一笔资料都应该对它周围的那些点有beta大小的影响力。举例说假设每个点有同样的影响力,相当于用距离的远近作为权重来投票,就如上面的公示所示,新的点的权重就是周围所有点的影响力的加权和(aggregation)。

 
 


 
 

这样的方法和机器学习里面的另外一些方法有有趣的相似性。我们看我们上面去确认full RBF Network结果的时候算的是一堆高斯函数来投票。这里面和你的x最近的已知点的高斯函数的权重是最高的。高斯函数衰减很快,里面最大的一项很容易掌握全局结果,因此很多时候找出最大一项作为结果就好,不需要去计算全部(selection instead of aggregation)。新的物理意义就是通过最接近x的已知点的结果来决定x,这个方法叫做好邻居法(nearest neighbor)。还可以扩展这个方法,让几个邻居来投票,这样的方法叫做 k-nearest neighbor。

 
 

这里的 k nearest neighbor 方法和 full RBF network 一样都是偷懒的方法(只有在输出的时候才去使用资料来决定,也就是说训练的时候不花力气,测试的时候花很大力气)。

 
 


 
 

这里假设中心已经确定是看过的已知点,我们还要想办法最佳化一下beta。

 
 

这里考虑平方错误的regression当作例子,这样output这层的转换就不考虑了。那我们要做的就是使用这些中心点的RBF函数来转换我们的资料,转换过后beta这边就是一个线性组合的问题,只需要通过linear regression就可以得到结果了。因此我们来看BETA的结果,里面包含的Z是一个方阵,方阵里面的每一格算的是两个向量之间的相似度,因此还是一个对称矩阵。如果你对对称方阵采用高斯函数,只要你所有的X都不一样(每笔资料都不一样),矩阵Z就会是可逆的。因此上面的beta的公式可以化简为 beta = z^-1 * y。

 
 


 
 

我们将上一页得到的结果喂到RBF函数里面去,就有上面橘色部分的推导结果,也就是说RBF网络的结果是,送入 xn 会得到 yn,也就是说Ein = 0!

 
 

这样的性质在 Function approximation(函数逼近)里面应用的很好(内差完美 exact interpolation),但是对于ML来说不好,overfitting!

 
 

因此加上regularization,比如对上面的beta计算改造一下使用ridge regression,这样的beta解如上面所示。我们回想一下,Z这个矩阵可以看作是里面包含了一堆高斯函数,就类似于 gaussian kernel matrix K,其用到的kernel ridge regression的表示如上面所示。两者类似,区别在于以前是无限多维度,这里是有限多维度做regression。

 
 


 
 

我们上面就讲到了如果你把所有的已知资料当作是center点的话,可能会有overfitting的情况,因此你需要regularization。

 
 

我们来考虑SVM的时候是没有把所有的资料都是用进去,只用了support vector。因此这里另外一种可能的regularization的方式是让center的数量少于资料的数量。物理意义是要从原来的资料里面找出一些代表来,用这些代表来表示意见。

 
 


 
 

练习

 
 


 
 

因此我们现在的目标是找出好的代表。

 
 

上面原来是每一个人都是一个代表,但是如果当两个点非常接近的时候,这两个人可以共用同一个代表。也就是说可以把资料分群,每一个群都用一个点来代表。因此要解决的问题是分群并且选择出代表,是一个典型的非监督式学习的问题,分群问题我们的期望是如果由两个点是属于同一群的话,这个代表点和原始的两个点都很接近,因此可以得到如上面Ein的公式,公式的意义是对于每一个点来说其到自己的代表点的距离平方和要是最小,Ein表示的就是选民和代表的意见的一致程度。

 
 

目标:在很好的把资料分群后Ein要最小。

 
 


 
 

我们来看一下这个最佳化问题,这是一个困难的组合最佳化问题,既要组合最佳化,又要数值最佳化。问题里面有两群变数,我们看能不能个别的对他们最佳化。

 
 

假设固定下来所有的mu,来看怎么最佳化分群。中心选定了,对于每个点只能选一个加入离他距离最近的群。

 
 


 
 

假设固定了哪些点是一群,看怎么来最佳化中心点位置mu。也就是对每一群重新去计算Ein最小得到新的mu。

 
 


 
 

从上面我们就得到了一个非常知名的演算法 K-Means Algorithm,其具体的算法描述如上面所示。

 
 

一开始的时候需要决定mu,从原始的资料里面随便选择k个;结束条件是 Converge,就是一步内S不再会有任何变化,这个算法一路收敛的,一定会有最佳结果并停止。

 
 


 
 

我们有了k-means的概念用于RBF Network,算法如下:

  1. 一开始我们采用k-means算法来得到中心点
  2. 配合使用RBF做特征转换
  3. 跑线性模型就可以得到beta
  4. 最后回传回去的就是beta和转换结果

 
 

这里使用了非监督式演算法(k-means)来萃取特征,前面提到的auto-encoder也是相思的概念。

 
 

RBF Network现在似乎不那么流行使用了。

 
 


 
 

练习

 
 


 
 

K-means 算法很漂亮,这里给一个demo,这里有四群资料,开始分群。

 
 


 
 

随机得到mu,对每一个资料点分群

 
 


 
 

决定新的中心点位置

 
 


 
 

新分群

 
 


 
 

得到新的mu

 
 


 
 

以此类推,只要你的群的数量选择适当,结果就会很好。

 
 


 
 

一开始群的数量设的不同,结果很不一样。也就是说这个算法对 初始值 和 k 敏感,也就是说最终得到的也是局部最佳解。

 
 


 
 

分完群以后做RBF Network,结果是上面这样,也就是说如果这个算法的第一步k-means结果不错,第二步再做RBF Network结果也就会比较好。

 
 


 
 

我们来看看几个方法的比较,左边是full RBF Network,右边是nearest neighbor,这两个实际上很少被使用,计算量很庞大。

 
 


 
 

练习

 
 


 
 

总结:

Radial Basis Function Network 模型,其hypothesis就基本是一堆RBF,比如高斯函数,用这些RBF作为代表来取代NN里面的神经元;学习的过程中如果决定了中心是哪些之后,剩下的就是做一步linear aggregation;然后我们介绍了k-means演算法来用于决定中心,其算法的核心就是 alternating potimization,对里面的变数交叉做最佳化;最后我们举例图示加深印象。

 
 

下一讲:

我们怎么从更加抽象的资料里面萃取特征出来。

 
 

 
 

 
 

 
 


One Comment

  • I was suggested this web site by my cousin. I’m not sure whether this post is written by him as nobody else know such detailed about my trouble. You’re amazing! Thanks!

Post a Comment

Your email address will not be published. Required fields are marked *

  • Categories

  • Tags