神经网络

【模型】一篇入门之-PNN概率神经网络

作者 : 老饼 发表日期 : 2023-03-25 00:20:45 更新日期 : 2024-10-19 09:13:53
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



概率神经网络PNN全称为ProbabilisticNeuralNetwork,是一种用于样本类别判别的神经网络

本文讲解概率神经网络PNN的原理,以及PNN的拓扑结构和数学表达式,并展示一个PNN的代码实现

通过本文,可以了解PNN概率神经网络是什么,以及如何使用PNN神经网络来对样本类别进行判别




   01. 概率神经网络PNN是什么    




本节讲解概率神经网络PNN的思想与原理,快速了解PNN是什么




      什么是概率神经网络PNN      


概率神经网络PNN全称为Probabilistic Neural Networks,
它是D.F.Specht在1989年提出的一种径向基神经网络,用于解决模式识别(分类)问题
 PNN解决类别预测问题的思路如下:
它假设x与任何一个已有样本中相同的概率都服从正态分布
 概率神经网络PNN的概率原理
则易知,样本认为样本与它相同的概率为 :   
再以所有历史样本的概率评估作为评分,并以k类历史样本的评分占比作为样本属于k类的概率
 则PNN评估样本x属于类别k的概率为:
 
由于上式的分母对于所有k都是一样的,因此,在类别判别时可以只用分子部分
 即PNN判别函数为:
 
在样本判别时,只需要比较哪类样本的判别值大,就认为样本x属于哪个类别





       PNN的拓扑结构与模型表达式         


 PNN神经网络一般用如下的三层神经网络的形式来表示
 PNN概率神经网络的拓扑图如下:
 PNN概率神经网络的拓扑图
 备注:PNN的拓扑结构在此不作讲解,自行结合上述原理与下述数学表达式进行理解
 PNN的模型表达式如下:
 
                     
                                                 
                                             
其中,
 :输入层与隐层的连接权重                                      
                                              的第i行代表第i个RBF隐节点的中心,实际上就是第i个历史样本的x 
                     :隐层的阈值,它代表隐节点RBF的宽度 ,是一个预设的超参数
 :隐层与输出层的权重矩阵                                      
                                              第j个样本属于第i类时,则为1,代表第j个隐节点与第i个输出连接
                                         :竞争函数,它将向量最大的值置为1,其余置0                                           
  PNN只需要把训练样本的 X保存为 , y 保存为,并设置好隐层的阈值 的值就可以了
来了新样本,只要按上述表达式来计算预测值就可以了,即它是一个生成模型,整个构建过程不需任何训练
✍️PNN计算-例子讲解
以   为例
一、先计算径向基的值                                                                                 
                                  
二、计算判别值                                                                                            
 
三、计算竞争后的类别结果                                                                          
 







   02. 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的代码运行结果
可以看到,PNN预测的样本类别Tc与真实类别Tc一致,说明模型是有效的






好了,以上就是PNN概率神经网络的全部内容了~







 End 






联系老饼