• 机器学习之径向基神经网络(RBF NN)


    本文基于台大机器学习技法系列课程进行的笔记总结。

    主要内容如下图所示:


    首先介绍一下径向基函数网络的Hypothesis和网络的结构,然后介绍径向基神经网络学习算法,以及利用K-means进行的学习,最后通过一个实例加深对RBF神经网络认识和理解。

    RBF神经网络的Hypothesis和网络结构

    我们从基于Gaussian kernel的support vector machine中在无限维度中进行特征转换来获取一个large margin的边界,这个Gaussian kernel就是一个Radio Basis Function Kernel。其意义呢有两个:一是radio,代表的是x和中心点xm之间的距离,可以是任意衡量距离的某种范数,比如L2范数等;二是Basis,表示要进行联合(combine);于是就可以得到了以下关于RBF神经网络的更加质朴的定义:如下图所示,RBF神经网络实际上就是一些选择出来的radial径向hypothesis的线性组合。


    那么为何是神经网络呢?我们看如下图所示的结构对比,从中可以看出两者的隐含层(hidden layer)不同,即RBF神经网络采用的激发函数或者映射是径向基函数(距离+高斯)等,而输出层都一样,是特征转换后的线性融合。


    这样就得到了RBF的神经网络的Hypothesis,如下图所示,如果还记得kernel svm的hypothesis的话(representation theory),我们得到的SVM的Hypothesis实际上就是support vector的线性组合,即影响我们最后得到的hypothesis只是与这些“代表”的点有关。类似的,RBF也是如此,我们需要找到一些能够代表数据的中心点( center )。所以我们在进行训练学习的时候要做的就是:给定的径向基函数(RBF)和输出,然后决定这些center和线性组合的系数β。另外一个值得提出的就是从另一个角度来看径向基函数神经网络与其他前馈神经网络的关系,可以参考我的另一篇博文中的总结:神经网络总结(初稿),关键点就是从BP神经网络到径向基函数神经网络,一个明显的特征就是我们不用在对所有全局的链接权重进行训练,而是只对一些重要的影响输出的权重进行调整,这样就能明显提升神经网络的训练速度。


    另一个重要的内容就是Gaussian的径向基函数实际上做的就是一种相似度的测量,而且是在原始空间的相似度测量。而特征转换就是距离与中心点的相似度的转换。


    Full RBF神经网络

    full RBF神经网络实际上就是一个非常lazy的RBF神经网络。之所以lazy讲的它根本不做center,也就是它把所有观测到的数据都作为center,也就是输入size为N,那么center的size也是N。即一种uniform的形式,融合每一个输入数据到所有训练样本点的相似度。如下图所示:


    最近邻模型(Nearest neighbor)

    思想就是我们对所有经过hypothesis得到的输出进行投票(vote,aggregation),而是选择在相似度上与已知样本点最近的那个点的标签作为输出。这就是典型的最近邻模型。所以这样看上去训练就比较简单了,实际上只用把观测到的数据保存下来就好,但测试过程则比较复杂,因为要对所有的已知标签的样本点进行相似度的计算,然后选出最近邻的那个,并输出该样本的标签。稍微拓展一下,我们还是可以做融合的,我们选出最相似的k个邻居,然后由着k个邻居进行投票,或者线性融合,然后再输出,这样的模型就叫做k最近邻模型。


    Regularization

    那如果利用full RBF神经网络进行regression呢情况又变成怎样呢,如下图所示:


    从中可以看出,经过以上设计进行训练我们将得到Ein=0,这在内插法逼近函数的时候是非常好的,可是我们知道这样好的Ein往往有可能出现overfitting,所以需要进行regularization的设计。常见的方法就是加约束项或惩罚函数。在不同的空间做regularization有着不同的结果。另一中regularization的方法就是限制center的数量,我们用few center进行,而不是full,这样就能在一定程度上降低模型复杂度。那么如何从一堆X中萃取中心点呢?萃取的标准又是什么呢?

    于是问题就转向了聚类问题cluster problem。


    聚类问题cluster problem(K-means)

    聚类问题的数学描述如下图所示,通过优化聚类误差(采用了平方误差)进行。


    于是就引出了非常著名的K-means聚类算法,具体内容参看我的另一篇博客K-means算法

    把K-means 应用到RBF神经网络中

    那么将K-means方法用到RBF神经网络中,就可以得到以下的流程


    下面几个就是利用k-means算法流程进行的实验结果

    对比了采用regularization的full RBF、采用了few center(K-means)的RBF以及基于nearest neighbor的Full RBF实验效果图,从图中可以看出,虽然full RBF效果可能要比k-means的效果要好,可是一般来讲由于计算复杂度和overfitting的风险等原因一般不常常使用。

    *************************************************************************************************************************************

    对于径向基函数神经网络,只要抓住它的hypothesis的质朴表示:一堆center的相似度(Gaussian RBF)的线性融合(vote,linear aggregation)就好了。完成的特征转换就是距离到相似度。输出就是相似度的线性组合。

    然后中间涉及到的三个比较重要的内容就是:1. 最近邻思想;2. K-means算法;3. alternating optimization的思想。能够掌握上面三个重要内容就非常好了。

  • 相关阅读:
    UEditor 编辑模板
    Task ProgressBar模拟现实完成后显示TextBox
    Java Lambda map返回部分属性
    Socket编程
    字节流和字符流
    File类
    volatile的作用和原理
    Java四种引用类型
    ThreadLocal
    孤儿进程和僵尸进程
  • 原文地址:https://www.cnblogs.com/huty/p/8519318.html
Copyright © 2020-2023  润新知