机器学习技法课程学习笔记14-- Radial Basis Function Network
来源:互联网 发布:淘宝申请客服介入处理 编辑:程序博客网 时间:2024/06/06 19:02
上节课我们主要介绍了Deep Learning的概念。Deep Learing其实是Neural Networ的延伸,神经元更多,网络结构更加复杂。深度学习网络在训练的过程中最核心的问题就是pre-training和regularization。pre-training中,我们使用denoising autoencoder来对初始化权重进行选择。denoising autoencoder与统计学中经常用来进行数据处理的PCA算法具有很大的关联性。这节课我们将介绍Radial Basis Function Network,把之前介绍的adial Basis Function和Neural Network联系起来。
RBF Network Hypothesis
之前我们介绍过,在SVM中引入Gaussian Kernel就能在无限多维的特征转换中得到一条“粗壮”的分界线(或者高维分界平面、分界超平面)。从结果来看,Gaussian SVM其实就是将一些Gaussian函数进行线性组合,而Gaussian函数的中心就位于Support Vectors上,最终得到预测模型
Gaussian kernel的另一种叫法是Radial Basis Function(RBF) kernel,即径向基函数。这个名字从何而来?首先,radial表示Gaussian函数计算结果只跟新的点x与中心点
从另外一个角度来看Gaussian SVM。首先,构造一个函数
上式中,指数项表示新的点x与
那么,Radial Basis Function(RBF) Network其实就是上面Gaussian SVM概念的延伸,目的就是找到所有radial hypotheses的linear aggregation,得到更好的网络模型。
之所以叫作RBF Network是因为它的模型结构类似于我们之前介绍的Neural Network。
Neural Network与RBF Network在输出层基本是类似的,都是上一层hypotheses的线性组合(linear aggregation)。但是对于隐藏层的各个神经元来说,Neural Network是使用内积(inner-product)加上tanh()函数的方法,而RBF Network是使用距离(distance)加上Gaussian函数的方法。总的来说,RBF Network是Neural Network的一个分支。
至此,RBF Network Hypothesis以及网络结构可以写成如下形式:
上式中,
对应到Gaussian SVM上,上式中的RBF就是Gaussian函数。由于是分类问题,上式中的Output就是sign函数。其中,RBF的个数M就等于支持向量的个数SV,
在之前介绍SVM的时候,我们就讲过Mercer定理:一个矩阵是Kernel的充分必要条件是它是对称的且是半正定的,条件比较苛刻。除了Gaussian kernel还有Polynomial kernel等等。Kernel实际上描述了两个向量之间的相似性,通过转换到z空间计算内积的方式,来表征二者之间的相似性。而RBF实际上是直接使用x空间的距离来描述了一种相似性,距离越近,相似性越高。因此,kernel和RBF可以看成是两种衡量相似性(similarity)的方式。本文介绍的Gaussian RBF即为二者的交集。
除了kernel和RBF之外,还有其它衡量相似性的函数。例如神经网络中的神经元就是衡量输入和权重之间的相似性。
经过以上分析,我们知道了RBF Network中distance similarity是一个很好的定义特征转换的方法。除此之外,我们还可以使用其它相似性函数来表征特征转换,从而得到更好的机器学习模型。
RBF Network Learning
我们已经介绍了RBF Network的Hypothesis可表示为:
其中
full RBF Network的矩可以表示为:
我们来看上式中的Gaussian函数项,当x与样本点
当然可以对nearest neighbor model进行扩展,如果不是只选择一个“邻居”,而是选择距离x最近的k个“邻居”,进行uniformly aggregation,得到最终的矩
k nearest neighbor通常比nearest neighbor model效果更好,计算量上也比full RBF Network要简单一些。值得一提的是,k nearest neighbor与full RBF Network都是比较“偷懒”的方法。因为它们在训练模型的时候比较简单,没有太多的运算,但是在测试的时候却要花费更多的力气,找出最相近的中心点,计算相对复杂一些。
接下来,我们来看一下Full RBF Network有什么样的优点和好处。考虑一个squared error regression问题,且每个RBF的权重为
很明显,这是一个简单的线性回归问题,每个RBF都可以看成是特征转换。特征转换后的向量
那么,根据之前线性回归介绍过的最优化解公式,就能快速地得到
上述解的条件是矩阵
矩阵Z的大小是NxN,是一个方阵。而且,由于Z中每个向量
根据Z矩阵的这些性质,我们可以对
将
结果非常有趣,模型的输出与原样本
当然,这种方法在某些领域还是很有用的。比如在函数拟合(function approximation)中,目标就是让
为了避免发生过拟合,我们可以引入正则项
我们再来看一下Z矩阵,Z矩阵是由一系列Gaussian函数组成,每个Gaussian函数计算的是两个样本之间的distance similarity。这里的Z与之前我们介绍的Gaussian SVM中的kernel K是一致的。当时我们得到kernel ridgeregression中线性系数
比较一下kernel ridgeregression与regularized full RBF Network的
除此之外,还有另外一种regularization的方法,就是不把所有N个样本点都拿来作中心点,而是只选择其中的M个样本点作为中心点。类似于SVM中的SV一样,只选择具有代表性的M个中心点。这样减少中心点数量的同时也就减少了权重的数量,能够起到regularization的效果,避免发生过拟合。
下一部分,我们将讨论如何选取M个中心点作为好的代表。
k-Means Algorithm
之所以要选择代表,是因为如果某些样本点很接近,那么就可以用一个中心点来代表它们。这就是聚类(cluster)的思想,从所有N个样本点中选择少数几个代表作为中心点。
聚类(clustering)问题是一种典型的非监督式学习(unsupervised learning)。它的优化问题有两个变量需要确定:一个是分类的分群值
那么,我们的目标就是通过选择最合适的
从这个最小化公式,我们能够发现这是一个组合最佳化的问题,既要优化分群值
首先,如果
然后,如果
如上图所示,中心点
经过以上的推导,我们得到了一个非常有名的一种unsupervised learning算法,叫做k-Means Algorithm。这里的k就是代表上面的M,表示类群的个数。
k-Means Algorithm的流程是这样的:首先,随机选择k个中心点
有一个问题是,k-Means Algorithm的循环迭代一定会停止吗?或者说一定能得到最优解吗?答案是肯定的。因为每次迭代更新,
k-Means Algorithm已经介绍完毕。接下来,我们把k-Means Algorithm应用到RBF Network中去。首先,使用k-Means,得到原始样本的k个中心点。原始样本到k个中心点组成了RBF特征转换
值得一提的是,这里我们使用了unsupervised learning(k-Means)与我们上节课介绍的autoencoder类似,同样都是特征转换(feature transform)的方法。
在最优化求解过程中,参数有k-Means类群个数M、Gaussian函数参数
k-means and RBF Network in Action
下面这部分,我们将举几个例子,看一下k-Means Algorithm是如何处理分类问题的。
第一个例子,平面上有4个类群,k=4。首先,我们随机选择4个中心点,如下图中四种颜色的方块所示:
第一次迭代,由初始中心点,得到4个类群点的分布:
4个类群点确定后,再更新4个中心点的位置:
第二次迭代,由上面得到的4个中心点,再计算4个类群点的分布:
4个类群点确定后,再更新4个中心点的位置:
第三次迭代,由上面得到的4个中心点,再计算4个类群点的分布:
4个类群点确定后,再更新4个中心点的位置:
第四次迭代,由上面得到的4个中心点,再计算4个类群点的分布:
4个类群点确定后,再更新4个中心点的位置:
第五次迭代,由上面得到的4个中心点,再计算4个类群点的分布:
4个类群点确定后,再更新4个中心点的位置:
第六次迭代,由上面得到的4个中心点,再计算4个类群点的分布:
4个类群点确定后,再更新4个中心点的位置:
从上图我们可以看到,经过六次迭代计算后,聚类的效果已经相当不错了。从另外一个角度来说,k值的选择很重要,下面我们来看看不同的k值对应什么样的分类效果。
如上图所示,初始时,我们分别设定k为2,4,7,随机选择中心点位置。在经过多次迭代后,得到的聚类结果如下:
通过上面这个例子可以得出,不同的k值会得到不同的聚类效果。还有一点值得注意的是,初始中心点位置也可能会影响最终的聚类。例如上图中k=7的例子,初始值选取的右边三个中心点比较靠近,最后得到的右边三个聚类中心点位置也跟初始位置比较相近。所以,k值大小和初始中心点位置都会影响聚类效果。
接下来,我们把k-Means应用到RBF Network中,同样分别设定k为2,4,7,不同模型得到的分类效果如下:
很明显,k=2时,分类效果不是太好;k=4时,分类效果好一些;而k=7时,分类效果更好,能够更细致地将样本准确分类。这说明了k-Means中k值设置得是否合理,对RBF Network的分类效果起到重要的作用。
再来看一个例子,如果使用full RBF Network进行分类,即k=N,如下图左边所示,设置正则化因子
从上图的比较中,我们可以发现full RBF Network得到的分类线比较弯曲复杂。由于full RBF Network的计算量比较大,所以一般情况下,实际应用得不太多。
总结
本节课主要介绍了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值对分类的效果影响很大。
注明:
文章中所有的图片均来自台湾大学林轩田《机器学习技法》课程
- 台湾大学林轩田机器学习技法课程学习笔记14 -- Radial Basis Function Network
- 机器学习技法课程学习笔记14-- Radial Basis Function Network
- 机器学习笔记-Radial Basis Function Network
- 机器学习技法课程学习笔记12-- Neural Network
- 机器学习 径向基(Radial basis function)与RBF核函数 浅析
- 台湾大学林轩田机器学习技法课程学习笔记12 -- Neural Network
- 机器学习技法课程学习笔记8 -- Adaptive Boosting
- 机器学习技法课程学习笔记5-- Kernel Logistic Regression
- 机器学习技法课程学习笔记6-- Support Vector Regression
- 机器学习技法课程学习笔记7 -- Blending and Bagging
- 机器学习技法课程学习笔记9 -- Decision Tree
- 机器学习技法课程学习笔记10 -- Random Forest
- 机器学习技法课程学习笔记13-- Deep Learning
- 机器学习技法课程学习笔记15 -- Matrix Factorization
- 机器学习技法课程学习笔记16 -- Finale
- coursera机器学习技法笔记(12)——Neural Network
- 学习笔记---机器学习技法
- 台湾大学林轩田机器学习技法课程学习笔记1 -- Linear Support Vector Machine
- JAVA学习笔记——Set集合
- gitlab-ci.yml配置
- 数据结构学习笔记7--c语言建立一个链表(已测正确无误)
- java总结(持续更新)
- Loadrunner 运行示例遇到的问题及解决方法
- 机器学习技法课程学习笔记14-- Radial Basis Function Network
- 初识Hibernate之关联映射(一)
- ubuntu caffe 下安装nvidia digits排错
- web系统ie浏览器不刷新数据
- 字符串算法——单一数(Single Number II)
- C语言的编译链接过程详解
- Spring基础-3-AOP
- leetcode remove-element
- 欢迎使用CSDN-markdown编辑器