这节课主要讲述了RBF这类的神经网络+Kmeans聚类算法,以及二者的结合使用。

首先回归的了Gaussian SVM这个模型:

其中的Gaussian kernel又叫做Radial Basis Function kernel

1)radial:表示输入点与center点的距离

2)basis function:表示‘combined’

从这个角度来看,Gaussian Kernel SVM可以看成许多小的radial hypotheses的线性组合(前面的系数就是SV的alphan和yn)

这里要介绍的RBF Network也是多个radial hypotheses的线性组合。

RBF Network的结构如下图:

注意与Neural Network不同的是:RBF Network没有权重的感念(即Wij)就是输入向量直接feed进各个RBF中,出来的结果再voting。

RBF Network的hypotheses如下:

这里要学习的参数主要包括两类:

1)每一个RBF的中心点mium

2)每个RBF voting的权重betam

这里其实还有一个主观参数:即RBF的个数(说主观是因为不用学习,是事先设定的)

林还介绍了有关RBF Network的物理意义:

RBF做了这么一件事情:

1)假设模型中已有很多代表性center点,即每个radial中的miu:需要计算每个输入的x与这些center的距离(或相似性,为啥叫相似性呢?因为两个向量越相近,Radial出来的值就越大;否则由于exp的作用,Radial出来的值会迅速减小

2)算出来输入的x与每个center的相似性之后,再根据每个center的重要性,对其进行voting

因此,RBF Network也称为:distance similarity-to-center as feature transform

即,做的特征转换是输入x对于每个radial中心的距离。

再延伸一些,回想之前介绍的Neural Network,其实也是衡量了某种similarity(可以看做是输入x与某个nueron输入权重w的相似性,因为两个固定长度的向量,如果他们的内积越大则他们约相近,对应的就是tanh的输出就越大)。这个view很有趣,是一种理解神经网络的不同观点。

下面林开始介绍RBF Network的参数学习方法。

从full RBF Network开始。

为什么叫full RBF Network呢?前面说了,每个Radial都对应一个center,full RBF Network就是把所有的已知点都做成一个radial。如下:

如果每个已知点的权重都一样,即整个模型是uniform的,则参数也不需要学习了;每个center就是所有的输入点x。

uniform是一种方法,或者不用uniform,考虑radial函数的性质(如果离得不近的点radial的输出会迅速减小),那么只需要选择最近的k个点去给新的输入x分类即可。这种方法叫k nearest neighbor,应用也比较广泛。

uniform的方法还是有些太low了,因为每个点的作用都当成一样的了。如何学习出每个点的不同voting权重呢?这里采用regression的方法。

1)先对输入特征做一层transform:这个方法就是计算某个输入点xn与所有N个输入点的RBF距离(exp(...)这个东西

2)将square error作为cost funciton,用传统的linear regression的方法,求出每个betan(注意这里的n从1取到N,即radial的个数,也是样本点的个数

这里还有一个点需要注意:如果每个输入x都是不同的,则Gaussian RBF产生的Z矩阵一定是可逆的(猜可能是有某种条件保证矩阵满秩;举个反例,如果存在两个相同的x,则算出来的Z矩阵必然有两行完全相同的,也就是线性无关的行小于N,则必然不可逆

在所有xn不同的情况下,Z矩阵可逆,则beta的解析形式更简洁了 beta = inverse(Z)y

利用上述的结论,进一步我们看Ein(gBRF)可以做到0

Ein可以做到0同时也有overfitting的风险,因此,直观的就是加入一个L2 regularizer(改成做beta与y的ridge regression)

林又对比了一下kernel ridge regression和L2 regulaized full RBFNet,这里有一个insights:

二者都对一个N×N的与输入similarity相关的矩阵做了regularization

1)对于kernel ridge regression来说,“similarity”指的是Gaussian Kernal Matrix

2)对于full RBFNet来说,“similarity”指的是每个输入与所有输入点的Radial距离

