林轩田之机器学习课程笔记( distilling hidden features之radial basis function network)(32之30)
欢迎转载,可以关注博客:http://blog.****.net/cqy_chen
深度学习书籍推荐:https://item.jd.com/12128543.html
深度学习课程推荐:https://www.coursera.org/learn/neural-networks/home/welcome
TensorFlow:http://www.tensorfly.cn/ http://www.tensorflow.org/
题目可能不全,因为有字数限制,不好意思,可以参考:
https://www.csie.ntu.edu.tw/~htlin/course/ml15fall/
概要
上节讲到了深度学习,就是神经网络的延伸,神经网络的一个困难点就是初始值的设定,介绍了denoising的自动编码机。本节将介绍RBF的网络结构。
RBF网络假设空间
RBF在SVM中的kernel转换已经有提到,回忆SVM的公式:
一个理解是我们将数据投影到无限多维,然后找一条胖胖的边界进行切分。
一个理解是这就是一堆高斯函数的线性组合,这些高斯函数的中心点在支持向量这里。
高斯kernel也称之为RBF(radio basis function)kernel。
radio:表示我们计算的点x只与某些中心点有关,这里就表示只与支持向量有关
basis function:表示我们需要对最后的转换做的一些简单组合。这里是线性组合。
上面公式拆分下;
而RBF 网络则是上面的延伸,和普通网络对比如下:
区别就在于隐层不一样,普通的网络采用的内积方式,而RBF网络采用的是距离函数。最后都是进行一个线性组合。
RBF网络表示成:
所以这里主要是有两个参数需要决定,中心点和线性组合系数,当然还有选择什么样的中心函数,高斯函数,还是啥。以及最后的输出函数采用什么变化。
在SVM中,中心点采用的是支持向量,输出采用的是sign。
kernel:是一种相似性的转换,透过在z空间的内积进行计算。可以有各种各样的kernel函数。
RBF:也是一种相似性的转换,是透过某些中心点的距离来实现。
而高斯函数是两者的交集。
一般来说这种距离相似性的计算,离的越近,相似度应该越高
RBF网络学习算法
上面已经说到有两个比较核心的参数,哪些点作为中心点,转换之后的线性组合系数。
对于找中心点,一种方法是既然不好找,那就设置所有的点都是中心点。
1)中心点数量m等于点的数量。
2)相当于给每一个点都一票,进行投票。
3)最后根据这些票数计算结果,如果是一个二分类问题,如下:
这个的意思就是给每个点都一票,新来的一个点算算到所有点的距离,距离越近转换之后结果越大。
由于高斯函数衰减比较快,所以通过高斯变换转换,越远的点计算基本为0。所以新的点结果基本依赖最近的一些点。
1. 当新来的点只依赖最近的一个点,这个算法就是最邻近算法。
2. 当新来的点依赖最近的k个点,就是knn算法了
这是一种很懒的做法,因为没有计算中心点,所有资料点都是中心嘛。
当不是采用的分类模型,而是回归模型呢?公式如下:
这就是直接将数据通过高斯函数进行转换,然后进行线性回归。
线性回归的解我们知道是:
我们有这样的结论,当采用高斯变换的时候,且每笔资料不同,那么
那么如果进行预测:
这样输入任意一个
这不是就容易过拟合么?
那怎么办?加正则化啊。
加上正则化之后,结果变成了:
对比下kernel的ridge regression:
那么再回忆下SVM:
SVM可以看做是减少中心点来达到正则化效果。所以要想算法更加的鲁棒可以选择少量的点作为中心点。
k-means算法
要找到一些点作为中心点,那么一个想法就是分群。说白了就是聚类嘛。这样的话我们需要聚类算法能满足以下几点:
1)将数据分成m类,
2) 每一个类有一个中心点,
3)在同一类中,我们希望
这样聚类的损失可以是:
我们这里是一个组合最佳化的问题。我们就先固定一组,然后优化另一个。
如果固定中心点。那么现在的问题就是如何分类:
1)那就是遍历数据和中心点的距离然后选择最近的中心点作为这个点群。
2)那么分群确定完毕,现在就是要确定中心点了,分好的群选取一个中心点。
新的群的中心点就是该群的点的均值。
交替的求解变量,这就是k-means算法。也可以参考:
http://blog.****.net/cqy_chen/article/details/71080478
那么求得了这些中心点,然后就可以放到RBF中,作为中心点。
这就是 k-means + RBF
k-means与RBF网络算法实践
上面介绍了k-means算法,看看实际怎么运行的:
经过了有限次的运行,会得到还不错的结果。
如果k-means挑选了比较合理的中心点,那么通过RBF还会得到不错的结果。
如果所有的点都是中心点呢?
一般不会采用所有的点都是中心点的RBF网络。
欢迎转载,可以关注博客:http://blog.****.net/cqy_chen