本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
BP神经网络可以较好地应用于模式识别问题,也即分类问题
本文介绍BP神经网络应用于模式识别问题时的原理,包括模型结构、损失函数等
最后,本文讲解在matlab中如何使用patternnet函数来建立BP神经网络模式识别的模型
本节讲解BP神经网络应用于分类时的模型结构
什么是模式识别问题
模式识别问题也称为分类问题,就是预测样本所属的类别
分类问题的每个训练样本都对应一个类别标签,代表该样本属于哪个类别
分类问题的类别表示:one-hot向量
在机器学习中,一般使用one-hot向量来表示样本的类别,
one-hot向量的格式与含义如下:
one-hot向量的长度与类别个数一致,只有一个元素的值为1,其余为0,
one-hot向量第i个元素为1时,就表示样本为第i类
分类问题的模型输出:概率向量
分类问题可以直接输出样本的所属类别,但更一般地,是输出样本属于每个类别的概率,
所以分类问题的模型输出的是一个概率向量,如下:
概率向量的第i个元素代表样本属于第i个类别的概率
本节讲解BP神经网络应用于模式识别问题时的网络结构以及损失函数
BP神经网络模式识别-网络结构
BP神经网络应用于分类时的结构
BP神经网络应用于分类时,一般用的仍然是三层结构,相对特别的有如下两点:
1. 有多少个类别,网络就有多少个输出
2. 网络的输出进行softmax转换,把网络的结果归一化为类别的概率
BP神经网络应用于分类时的具体结构示例如下:
如图所示,第一层是输入层,第二层是隐层,第三层是输出层
输出层的神经元个数与类别个数一致,并且输出层加入了softmax函数
其中,softmax的计算公式如下:
也就是对最后一层的每个输出值先进行指数转换,再进行归一化
softmax的意义就在于把数值转换为概率
BP神经网络模式识别-损失函数
BP神经网络应用于模式识别时,损失函数一般使用交叉熵损失函数
交叉熵损失函数计算公式-定义形式:
其中, :样本个数
:模型判断第i个样本属于类别k的概率,k是样本的真实标签
本节讲解BP神经网络应用于模式识别时,在matlab中应该如何实现
matlab的patternnet函数
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) % 用网络进行预测
运行结果如下:
可以看到,网络已经较好地预测x所属的类别
End