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

主要内容如下图所示:

首先介绍一下径向基函数网络的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的思想。能够掌握上面三个重要内容就非常好了。

机器学习之径向基神经网络(RBF NN)的更多相关文章

  1. RBF径向基神经网络——乳腺癌医学诊断建模

    案例描述 近年来疾病早期诊断越来越受到医学专家的重视,从而产生了各种疾病诊断的新方法.乳癌最早的表现是患乳出现单发的.无痛性并呈进行性生长的小肿块.肿块位于外上象限最多见,其次是乳头.乳晕区和内上象限 ...

  2. 径向基(RBF)神经网络python实现

    from numpy import array, append, vstack, transpose, reshape, \ dot, true_divide, mean, exp, sqrt, lo ...

  3. RBF(径向基)神经网络

    只要模型是一层一层的,并使用AD/BP算法,就能称作 BP神经网络.RBF 神经网络是其中一个特例.本文主要包括以下内容: 什么是径向基函数 RBF神经网络 RBF神经网络的学习问题 RBF神经网络与 ...

  4. RBF高斯径向基核函数【转】

    XVec表示X向量.||XVec||表示向量长度.r表示两点距离.r^2表示r的平方.k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))= exp(-gamma*r^2) ...

  5. 径向基网络(RBF network)

    来源:http://blog.csdn.net/zouxy09/article/details/13297881 1.径向基函数 径向基函数(Radical Basis Function,RBF)方法 ...

  6. 径向基函数(RBF)神经网络

    RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理.系统 ...

  7. 广义径向基网络(RBF网络)

  8. 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn

    参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...

  9. MATLAB——径向基网络拟合曲线和分类

    1.:.:; rand('state',pi); %指定状态,产生相同的随机数 T=sin(*P)+rand(,length(P)); % 给正弦函数加噪声 plot(P,T,'o') % net=n ...

随机推荐

  1. Redis面试问答(子文章)(持续更新)

    -----> 总文章 入口 文章目录 [-----> 总文章 入口](https://blog.csdn.net/qq_37214567/article/details/90174445) ...

  2. cmake和json安装

    一.cmake源码安装 官网下载源码:https://cmake.org/download/ 安装: ./bootstrap make make install cmake --version 二.j ...

  3. 小程序中嵌套的h5页面设置分享转发

    场景描述:当在小程序中打开h5页面时,希望小程序的转发出去的标题,图片,跳转link可以通过h5通信实现自定义. 实现方式:通过h5给小程序通信,发送标题,图片,跳转link等信息,让小程序设置分享. ...

  4. windows上hexo: command not found

    使用hexo写博客已经有好几个月了,今天突然出现hexo: command not found,应该与我白天的时候调一下环境变量等有关.在对应的path添加环境变量,即可解决该问题.我的环境变量路径为 ...

  5. lnmp一键安装包 多PHP版本使用教程

    ./install.sh mphp 多PHP版本只支持LNMP模式,LNMPA.LAMP模式下不支持!要使用多PHP先安装多PHP版本,在lnmp1.4源码目录下运行:./install.sh mph ...

  6. Learning Conditioned Graph Structures for Interpretable Visual Question Answering

    Learning Conditioned Graph Structures for Interpretable Visual Question Answering 2019-05-29 00:29:4 ...

  7. python+opencv图像变换的两种方法cv2.warpAffine和cv2.warpPerspective

    本文链接:https://blog.csdn.net/qq_27261889/article/details/80720359 # usr/bin/env python # coding: utf- ...

  8. sass - for循环写法

    如要设置多个li的动画延迟时间时 注:这里选择器要加#{}才行 不然就会编译成: 6.7. 插值语句 #{} (Interpolation: #{}) 通过 #{} 插值语句可以在选择器或属性名中使用 ...

  9. python 设计模式之单例模式 Singleton Pattern

    #引入 一个类被设计出来,就意味着它具有某种行为(方法),属性(成员变量).一般情况下,当我们想使用这个类时,会使用new 关键字,这时候jvm会帮我们构造一个该类的实例.这么做会比较耗费资源. 如果 ...

  10. viewSwitcher 切换视图

    通过VIewSwitcher切换视图.这个用到了baseAdapter,还是不太懂,先记个笔记. <RelativeLayout xmlns:android="http://schem ...