本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
目录
- 一、经典RBF神经网络
- 1.1.经典径向基神经网络是什么
- 1.2.经典径向基神经网络-代码与示例
- 二、广义回归神经网络GRNN
- 2.1.广义回归神经网络是什么
- 2.2.广义回归神经网络是什么-代码与示例
- 三、概率神经网络PNN
- 3.1.概率神经网络是什么
- 3.2.概率神经网络是什么-代码与示例
RBF神经网络指的是用RBF曲线来构成的神经网络模型,
常见的RBF神经网络包括径向基神经网络、概率神经网络、广义回归神经网络等等。
下面我们介绍这几种常见的RBF神经网络。
一、经典RBF神经网络
1.1.经典径向基神经网络是什么
经典径向基神经网络的思想很纯粹,如下
可以看到,经典径向基神经网络在各个数据点都生成一个径向基。每个径向基的宽度是预设的,然后再求解每个径向基的高度,使得最后所有径向基叠加后能拟合目标曲线。可知,经典径向基神经网络是纯粹的曲线拟合,就是仅从数学角度去使用径向基函数来拟合目标曲线。
1.2.经典径向基神经网络-代码与示例
在matlab中使用newrbe来实现一个径向基神经网络,具体示例如下:
%------代码说明:用newrbe构建一个径向基神经网络 -----------------
% 来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2018a
%-------------------------------------------------------------------%
%----数据准备----
x = [-2,-1,0,1,2;-6,-2,0,3,8]; % 输入数据
y = [3,2,3,1,2]; % 输出数据
%----网络训练----
net = newrbe(x, y, 0.5); % 以X,Y建立径向基网络,目标误差为0.01,径向基的宽度参数spread=0.5
py = sim(net,x) % 用建好的网络进行预测,这里的x是要用来进行预测的输入
% ----打印结果----------
err_rate = mean(abs(py-y)./abs(y)) % 计算相对误差占比
plot(1:length(y),y,'*',1:length(y),py,'o') % 绘制结果,x轴代表样本
legend('原始数据的y','网络预测的y') % 添加图例
运行结果如下:
可以看到,网络的预测值与真实值完全一致,
这并非偶然,因为本例用于预测的数据就是训练数据,而newrbe在训练数据上是0误差的
二、广义回归神经网络GRNN
2.1.广义回归神经网络是什么
广义回归神经网络General Regression Neural Network也是径向基神经网络的一种,广义回归使用所有历史样本点来综合评估当前样本点。类似于投票的思想,即所有历史样本点都给出当前样本点与自己相似的概率,然后得到最终的综合评估,如下:
y
=
∑
i
y
i
∗
p
i
y =\sum\limits_{i}y_i*p_i
y=i∑yi∗pi
其中,Pi的计算为:
p
^
i
=
exp
(
−
a
2
(
x
−
x
i
)
2
)
p
i
=
p
j
/
∑
j
P
j
\hat{p}_i = \exp(-a^2(x-x_i)^2) \\p_i =p_j/ \sum\limits_{j}P_j
p^i=exp(−a2(x−xi)2)pi=pj/j∑Pj
pi的意义如下图所示:
它假设x与任何一个已有样本中 xi 相同的概率都服从正态分布,然后再进行归一化就得到pi的计算公式。
相比经典RBF,广义回归更具解释性。
2.2.广义回归神经网络是什么-代码与示例
在matlab中使用newgrnn来实现一个广义回归神经网络,具体示例如下:
%代码说明:径向基newgrnn的matlab工具箱使用Demo
%来自《老饼讲解神经网络》www.bbbdata.com ,matlab版本:2014b
%-----------------------------------------------------
%----数据准备----
x1 = 1:0.2:10;
x2 = -5:0.2:4;
X = [x1;x2]; % 输入数据,注意中间是分号
Y = sin (X(1,:))+X(2,:); % 输出数据
%----网络训练----
net = newgrnn(X,Y); % 网络建立与训练
simY = sim(net, X); % 用建好的网络拟合原始数据
%----结果对比----
figure(1);
t = 1:size(Y,2);
plot(t,Y,'*',t,simY,'r')
三、概率神经网络PNN
3.1.概率神经网络是什么
概率神经网络ProbabilisticNeuralNetwork是广义回归神经网络的拓展,广义回归神经网络用于数值预测,而概率神经网络则用于类别预测。
概率神经网络用于类别预测,有多少个类别就有多少个输出,概率神经网络仅仅是将广义回归神经网络再加上一个compet运算,即哪个输出最大就置1,其余置0。
3.2.概率神经网络是什么-代码与示例
在matlab中使用newgrnn来实现一个广义回归神经网络,具体示例如下:
% 训练数据
P = [1 2 3 4 5 6 7]; % 输入数据
Tc = [1 2 3 2 2 3 1]; % 输出数据:类别编号
T = ind2vec(Tc); % 将类标转换为onehot编码格式
%设计一个PNN神经网络,并测试
net = newpnn(P,T); % 生成一个概率神经网络
Y = sim(net,P) % 用网络进行预测
Yc = vec2ind(Y) % 将预测结果转为类别编号
运行结果如下:
以上就是三种常见的RBF神经网络的介绍了
相关链接:
《老饼讲解-机器学习》:老饼讲解-机器学习教程-通俗易懂
《老饼讲解-神经网络》:老饼讲解-matlab神经网络-通俗易懂
《老饼讲解-神经网络》:老饼讲解-深度学习-通俗易懂