RBF Network
前面的一篇SVM中,最后的分割函数:
Gaussian函数还有另外一个叫法——径向基函数,这是因为这个base function的结果只和计算这个x和中心点xn的距离有关,与其他的无关。
从其他方面来看SVM,先构造一个函数:
g(x) = y_nexp(-γ|x - x_n|^2) 指数求出来的其实就是x点和中心点的相似度,相似度越高,那么=晚y这个方向投票的票数就会越多。不同的g(x)有不同的权重,他们的线性组合就成了SVM,g(x)函数称为是radial function。所以Gaussian SVM就是把一些radial function联合起来做linear aggregation。
RBF Network就是SVM的延伸,目的就是找到所有radial hypotheses的linear aggregation,得到更好的网络模型。
可以看到这两种网络其实很类似,Neural Network的隐藏层是权值和数据做內积非线性转换再uniform的组合得到最后的输出,而对于RBF Network隐藏层是求高斯距离在做aggregation的方法。比较大的不同点就在于hidden层的不同了。
β就是每一个radial function的权值,μ就是中心点,m为中心点的个数,主要的,对比一下之前的SVM,β就是αy,μ就是支持向量。由于是一个分类问题,所以最后的output function就是sign函数了。
之前讲过,一个核函数不是随便乱选的,要满足两个条件:对称,半正定。对于SVM里面的核函数,其实ius把当前的数据提升到某一个很高很高的维度,然后做切片把数据分出来,polynomial function也是一样的,只不过是有限维度的。 而RBF其实就是在当前的空间做相似度处理,而那些kernel其实就是转换到z空间来计算核函数以表征两个向量的相似度。所以RBF和kernel都是衡量相似度的方式。虽然SVM和RBF Network都很相似,甚至可以说最后的决策函数基本一致的,但是他们的学习过程是很不一样的,一个是直接x空间,一个是转换到z空间。
衡量相似性并不止一种RBF方法,余弦相似度这些也可以衡量向量之间的相似度。
回过头来思考一下SVM,其实支持向量机就是先通过凸优化的一些方法找到有投票权利的点,之后给出相应的权值,最后决策就是这些有投票权利的点进行决策;对于其他线性模型,其实主要的不同就是他们每一个点都有投票的权利,这就导致很远的点都会干扰到边界。而RBF Network事实上做的事情和SVM有点像,因为RBF函数是指数增长,如果这个点很远的话会非常小,近乎就是0了,所以也起到了弱化远的点投票权,强化近的点投票权的能力。
RBF Network Learning
RBF Network的决策函数:
μ就是中心点,中心点是自己选择的。有一种选择中心点的方法,就是所有的点都作为中心点,那么每一个样本对于预测都会有影响,β就是影响的程度。如果影响的程度都是一样的,那么就是1了,β = 1*y,最后相乘做uniform aggregation之后sign得到结果。这种我们称为full RBF Network。
这个时候,full RBF Network就可以表示为:
这是一个指数函数,距离越远,那么衰减的就越快,x与中心点的距离越近那么就越大,距离越远就越小。也就是说,如果我们的样本点是N个,那么起了关键作用的一般就是最近的那个点而已,当然,不一定是最近的一个点,可以是最近的K个点,用这k个点来代替N个点,当前的点周围最近的k个点哪个类别最多,那么这个当前这个点就是属于哪个类别的。这种算法就叫K近邻算法。