机器学习之径向基神经网络(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的思想。能够掌握上面三个重要内容就非常好了。
机器学习之径向基神经网络(RBF NN)的更多相关文章
- RBF径向基神经网络——乳腺癌医学诊断建模
案例描述 近年来疾病早期诊断越来越受到医学专家的重视,从而产生了各种疾病诊断的新方法.乳癌最早的表现是患乳出现单发的.无痛性并呈进行性生长的小肿块.肿块位于外上象限最多见,其次是乳头.乳晕区和内上象限 ...
- 径向基(RBF)神经网络python实现
from numpy import array, append, vstack, transpose, reshape, \ dot, true_divide, mean, exp, sqrt, lo ...
- RBF(径向基)神经网络
只要模型是一层一层的,并使用AD/BP算法,就能称作 BP神经网络.RBF 神经网络是其中一个特例.本文主要包括以下内容: 什么是径向基函数 RBF神经网络 RBF神经网络的学习问题 RBF神经网络与 ...
- RBF高斯径向基核函数【转】
XVec表示X向量.||XVec||表示向量长度.r表示两点距离.r^2表示r的平方.k(XVec,YVec) = exp(-1/(2*sigma^2)*(r^2))= exp(-gamma*r^2) ...
- 径向基网络(RBF network)
来源:http://blog.csdn.net/zouxy09/article/details/13297881 1.径向基函数 径向基函数(Radical Basis Function,RBF)方法 ...
- 径向基函数(RBF)神经网络
RBF网络能够逼近任意的非线性函数,可以处理系统内的难以解析的规律性,具有良好的泛化能力,并有很快的学习收敛速度,已成功应用于非线性函数逼近.时间序列分析.数据分类.模式识别.信息处理.图像处理.系统 ...
- 广义径向基网络(RBF网络)
- 深度学习框架PyTorch一书的学习-第四章-神经网络工具箱nn
参考https://github.com/chenyuntc/pytorch-book/tree/v1.0 希望大家直接到上面的网址去查看代码,下面是本人的笔记 本章介绍的nn模块是构建与autogr ...
- MATLAB——径向基网络拟合曲线和分类
1.:.:; rand('state',pi); %指定状态,产生相同的随机数 T=sin(*P)+rand(,length(P)); % 给正弦函数加噪声 plot(P,T,'o') % net=n ...
随机推荐
- C语言利用fgetc复制拷贝文件内容
#include <stdio.h> #include <stdlib.h> //文件的内容复制 int main(int a,char *argv[]){ if(a!=3){ ...
- 坑:找到LoadRunner中Recording Options和 Run Time Settings配置选项确实的原因
在loadrunner安装好后,打开页面查看发现分别的缺失内容如下: 现象: 1. Recording Options 2.Run Time Settings 3.解决 原因是LR是付费的,你的安装包 ...
- java连数据库和数据库连接池踩坑日记(二)-------数据库连接池c3p0
关于数据库连接池,我觉得有些沮丧,因为最后被毙掉了说不用考虑多线程的问题…… 数据库连接池的推荐:https://www.cnblogs.com/nuccch/p/8120349.html 我最终选择 ...
- 2018-2019-2 《网络对抗技术》Exp7 网络欺诈防范 20165326
网络欺诈防范 实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 简单应用SET工具建立冒名网站 ettercap DNS spoof 结合应用两种技术, ...
- Mysql 查看所有线程,被锁的表
查看所有MySQl相关的线程 show full processlist; 杀死线程id为2的线程 kill 2 查看服务器状态 show status like '%lock%'; 查看服务器配置参 ...
- python模块中__init__.py的作用
基本概念先上结论举例解释实验一:不包含__init__.py实验二:A中包含__init__.py实验三:A.A_A中也包含__init__.py进阶基本概念概念 解释import 即导入,方式就是在 ...
- html5的source元素
html5的source元素 一.总结 一句话总结: 主要是解决视频播放时候的浏览器的兼容问题 二.html5的source元素 学习要点 掌握source元素的用法 source元素-解决浏览器额兼 ...
- 查看 ssh 攻击 和 攻击成功者
查看攻击失败记录: grep "Failed password for invalid user admin" /var/log/auth.log 查看攻击成功的记录: grep ...
- Xamarin图表开发基础教程(2)OxyPlot框架
Xamarin图表开发基础教程(2)OxyPlot框架 OxyPlot图表设计 OxyPlot是一个基于.Net的跨平台图表库.该图表库也支持Xamarin应用开发.该组件支持多种类型的图表.本章将主 ...
- git---主分支同步到子分支
在进行git项目协同开发的时候,每个分支的代码会被合并到主分支 master 分支上,但是如何将master分支上的代码合并到子分支上呢? 第一步:切换到本地的仓库,更新为最新的代码. 第二步:切换到 ...