精华内容
下载资源
问答
  • 概率神经网络

    千次阅读 2017-04-03 18:14:24
    概率神经网络(Probabilistic Neural Networks, PNN)可以视为是径向基神经网络的一种,在模式分类问题中得到了广泛应用。 PNN在RBF网络的基础上,融合了密度函数估计和贝叶斯决策理论,在某些易满足的条件下,以...
    概率神经网络(Probabilistic Neural Networks, PNN)可以视为是径向基神经网络的一种,在模式分类问题中得到了广泛应用。
    PNN在RBF网络的基础上,融合了密度函数估计和贝叶斯决策理论,在某些易满足的条件下,以PNN实现的判别边界渐进地逼近贝叶斯最佳判定面。
    概率神经网络

    概率神经网络的结构:(径向基层极为隐含层)
    概率神经网络

    PNN网络的优点:
    (1)训练容易,收敛速度快,从而非常适用于实时处理
    (2)可以实现任意的非线性逼近,用PNN网络所形成的判决曲面与贝叶斯最优准则下的曲面非常接近
    (3)只要有充足的样本资源,概率神经网络就能收敛到贝叶斯分类器,没有BP网络的局部最小值问题
    (4)扩充性能好,网络的学习过程简单,增加或减少类别模式时不需要重新进行长时间的训练学习
    展开全文
  • 概率神经网络(PNN)

    万次阅读 多人点赞 2017-07-27 17:24:14
    概率神经网络 一、概率神经网络简介  注意:以下内容参考贝叶斯决策理论。 二、概率神经网路的网络结构(PNN) 注意:上边的求和层的神经元个数与模式分类的个数相等。也就是说只有对应类别的样本(隐藏...
    概率神经网络
    一、概率神经网络简介
           注意:以下内容参考贝叶斯决策理论。


    二、概率神经网路的网络结构(PNN)



    总结:
            1、输入层接收样本的值,神经元个数与输入向量长度相等。
            2、隐藏层为径向基层,每个神经元对应一个中心(对应一个样本数据)。
            3、输入数据分为了i类,因为PNN就是用来分类的,就是先用样本训练网络,然后输入数据,用此网络来鉴别,是属于哪一类数据。
            4、上式Xij其实与RBF神经网络一致,就是求每个输入与样本的欧式距离,只不过此隐藏层把数据分为了i个类,并且设第i个类有j个数据。
            5、然后下图可以看出,求和层的神经元个数与数据分类的个数相等,此求和层求得上式中,每类数据的平均值。
            6、然后比较每一类平均值的大小,把此数据分类到值最大的那一类。
            7、下文中,提出在实际计算中,用来理解的公式与实际计算中公式不同,
           

          注意:上边的求和层的神经元个数与模式分类的个数相等。也就是说只有对应类别的样本(隐藏层的神经元)连接,不与其他无关的样本连接。

    三、概率神经网络的优点




    展开全文
  • 【机器学习】概率神经网络(PNN)的python实现

    万次阅读 多人点赞 2018-12-12 16:32:23
    【机器学习】概率神经网络(PNN)的python实现一、概率神经网络原理1.1、贝叶斯决策1.2、PNN的网络结构二、概率神经网路的优点与不足2.1、优点(参考资料【1】)2.2、缺点三、PNN的python实现参考资料 一、概率神经...

    一、概率神经网络原理

    概率神经网络(Probabilistic Neural Network)的网络结构类似于RBF神经网络,但不同的是,PNN是一个前向传播的网络,不需要反向传播优化参数。这是因为PNN结合了贝叶斯决策,来判断测试样本的类别。

    1.1、贝叶斯决策

    假设对于测试样本xx,共有mm中类别可能{w1, ,wm}\{ {w_1}, \cdots ,{w_m}\},则判断样本类别的贝叶斯决策是:

    max{p(w1x),p(w2x), ,p(wmx)}\max \{ p({w_1}\left| x \right.),p({w_2}\left| x \right.), \cdots ,p({w_m}\left| x \right.)\}

    1.2、PNN的网络结构

    要介绍上述概率密度p(wix)p({w_i}\left| x \right.)如何计算,首先要介绍PNN的网络结构。
    在这里插入图片描述
    本博文的PNN结构图参考资料【2】,图中样本特征维度为3,由上图可知,PNN的网络结构分为四层:输入层,模式层、求和层、输出层。假设训练样本为{trx1,trx2, ,trxl}\left\{ {tr{x_1},tr{x_2}, \cdots ,tr{x_l}} \right\},其中样本个数为ll。PNN各层的作用于相互之间关系描述如下:
    输入层:输入测试样本,节点个数等于样本的特征维度。
    模式层:计算测试样本与训练样本中的每一个样本的Gauss函数的取值,节点个数等于训练样本的个数。
    测试样本xx与第jj个训练样本trxjtrx_j之间的Gauss函数取值(对于测试样本xx,从第jj个模式层节点输出的数值)为:
    Gauss(xtrxj)=extrxj2δ2Gauss(x - tr{x_j}) = {e^{ - \frac{{\left\| {x - tr{x_j}} \right\|}}{{2{\delta ^2}}}}}
    其中δ\delta是模型的超参数(机器学习模型中,超参数是在开始学习过程之前设置值的参数),需要提前设定,也可以通过寻优算法(GAQGAPSOQPSO等)获得。
    求和层:求取相同类别测试样本对应的模式层节点输出之和,节点个数等于训练样本的类别个数。
    输出层:对上述求和层输出进行归一化处理求取测试样本对应不同类别的概率,根据概率大小判断测试样本的类别,节点个数为1。

    二、概率神经网路的优点与不足

    2.1、优点(参考资料【1】)

    收敛快:没有模型参数需要训练,收敛速度快。
    非线性逼近:可以实现任意的非线性逼近,用PNN网络形成的判决曲面与贝叶斯最优准则下的曲面非常接近。
    容错性高:模型层采用径向基函数(Gauss函数),考虑了不同类别样本之间的相互影响,对异常数据不敏感。

    2.2、缺点

    计算复杂度高:每个测试样本要与全部的训练样本进行计算。
    空间复杂度高:因为没有模型参数,对于测试样本全部的训练样本都要参与计算,因此需要存储全部的训练样本。

    三、PNN的python实现

    完整python代码与样本地址:https://github.com/shiluqiang/PNN_python
    本博文采用的数据集有两个类别,用全部的数据集作为训练集,数据集中的一半作为测试集,Gauss函数中的δ\delta设为0.1。
    首先,对测试集和训练集进行归一化处理。

    def Normalization(data):
        '''样本数据归一化
        input:data(mat):样本特征矩阵
        output:Nor_feature(mat):归一化的样本特征矩阵
        '''
        m,n = np.shape(data)
        Nor_feature = copy.deepcopy(data) 
        sample_sum = np.sqrt(np.sum(np.square(data),axis = 1))   
        for i in range(n):
            Nor_feature[:,i] = Nor_feature[:,i] / sample_sum        
        return Nor_feature
    

    然后,计算测试集样本与训练集样本的欧氏距离。

    def distance(X,Y):
        '''计算两个样本之间的距离
        '''
        return np.sqrt(np.sum(np.square(X-Y),axis = 1))
    def distance_mat(Nor_trainX,Nor_testX):
        '''计算待测试样本与所有训练样本的欧式距离
        input:Nor_trainX(mat):归一化的训练样本
              Nor_testX(mat):归一化的测试样本
        output:Euclidean_D(mat):测试样本与训练样本的距离矩阵
        '''
        m,n = np.shape(Nor_trainX)
        p = np.shape(Nor_testX)[0]
        Euclidean_D = np.mat(np.zeros((p,m)))
        for i in range(p):
            for j in range(m):
                Euclidean_D[i,j] = distance(Nor_testX[i,:],Nor_trainX[j,:])[0,0]
        return Euclidean_D
    

    其次,计算上述距离矩阵对应的Gauss函数值矩阵。

    def Gauss(Euclidean_D,sigma):
        '''测试样本与训练样本的距离矩阵对应的Gauss矩阵
        input:Euclidean_D(mat):测试样本与训练样本的距离矩阵
              sigma(float):Gauss函数的标准差
        output:Gauss(mat):Gauss矩阵
        '''
        m,n = np.shape(Euclidean_D)
        Gauss = np.mat(np.zeros((m,n)))
        for i in range(m):
            for j in range(n):
                Gauss[i,j] = math.exp(- Euclidean_D[i,j] / (2 * (sigma ** 2)))
        return Gauss
    

    再次,计算每个测试样本对应于每个类别概率和训练样本的类别种类。

    def Prob_mat(Gauss_mat,labelX):
        '''测试样本属于各类的概率和矩阵
        input:Gauss_mat(mat):Gauss矩阵
              labelX(list):训练样本的标签矩阵
        output:Prob_mat(mat):测试样本属于各类的概率矩阵
               label_class(list):类别种类列表
        '''
        ## 找出所有的标签类别
        label_class = []
        for i in range(len(labelX)):
            if labelX[i] not in label_class:
                label_class.append(labelX[i])
        
        n_class = len(label_class)
        ## 求概率和矩阵
        p,m = np.shape(Gauss_mat)
        Prob = np.mat(np.zeros((p,n_class)))
        for i in range(p):
            for j in range(m):
                for s in range(n_class):
                    if labelX[j] == label_class[s]:
                        Prob[i,s] += Gauss_mat[i,j]
        Prob_mat = copy.deepcopy(Prob)
        Prob_mat = Prob_mat / np.sum(Prob,axis = 1)
        return Prob_mat,label_class
    

    最后,根据测试样本对应于每个类别概率和训练样本的类别种类求出测试样本对应的类别。

    def calss_results(Prob,label_class):
        '''分类结果
        input:Prob(mat):测试样本属于各类的概率矩阵
              label_class(list):类别种类列表
        output:results(list):测试样本分类结果
        '''
        arg_prob = np.argmax(Prob,axis = 1) ##类别指针
        results = []
        for i in range(len(arg_prob)):
            results.append(label_class[arg_prob[i,0]])
        return results
    

    参考资料

    1、https://blog.csdn.net/guoyunlei/article/details/76209647
    2、https://wenku.baidu.com/view/bb2f52c64128915f804d2b160b4e767f5acf804b.html

    展开全文
  • 概率神经网络(PNN)

    万次阅读 多人点赞 2017-04-07 17:05:58
    概率神经网络(Probabilistic Neural Network)是由D.F.Speeht博士在1989年首先提出,是径向基网络的一个分支,属于前馈网络的一种。它具有如下优点:学习过程简单、训练速度快;分类更准确,容错性好等。从本质上说,...

            概率神经网络(Probabilistic Neural Network)是由D.F.Speeht博士在1989年首先提出,是径向基网络的一个分支,属于前馈网络的一种。它具有如下优点:学习过程简单、训练速度快;分类更准确,容错性好等。从本质上说,它属于一种有监督的网络分类器,基于贝叶斯最小风险准则。

           概率神经网络一般有以下四层:输入层、模式层、求和层和输出层。有的资料中也把模式层称为隐含层,把求和层叫做竞争层。其中,输入层负责将特征向量传入网络,输入层个数是样本特征的个数。模式层通过连接权值与输入层连接。计算输入特征向量与训练集中各个模式的匹配程度,也就是相似度,将其距离送入高斯函数得到模式层的输出。模式层的神经元的个数是输入样本矢量的个数,也就是有多少个样本,该层就有多少个神经元。求和层,就是负责将各个类的模式层单元连接起来,这一层的神经元个数是样本的类别数目。输出层的话,就负责输出求和层中得分最高的那一类。

          如果我们假设有一个识别任务,样本类别有3类,每类样本个数不定,每一个样本的特征维度为5维,那么我们可以画出以下网络结构图:


            在输入层和模式层之间的连接是通过一个高斯函数,求得模式层中的每个神经元和输入层中每个神经元之间的匹配程度。然后通过每类的匹配程度累加求和,再取平均,得到输入样本的所属类别。

            下面给出高斯函数公式:


    其中,Lg表示g类的数量;n表示特征的个数(这里n=5) ; sigma表示平滑参数,这是唯一可以调整的量,一般在0到1之间,通过调整可以提高精度 ; Xij表示g类的第i个神经元的第j个数据。


            在Matlab仿真平台下,对于PNN又进行了一次封装,我们可以调用一些简单的函数来实现PNN算法。

    %%  PNN在MATLAB平台下代码实现,假设data矩阵是M*N,
    %%  M表示样本总数,N表示特征维度,再加上一个标签
    %%  我们将前一半作为训练,后一半作为测试,假设M=50,N=6
    Train = data(1:25,:);
    Test = data(26:end,:);
    p_train = Train(:,1:5)';
    t_train = Train(:,6)';
    p_test = Test(:,1:5)';
    t_test = Test(:,6)';
    
    spread = 1;
    net = newpnn(p_train,t_train,spread);
    
    %%实验一 训练数据回带,查看网络分类效果
    Y = sim(net,p_train);
    Yc = vec2ind(Y);
    %%实验二 在测试集上查看预测未知数据效果
    Y2 = sim(net,p_test);
    Y2c = vec2ind(Y2);
    %% 然后只要比较Y2c和真实标签t_test之间的差值


    展开全文
  • 7 概率神经网络分类问题matlab程序

    千次阅读 2019-10-14 07:54:40
    %% 概率神经网络 %% 解决分类问题 clear all; close all; …… …… …… (省略部分代码,完整代码可以下载) …… …… …… T=ind2vec(Tc) %数据类型的转换 net=newpnn(P,T); Y=sim(net,P); Yc=vec2ind(Y) %转换...
  • 概率神经网络 PNN

    万次阅读 2012-05-04 11:44:11
    1 概率神经网络 概率神经网络(PNN)于1989年由D. F. Specht 博士首先提出,是一种常用于模式分类的神经网络。概率神经网络是基于统计原理的神经网络模型,在分类功能上与最优Bayes 分类器等价,其实质是基于...
  • 基于麻雀搜索算法优化概率神经网络PNN的分类预测 文章目录基于麻雀搜索算法优化概率神经网络PNN的分类预测1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立3.基于麻雀优化的PNN网络5.测试结果6.参考文献7....
  •  又到了该更新的时间,这次更新的内容是之前见到了概率神经网络(Probabilistic Neural Network,PNN)。 }   正文: {  [1]中对概率神经网络的介绍非常简单,但没有图。  [2]中给出了一张结构图,见图2。...
  • 设计概率神经网络:newpnn

    千次阅读 2017-04-03 18:14:35
    newpnn - Design probabilistic ...network 设计概率神经网络  This MATLAB function takes two or three arguments, PR-by-Q matrix of Q input  vectors TS-by-Q matrix of Q target class vectors spreadSprea
  • 一、什么是概率神经网络(PNN)? 概率神经网络是由Specht博士在1989年首先提出, 是一种与统计信号处理的许多概念有着紧密联系的并行算法。它实质上是一个分类器,根据概率密度函数的无参估计进行贝叶斯决策而得到...
  • 概率神经网络PNN

    千次阅读 2018-08-10 23:11:27
    %加载数据 data = csvread('D:\python\anaconda\kaggle\wine.csv',1); x = data(:,1:13); y = data(:,14); y = y+1; %标签值必须为正(含有label=0需要进行此步操作) %划分数据集 ...x_train = ...
  • 基于粒子群算法的概率神经网络实现多分类:用粒子群算法(PSO)实现概率神经网络中(PNN)的参数spread的最优化,并用PNN实现训练并测试多类别数据,多分类效果很棒,有需要请联系1822285076@qq.com,需要一定费用。...
  • 严格径向基网络RBF网络 tic P=-2:.2:2; rand('state',pi); T=P.^2+rand(1,length(P)); % 在二次函数中加入噪声 net=newrbe(P,T,3); % newrbe(P,T)建立严格的径向基函数网络 3是径向基函数的扩散速度可任选默认1 ...
  • 读者可以思考,若采用BP神经网络,用时与此两种算法对比如何?(BP算法所有神经元之间的权值统一同步调整,而本文的两种算法仅在隐层和输出层间具有权值阵,因此BP算法处理速度慢,具体可参见三者的原理)。 总结...
  • 基于RBF的概率神经网络框架

    千次阅读 2012-05-04 15:42:43
    Figures Radial Basis Neuron Radbas Transfer Function Radial Basis Network Architecture Generalized Regression Neural Network Architecture ...Probabilistic Neu
  • ;">[filename, pathname] = uigetfile('ST30.xls');...%形成神经网络 A = sim(net,p); %进行预测 Ac = vec2ind(A); Atest = sim(net,ptest); Actest = vec2ind(Atest) plot(Actest,'r*');
  • 卷积神经网络

    万次阅读 多人点赞 2014-11-29 16:20:41
    自今年七月份以来,一直在实验室负责卷积神经网络(Convolutional Neural Network,CNN),期间配置和使用过theano和cuda-convnet、cuda-convnet2。为了增进CNN的理解和使用,特写此博文,以其与人交流,互有增益。...
  • 基于时间卷积神经网络概率预测

    千次阅读 2019-07-20 09:18:46
    基于时间卷积神经网络概率预测 题目: Probabilistic Forecasting with Temporal Convolutional Neural Network 作者: Yitian Chen, Yanfei Kang, Yixiong Chen, Zizhuo Wang ...
  • 欢迎关注博主或CSDN专栏《适合初学者的神经网络机器学习理论到实践入门》 统计就是根据样本估计总体的概率分布。概率是已知总体概率分布,求某个样本的概率。 举个高中常见的例子: 什么是统计?:不知道袋子里面...
  • Bayesian neural network papers Orginal A Practical Bayesian Framework for Backpropagation Networks Bayesian learning for neural networks What I like the most: ...Bayesian learning for neural netw.....
  • PNN神经网络概述

    千次阅读 2021-04-24 15:45:14
    PNN,Probabilistic Neural Networks,即概率神经网络[43~45]是一种基于贝叶斯决策规则的神经网络技术,其神经网络的训练期望误差较小,是一种基于统计原理的人工神经网络。概率神经网络以Parzen窗口函数为激活函数...
  • 量子概率驱动的神经网络

    千次阅读 2019-06-10 09:10:07
    最后通过一组 max pooling 操作得到每个测量向量在所有 n-gram 最大的投影概率,最后通过向量的 cosine 距离得到匹配的分数。 其中自底向上构建密度矩阵的操作,也就是从 embedding 层到 mixture 层的做法如下(叉...
  • GRNN和PNN神经网络简介与MATLAB实践

    万次阅读 多人点赞 2018-09-26 11:16:13
    GRNN(广义回归神经网络)和PNN(概率神经网络),与RBF非常的相似,请先看上一篇博文《简单直白理解RBF神经网络及其MATLAB实例》,了解一下RBF的大致原理。本文介绍将类比RBF神经网络来介绍。 GRNN(广义回归神经...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,859
精华内容 41,143
关键字:

概率神经网络