BP神经网络

【原理】BP神经网络应用于模式识别

作者 : 老饼 发表日期 : 2022-08-29 21:40:38 更新日期 : 2024-12-06 12:06:36
本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com



BP神经网络可以应用于数值预测,也可以应用于模式识别问题,即分类问题

本文介绍BP神经网络应用于模式识别问题时的模型结构与损失函数,并展示一个代码实现例子

通过本文,可以了解BP神经网络应用于模式识别的原理,以及在matlab中的具体代码实现




    01. BP神经网络应用于模式识别    




本节讲解BP神经网络应用于模式识别问题时的网络结构以及损失函数




    什么是模式识别问题   


模式识别问题也称为分类问题,就是预测样本所属的类别
分类问题的每个训练样本都对应一个类别标签,代表该样本属于哪个类别

分类问题的类别表示:one-hot向量
在机器学习中,一般使用one-hot向量来表示样本的类别,
 one-hot向量的格式与含义如下:
 什么是one-hot向量
one-hot向量的长度与类别个数一致,只有一个元素的值为1,其余为0,
one-hot向量第i个元素为1时,就表示样本为第i类
 分类问题的模型输出:概率向量
 
分类问题可以直接输出样本的所属类别,但更一般地,是输出样本属于每个类别的概率,
所以分类问题的模型输出的是一个概率向量,如下:
 什么是概率向量
概率向量的第i个元素代表样本属于第i个类别的概率






     BP神经网络模式识别-网络结构    


BP神经网络应用于分类时的结构
BP神经网络应用于分类时,一般用的仍然是三层结构,相对特别的有如下两点:
1. 有多少个类别,网络就有多少个输出                                           
2. 网络的输出进行softmax转换,把网络的结果归一化为类别的概率
 BP神经网络应用于分类时的具体结构示例如下:
 BP应用于模式识别时的具体结构
如图所示,第一层是输入层,第二层是隐层,第三层是输出层
输出层的神经元个数与类别个数一致,并且输出层加入了softmax函数
 其中,softmax的计算公式如下:
      
 也就是对最后一层的每个输出值先进行指数转换,再进行归一化
softmax的意义就在于把数值转换为概率
  BP神经网络模式识别-损失函数    
BP神经网络应用于模式识别时,损失函数一般使用交叉熵损失函数
交叉熵损失函数计算公式-定义形式:
   
  其中, :样本个数            
                                      
:模型判断第i个样本属于类别k的概率,k是样本的真实标签







    03. BP神经网络用于模式识别-代码实现  





本节讲解BP神经网络应用于模式识别时,在matlab中应该如何实现





    BP神经网络用于模式识别-代码实现    


matlab中使用patternnet函数来构建一个用于模式识别的BP神经网络
 net = patternnet(hiddenSizes,trainFcn,performFcn)
patternnet和newff是类似的,只是在输出层会加上softmax函数,此外,patternnet的一些默认参数与newff有所不同
 例如newff的损失函数是mse,而patternnet用的是交叉熵crossentropy,其它不再赘述,依照newff的相关应用即可
 
patternnet的使用示例如下:
x = -5:5;                        % 生成x
y = [x<0;x>=0];                  % 生成y,注意,y是one-hot格式
net = patternnet(3);             % 建立模式识别网络,隐层设为3个隐节点
[net,tr] = train(net,x,y);       % 将数据放到网络中训练
py = sim(net,x)                  % 用网络进行预测
代码运行结果如下: 
 
BP实现模式识别的代码运行结果  
可以看到,网络已经较好地预测x所属的类别







好了,以上就是BP神经网络应用于模式识别的原理与代码了~








  End  




联系老饼