这种full RBFNet的方法的缺点就是需要考虑所有的输入,这给计算效率上带来了比较大的问题。

由此,能否考虑选一些有特性的点作为center,或者学习出来一些center呢?这就引出了K-means算法。

K-means算法要做的事情是:给定类别的个数,再对所有输入点进行clustering。

学习的目标是:所有点到其所在类别的中心的square distance的和最小。

这个cost function不太好优化,需要采用joint combinatorial-numerical optimization的方法,分two steps进行alternatingly optimize。

大概过程如下:

1)固定每个类别的center,“optimally partitioned”给每个点一个类别

2)固定每个点的类别,“optimally computed”重新优化每个类别的中心

交替进行1)2)直到cost function变化幅度小于某个阈值。

总结起来K-means的算法流程如下:

这里有个关键问题,就是算法到底能不能converge?

答案是肯定可以converage的。

通俗点儿解释:

1)上述two steps每进行完一轮,cost function(T+1)≤cost function(T),即cost function是每次都往更小的值去的。

  a. 固定每个类的center,显然只有让每个输入x选择与其最近的center作为其类别,最终得到的cost function才能是固定center条件下最小的

  b. 固定每个输入x的类别,由梯度等于0的条件来看,只有令每个类的中心等于该类所有点均值才能保证cost function在固定每个点类别的条件下是最小的

2)另外,由于cost function是square error,因此cost function的下限是0

综合1)2),由于每次都往好的方向去走,且最终的cost function有下限,所以最后肯定能收敛。

如果想解释的学术一些,我看过下面的blog:

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html

http://www.cnblogs.com/moondark/archive/2012/03/08/2385770.html

这种每次换一个方向优化的算法,EM算法中也用到了,又叫坐标上升算法:(http://blog.csdn.net/zouxy09/article/details/8537620)

个人觉得,要想更好的理解K-means算法,把EM算法的证明过程搞通(motivation是什么?Jensen不等式如何巧妙运用的?)是必须的。看过下面几篇日志不错:

theta:需要学习的参数
x:输入数据
z:隐变量
E step:
在上一轮迭代的theta基础上,求出隐含变量z的后验概率(后指的是x和theta)
进而获得似然函数L(theta)在隐含变量z的后验概率分布上的期望
M step:
已知期望的表达式,调整theta,期望最大化

其实,K-means算法中的隐含变量就是每个x所属的类别,上面提到过的日志中有一段对K-means和EM的阐述比较清晰,分享如下:

有点儿扯远了,再回到林这个课程中。

把RBFNet和K-means二者结合如下:

上面的过程没什么可说的,自己的paper中也用过类似的内容。

最后,林提到了几个action中的点:

1)K-means算法对初始值是敏感的

2)RBF中radial个数越大学习能力越强,同时也容易过拟合

