
RBF网络和极限学习机比较类似,不需要通过反向传播(BP)算法计算模型参数,因为RBF神经网络只有最后一个线性层有可以训练的参数。
首先,我们可以看一个常见的RBF网络图片,可以看到 为待预测的输入, 是一组激活函数, 是一组可以训练的参数。
首先,我们讨论一下如何训练最后一层的参数 。假设将RBF神经网络最后一层前面所有的部分看做特征提取模块,那么最后一层实际上就是基于一组特征 拟合一个线性模型。既然是拟合线性模型,那我们使用线性代数课上的最小二乘法做一下矩阵运算即可,完全不需要使用梯度法计算 。
随后,我们讨论一下如何生成特征提取模块 。RBF的特征提取模块是一组RBF函数。具体来说,一个参数为 的RBF函数 可以用下面公式表示。
在该公式中, 参数是RBF网络的超参数,因此该参数是不需要学习的。每个RBF模块可以设置一个超参数 ,不过一般来说,所有RBF模块 共享一个超参数 即可。
而对于唯一剩余的一个参数 ,RBF网络也并不是采取学习的方式生成这个参数。对于RBF网络来说,仅仅需要从数据集 中随机采一个数据点 作为 即可。
RBF网络最大的优势是训练速度非常快,因为模型的参数可以直接通过矩阵运算和随机采样得到。不过,细心的同学可能已经发现了,RBF网络实际上和使用RBF Kernel的Kernel Ridge Regression没有区别。实际上,RBF网络是历史遗留算法,因为RBF Network的发明时间是1988年,而Kernel SVM则是上世纪九十年代以后的产物了。因此,目前大多数的算法包(例如scikit-learn)都内置了Kernel SVM和Kernel Ridge Regression,却并没有内置RBF Network。
