林轩田之机器学习课程笔记( distilling hidden features之radial basis function network)(32之30)

欢迎转载,可以关注博客:http://blog.csdn.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的公式:

gsvm(x)=sign(svαnyneγ||xxn||2+b)

一个理解是我们将数据投影到无限多维,然后找一条胖胖的边界进行切分。
一个理解是这就是一堆高斯函数的线性组合,这些高斯函数的中心点在支持向量这里。
高斯kernel也称之为RBF(radio basis function)kernel。
radio:表示我们计算的点x只与某些中心点有关,这里就表示只与支持向量有关
basis function:表示我们需要对最后的转换做的一些简单组合。这里是线性组合。
上面公式拆分下;
gn(x)=yneγ||xxn||2gsvm(x)=sign(svαngn(x)+b)

而RBF 网络则是上面的延伸,和普通网络对比如下:
这里写图片描述
区别就在于隐层不一样,普通的网络采用的内积方式,而RBF网络采用的是距离函数。最后都是进行一个线性组合。
RBF网络表示成:
h(x)=output(m=1MβmRBF(x,μm)+b)

所以这里主要是有两个参数需要决定,中心点和线性组合系数,当然还有选择什么样的中心函数,高斯函数,还是啥。以及最后的输出函数采用什么变化。
在SVM中,中心点采用的是支持向量,输出采用的是sign。

kernel:是一种相似性的转换,透过在z空间的内积进行计算。可以有各种各样的kernel函数。
RBF:也是一种相似性的转换,是透过某些中心点的距离来实现。
而高斯函数是两者的交集。
一般来说这种距离相似性的计算,离的越近,相似度应该越高

RBF网络学习算法

上面已经说到有两个比较核心的参数,哪些点作为中心点,转换之后的线性组合系数。
对于找中心点,一种方法是既然不好找,那就设置所有的点都是中心点。
1)中心点数量m等于点的数量。 μm=xm
2)相当于给每一个点都一票,进行投票。 βm=ym
3)最后根据这些票数计算结果,如果是一个二分类问题,如下:

h(x)=sign(m=1Nymeγ||xxm||2)

这个的意思就是给每个点都一票,新来的一个点算算到所有点的距离,距离越近转换之后结果越大。
由于高斯函数衰减比较快,所以通过高斯变换转换,越远的点计算基本为0。所以新的点结果基本依赖最近的一些点。
1. 当新来的点只依赖最近的一个点,这个算法就是最邻近算法。
2. 当新来的点依赖最近的k个点,就是knn算法了

这是一种很懒的做法,因为没有计算中心点,所有资料点都是中心嘛。

当不是采用的分类模型,而是回归模型呢?公式如下:

h(x)=m=1Nymeγ||xxm||2

这就是直接将数据通过高斯函数进行转换,然后进行线性回归。
线性回归的解我们知道是:
β=(ZZT)1ZTy

我们有这样的结论,当采用高斯变换的时候,且每笔资料不同,那么 Z 一定可逆。又因为,Z是一个对称的矩阵。那么:
β=Z1y

那么如果进行预测:
这里写图片描述
这样输入任意一个 xn 就会得到原来的数据。所以: Ein=0
这不是就容易过拟合么?
那怎么办?加正则化啊。
加上正则化之后,结果变成了:
β=(ZZT+λ)1ZTy

对比下kernel的ridge regression:
β=(K+λ)1y,Kkernel

那么再回忆下SVM:
这里写图片描述
SVM可以看做是减少中心点来达到正则化效果。所以要想算法更加的鲁棒可以选择少量的点作为中心点。

k-means算法

要找到一些点作为中心点,那么一个想法就是分群。说白了就是聚类嘛。这样的话我们需要聚类算法能满足以下几点:
1)将数据分成m类, S1,S2,S3......Sm ,一个点只属于一个类别。
2) 每一个类有一个中心点, um
3)在同一类中,我们希望 umx1x2
这样聚类的损失可以是:

Ein(u1,u2......um;S1,S1......Sm)=1Nn=1Nm=1M[xn=um]||xnum||2

我们这里是一个组合最佳化的问题。我们就先固定一组,然后优化另一个。
如果固定中心点。那么现在的问题就是如何分类:
1)那就是遍历数据和中心点的距离然后选择最近的中心点作为这个点群。
2)那么分群确定完毕,现在就是要确定中心点了,分好的群选取一个中心点。
这里写图片描述
新的群的中心点就是该群的点的均值。

交替的求解变量,这就是k-means算法。也可以参考:
http://blog.csdn.net/cqy_chen/article/details/71080478

那么求得了这些中心点,然后就可以放到RBF中,作为中心点。

这就是 k-means + RBF

k-means与RBF网络算法实践

上面介绍了k-means算法,看看实际怎么运行的:
这里写图片描述
经过了有限次的运行,会得到还不错的结果。
这里写图片描述
如果k-means挑选了比较合理的中心点,那么通过RBF还会得到不错的结果。
如果所有的点都是中心点呢?
这里写图片描述
一般不会采用所有的点都是中心点的RBF网络。

欢迎转载,可以关注博客:http://blog.csdn.net/cqy_chen

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将神经网络中的知识进行提取,是一种将模型的信息转化为更为简洁和易于理解形式的过程。 神经网络是一种由许多神经元组成的复杂计算模型,它们通过学习和调整权重来解决各种问题。然而,神经网络通常具有大量的参数和复杂的结构,这使得它们难以解释和应用到其他领域。因此,我们需要一种方法来提取和总结神经网络中的知识,以便更好地理解和应用这些模型。 在进行神经网络知识提取时,有几种常见的方法。一种常见的方法是使用可视化技术,如热力图、激活图和网络结构图等,来可视化网络中不同层的活动模式。这些可视化技术能够帮助我们发现网络中的模式和特征,并从中推断出网络的知识。 另一种方法是使用特征提取技术,如卷积神经网络(CNN)的滤波器、自动编码器的隐藏层和循环神经网络(RNN)的隐状态等,来提取网络学习到的重要特征。这些重要特征可以帮助我们更好地理解网络学习到的信息,并将其应用到其他问题中。 此外,还有一种被称为知识蒸馏的技术,它通过训练一个较小的模型来提取大型模型中的知识。知识蒸馏通过引入目标函数和额外的训练策略,使小模型能够学习到大模型中的重要知识,并在不损失太多性能的情况下将其应用到实际问题中。 总而言之,提取神经网络中的知识是一项重要任务,它能够帮助我们更好地理解和应用这些复杂的模型。通过可视化、特征提取和知识蒸馏等方法,我们能够从神经网络中提取出有用的信息,并将其应用到其他领域或解决其他问题中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值