【Radial Basis Function Network】林轩田机器学习技法的更多相关文章

  1. 【Neural Network】林轩田机器学习技法

    首先从单层神经网络开始介绍 最简单的单层神经网络可以看成是多个Perception的线性组合,这种简单的组合可以达到一些复杂的boundary. 比如,最简单的逻辑运算AND  OR NOT都可以由多 ...

  2. 【Matrix Factorization】林轩田机器学习技法

    在NNet这个系列中讲了Matrix Factorization感觉上怪怪的,但是听完第一小节课程就明白了. 林首先介绍了机器学习里面比较困难的一种问题:categorical features 这种 ...

  3. 【Deep Learning】林轩田机器学习技法

    这节课的题目是Deep learning,个人以为说的跟Deep learning比较浅,跟autoencoder和PCA这块内容比较紧密. 林介绍了deep learning近年来受到了很大的关注: ...

  4. 【Random Forest】林轩田机器学习技法

    总体来说,林对于random forest的讲解主要是算法概况上的:某种程度上说,更注重insights. 林分别列举了Bagging和Decision Tree的各自特点: Random Fores ...

  5. 【Decision Tree】林轩田机器学习技法

    首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所 ...

  6. 【Adaptive Boosting】林轩田机器学习技法

    首先用一个形象的例子来说明AdaBoost的过程: 1. 每次产生一个弱的分类器,把本轮错的样本增加权重丢入下一轮 2. 下一轮对上一轮分错的样本再加重学习,获得另一个弱分类器 经过T轮之后,学得了T ...

  7. 【Support Vector Regression】林轩田机器学习技法

    上节课讲了Kernel的技巧如何应用到Logistic Regression中.核心是L2 regularized的error形式的linear model是可以应用Kernel技巧的. 这一节,继续 ...

  8. 【Linear Support Vector Machine】林轩田机器学习技法

    首先从介绍了Large_margin Separating Hyperplane的概念. (在linear separable的前提下)找到largest-margin的分界面,即最胖的那条分界线.下 ...

  9. 【Dual Support Vector Machine】林轩田机器学习技法

    这节课内容介绍了SVM的核心. 首先,既然SVM都可以转化为二次规划问题了,为啥还有有Dual啥的呢?原因如下: 如果x进行non-linear transform后,二次规划算法需要面对的是d`+1 ...

随机推荐

  1. 如何在VMware ubuntu linux虚拟机中安装VMware tools

    VMware Tools可以实现在主机<->虚拟机之间拷贝文字.文件等功能.本文讲述如何在VMware ubuntu linux虚拟机中安装VMware tools. 测试环境: VMwa ...

  2. 《反脆弱》:软件业现成的鲁棒性(Robust)换了个说法变成了作者的发明,按作者的理论推导出许多可笑愚蠢的原则来

    本书作者名气比较大,写过<黑天鹅><随机漫步的傻瓜>等书,据称专门研究不确定度性.本书是他以前的书的内容的延续. 所谓的反脆弱,其实软件业有现成的名词鲁棒性(Robust)就是 ...

  3. 《孵化Twitter》:Twitter创始人勾心斗角史,细节披露程度令人吃惊

    本书详细讲述twitter的发展史.感觉基本上是一部创始人从朋友变敌人,勾心斗角的历史.Twitter本身的产品发展反而相对比较简单. 书中披露了许多email.谈话.会议的细节,作者说这些是数百个小 ...

  4. python 造轮子(一)——序列与字典

    虽然说造轮子很少用了,什么底层东西很少写,但是还是很想学扎实,还是好多东西还是的会,没有底层的支持,比较高级的库学起来还是很困难的. 序列的普遍用法: #-*-coding:utf8-*- #索引 l ...

  5. CentOS 6\7修改主机名

    1.CentOS6修改主机名 1)临时修改主机名: 显示主机名: oracle@localhost:~$ hostname localhost 修改 oracle@localhost:~$ sudo ...

  6. OpenCV自带dnn的Example研究(5)— segmentation

    这个博客系列,简单来说,今天我们就是要研究 https://docs.opencv.org/master/examples.html下的 6个文件,看看在最新的OpenCV中,它们是如何发挥作用的. ...

  7. django中介模型,CBV模型,及logging日志配制

    1.中介模型 中介模型,这个是在我们创建表格时,多对多添加的时候应用到的,通过制定ManyToManyField字段中的through参数来定义,为两者的关系新建一个中介class 为什么会产生这个中 ...

  8. 实现一个clone函数,对javascript中的5种数据类型进行值复制

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. iOS 蓝牙(GameKit CoreBluetooth)

    利用GameKit框架实现ios设备的蓝牙通讯,导入框架:#import <GameKit/GameKit.h>  , 注意: 此框架只能用于ios设置间蓝牙通讯 如今苹果开放了接口来实现 ...

  10. 使用Git操作码云

    一.安装并配置 .安装git 下载地址: 官方网站:https://git-for-windows.github.io/ 国内镜像:https://pan.baidu.com/s/1kU5OCOB#l ...