老饼讲解:一步一步上手学习
前面我们已经详细讲解了RBF神经网络用插值法、OLS法求解的原理了,这里我们再简单的来进行总结一下RBF神经网络的训练原理,作为一个总结与升华。
前面我们已经说了,RBF神经网络的求解算法常见的有三种,如下:
【1】插值法(matlab中的newrbe函数)
【2】OLS法(matlab中的newrb函数)
【3】Kmeans法(matlab不提供)
下面我们来总结性说说三个算法,来加深对三个算法的理解。
插值法就是最基础的,它以每个样本作为RBF中心,有多少个样本就生成多少个RBF,然后再依靠线性方程组就能求解出外层的权重和阈值。插值法的特点是,它必定能拟合所有训练样本点,也就是训练误差为0,但它的缺点就是RBF个数太多,导致模型会比较庞大,同时也会较容易过拟合。
好了,既然插值法的RBF个数会过多,那么最重要的任务就是给它减肥,所以就有了OLS法。OLS法就是基于插值法的基础上,退而求其次,在尽量满足一定误差的前提下,只挑选部分隐节点来进行建模:

OLS法采用逐步添加隐节点的方法,每次都选择能令误差下降最大的隐节点添加到网络中,最后,当满足误差要求时就退出训练,这样最终得到的模型就会远远地减少模型的隐节点个数。所以,OLS是实际中最经典、最实用、最常用的RBF神经网络的训练方法。
前面我们并没有详说RBF的kmeans法,事实上只要了解了插值法,也很容易明白kmeans法。
插值法的训练误差为0,已经很完美地解决了样本点的拟合问题,所以kmeans也是为了解决RBF过多的问题:

kmeans法解决RBF过多问题的方法是,先对样本用kmeans聚类算法进行聚类,得到k个类别中心,然后再以这k个类别作为中心来生成k个RBF,这样最后就只有k个隐节点了。当然,这k个RBF可能并无法完全拟合y,所以它改用最小二乘法来求解外层的,也就是让输出尽量迫近真实y就可以了。
kmeans只是众多聚类算法中的一种,也可以改用其它聚类算法,但这里我们就不详谈了,毕竟OLS的解决方案就已经很好了,kmeans算法大家了解一下也就可以了,平时用得较少,喜欢研究的自己去研究好了。
总的来说,插值法是RBF神经网络的基础训练方法,而OLS法是日常使用时所使用的方法,kmeans法则可以当成一种课外拓展了解一下。相信到这里,大家对RBF模型的求解,就算不是了解得很彻底,但也心中有数了,作为入门也就差不多了,已经完全能让我们知道RBF神经网络的训练是怎么一回事了。
评论