RBF的直观介绍

RBF具体原理,网络上很多文章一定讲得比我好,所以我也不费口舌了,这里只说一说对RBF网络的一些直观的认识

1 RBF是一种两层的网络

是的,RBF结构上并不复杂,只有两层:隐层和输出层。其模型可以数学表示为:
y j = ∑ i = 1 n w i j ϕ ( ∥ x − u i ∥ 2 ) , ( j = 1 , … , p ) y_j = \sum_{i=1}^n w_{ij} \phi(\Vert x - u_i\Vert^2), (j = 1,\dots,p)yj​=i=1∑n​wij​ϕ(∥x−ui​∥2),(j=1,…,p)
【RBF预测】基于RBF神经网络实现预测matlab源码_RBF神经网络
【RBF预测】基于RBF神经网络实现预测matlab源码_RBF神经网络_02

2 RBF的隐层是一种非线性的映射

RBF隐层常用激活函数是高斯函数:
ϕ ( ∥ x − u ∥ ) = e − ∥ x − u ∥ 2 σ 2 \phi(\Vert x - u\Vert) = e^{-\frac{\Vert x-u\Vert^2}{\sigma^2}}ϕ(∥x−u∥)=e−σ2∥x−u∥2​

3 RBF输出层是线性的

4 RBF的基本思想是:将数据转化到高维空间,使其在高维空间线性可分

RBF隐层将数据转化到高维空间(一般是高维),认为存在某个高维空间能够使得数据在这个空间是线性可分的。因此啊,输出层是线性的。这和核方法的思想是一样一样的。下面举个老师PPT上的例子:
【RBF预测】基于RBF神经网络实现预测matlab源码_预测模型_03

上面的例子,就将原来的数据,用高斯函数转换到了另一个二维空间中。在这个空间里,XOR问题得到解决。可以看到,转换的空间不一定是比原来高维的。

RBF学习算法

【RBF预测】基于RBF神经网络实现预测matlab源码_RBF神经网络_04

对于上图的RBF网络,其未知量有:中心向量u i u_iui​,高斯函数中常数σ \sigmaσ,输出层权值W WW。
学习算法的整个流程大致如下图:
【RBF预测】基于RBF神经网络实现预测matlab源码_预测模型_05

具体可以描述为:

  1. 利用kmeans算法寻找中心向量u i u_iui​
  2. 利用kNN(K nearest neighbor)rule 计算 σ \sigmaσ
    σ i = 1 K ∑ k = 1 K ∥ u k − u i ∥ 2 \sigma_i = \sqrt{\frac{1}{K}\sum_{k=1}^K \Vert u_k - u_i\Vert^2}σi​=K1​k=1∑K​∥uk​−ui​∥2​
  3. W WW可以利用最小二乘法求得

Lazy RBF

可以看到原来的RBF挺麻烦的,又是kmeans又是knn。后来就有人提出了lazy RBF,就是不用kmeans找中心向量了,将训练集的每一个数据都当成是中心向量。这样的话,核矩阵Φ \PhiΦ就是一个方阵,并且只要保证训练中的数据是不同的,核矩阵Φ \PhiΦ就是可逆的。这种方法确实lazy,缺点就是如果训练集很大,会导致核矩阵Φ \PhiΦ也很大,并且要保证训练集个数要大于每个训练数据的维数。
【RBF预测】基于RBF神经网络实现预测matlab源码_预测模型_06

MATLAB实现RBF神经网络

下面实现的RBF只有一个输出,供大家参考参考。对于多个输出,其实也很简单,就是W WW变成了多个,这里就不实现了。

demo.m 对XOR数据进行了RBF的训练和预测,展现了整个流程。最后的几行代码是利用封装形式进行训练和预测。

%读取数据
load gqpin.txt;
load gqpout.txt;
data=[gqpin gqpout];
%训练预测数据
data_train=data(1:261,:);
data_test=data(162:261,:);
 
input_train=data_train(:,1:5)';
output_train=data_train(:,6)';
 
input_test=data_test(:,1:5)';
output_test=data_test(:,6)';
 
 
error2=y2-y1;
figure(1)
plot(y1,'b-');
hold on
plot(y2,'r:');
legend('Training Data','CDE-RBF Output')
xlabel('采样序列');
ylabel('转化速率')
figure(2)
plot(error2)
title('输出误差');
xlabel('采样序列');
 
 
 
 
 

【RBF预测】基于RBF神经网络实现预测matlab源码_预测模型_07

【RBF预测】基于RBF神经网络实现预测matlab源码_RBF神经网络_08

完整代码或者代写私信QQ1575304183