本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
概率神经网络PNN全称为ProbabilisticNeuralNetwork,是一种用于样本类别判别的神经网络
本文讲解概率神经网络PNN的原理,以及PNN的拓扑结构和数学表达式,并展示一个PNN的代码实现
通过本文,可以了解PNN概率神经网络是什么,以及如何使用PNN神经网络来对样本类别进行判别
本节讲解概率神经网络PNN的思想与原理,快速了解PNN是什么
什么是概率神经网络PNN
概率神经网络PNN全称为Probabilistic Neural Networks,
它是D.F.Specht在1989年提出的一种径向基神经网络,用于解决模式识别(分类)问题
PNN解决类别预测问题的思路如下:
它假设x与任何一个已有样本中相同的概率都服从正态分布
则易知,样本认为样本与它相同的概率为 :
再以所有历史样本的概率评估作为评分,并以k类历史样本的评分占比作为样本属于k类的概率
则PNN评估样本x属于类别k的概率为:
由于上式的分母对于所有k都是一样的,因此,在类别判别时可以只用分子部分
即PNN判别函数为:
在样本判别时,只需要比较哪类样本的判别值大,就认为样本x属于哪个类别
PNN的拓扑结构与模型表达式
PNN神经网络一般用如下的三层神经网络的形式来表示
PNN概率神经网络的拓扑图如下:
备注:PNN的拓扑结构在此不作讲解,自行结合上述原理与下述数学表达式进行理解
PNN的模型表达式如下:
其中,
:输入层与隐层的连接权重
的第i行代表第i个RBF隐节点的中心,实际上就是第i个历史样本的x
:隐层的阈值,它代表隐节点RBF的宽度 ,是一个预设的超参数
:隐层与输出层的权重矩阵
第j个样本属于第i类时,则为1,代表第j个隐节点与第i个输出连接
:竞争函数,它将向量最大的值置为1,其余置0
PNN只需要把训练样本的 X保存为 , y 保存为,并设置好隐层的阈值 的值就可以了
来了新样本,只要按上述表达式来计算预测值就可以了,即它是一个生成模型,整个构建过程不需任何训练
✍️PNN计算-例子讲解
以 为例
一、先计算径向基的值
二、计算判别值
三、计算竞争后的类别结果
本节展示如何实现一个PNN概率神经网络用于类别预测
PNN概率神经网络-代码实现
在matlab可以使用newpnn来构建一个PNN概率神经网络
具体代码实现如下:
% matlab工具箱实现概率神经网络(newpnn)进行类别预测(2018a版matlab实测已跑通)
% 训练数据
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) % 将预测结果转为类别编号 ·
运行结果如下:
可以看到,PNN预测的样本类别Tc与真实类别Tc一致,说明模型是有效的
好了,以上就是PNN概率神经网络的全部内容了~
End