一、BP神经网络概述
BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播。在前向传播的过程中,输入信号从输入层经隐含层处理,直至输出层。每一层的神经元状态只影响下一层神经元状态。如果输出层得不到期望输出,则转入反向传播,根据预测误差调整网络权值和阈值,从而使BP神经网络预测输出不断逼近期望输出。
BP神经网络的拓扑结构如图1-1所示:
其中,X1,X2,...,Xn是BP网络的输入值,Y1,Y2,...,Yn是BP神经网络的预测值,和为BP神经网络的权值。
BP神经网络预测前首先要训练网络,通过训练使网络具有联想记忆和预测能力。BP神经网络的训练过程包括以下几个步骤:
步骤1:网络初始化。根据系统输入输出序列(X,Y)确定网络输入层节点数n、隐含层节点数l,输出层节点数m,初始化输入层、隐含层和输出层神经元之间的连接权值和,初始化隐含层阈值a,输出层阈值b,给定学习速率和神经元激励函数。
步骤2:隐含层输出计算。根据输入变量X,输入层和隐含层连接权值以及隐含层阈值a,计算隐含层输出H。
式中,l为隐含层节点数,f为隐含层激励函数,该函数有多种表达形式。我们使用sigmoid函数
步骤3:输出层计算。根据隐含层输出H,连接权重和阈值b,计算BP神经网络预测输出O。
k = 1,2,...,m
步骤4:误差计算。根据网络预测输出O和期望输出Y,计算网络预测误差e。
k = 1,2,...,m
步骤5:权值更新。根据网络预测误差 e更新网络连接权值,。
i = 1,2,...,l;k = 1,2,...,m
j = 1,2,...,l;k = 1,2,...,m
式中,为学习率。
步骤6:阈值更新。根据网络预测误差e更新节点阈值a,b。
j = 1,2,...,l
k = 1,2,...,m
步骤7:判断算法迭代是否结束,若没有结束,返回步骤2.
二、语音特征信号识别
语音特征信号识别是语音识别研究领域中的一个重要方面,语音识别的运算过程为:首先,待识别语音转化为电信号后输入识别系统,经过预处理后用数学方法提取语音特征信号,提取出的语音特征信号可以堪称该段语音的模式;然后,将该段语音模型同已知参考模式相比较,获得最佳匹配的参考模式为该段语音的识别结果。语音识别流程图如下:
本案例选取了民歌、古筝、摇滚和流行四类不同音乐,用BP神经网路实现对这四类音乐的有效分类。每段音乐都用倒谱系数法提取500组24维语音特征信号,提取出的语音特征信号如图所示:
三、模型建立
基于BP神经网络的语音特征信号分类算法包括BP神经网络构建、BP神经网络训练和BP神经网络分类三步。算法流程如下:
BP神经网路构建根据系统输入输出数据特点确定BP神经网络的结构,由于语音特征输入信号有24维,待分类的语音信号共有四类,所以BP神经网络的结构维24-25-4,即输入层油24个节点,隐含层有25个节点,输出层有4个节点。
BP神经网络用训练数据训练BP神经网络。共有2000组语音特征信号,从中随机选择1500组数据作为训练数据训练网络,500组数据作为测试网络测试网络分类能力。
BP神经网络分类用训练好的神经网络对测试数据所属语音类别进行分类。
下面是使用matlab实现基于BP神经网络的语音特征信号分类算法:
四、案例扩展
1.隐含层节点数
BP神经网络的隐含层节点数对BP神经网络预测精度有较大影响:
- 节点数太少,网络不能很好的学习,需要增加训练次数,训练的精度也受影响
- 节点数太多,训练连时间增加,网络容易过拟合。
最佳隐含层节点数选择可参考如下公式:
其中,n为输入层节点数;l为隐含层节点数;m为输出层节点数;a为0~10之间的常数。
在实际问题中,隐含层节点数首先要参考公式,计算出大致的范围。然后用试凑法找出最佳节点数。
一般来说,BP神经网络误差随着隐含层节点的增加是先减少后增加的趋势。
2.附加动量方法
BP神经网络的采用梯度修正法作为权值和阈值的学习算法,从网络预测误差的负梯度方向修正权值和阈值。没有考虑以前经验的积累。学习过程收敛缓慢。可以采用附加动量的方法来解决。公式为:
式中,w(k),w(k-1),w(k-2)分别为k,k-1,k-2时刻的权值;a为动量学习率
matlab程序为:
% xite,alfa为学习率
w1 = w1_1 + xite * dw1' +alfa * (w1_1 - w1_2);
b1 = b1_1 + xite * db1' +alfa * (b1_1 - b1_2);
w2 = w2_1 + xite * dw2' +alfa * (w2_1 - w2_2);
b2 = b2_1 + xite * db2' +alfa * (b2_1 - b2_2);
3.变学习率学习算法
BP神经网络学习率的取值在[0,1]之间,学习率越大,对权值的修改越大,网络学习速度越快。但是过大的学习率将使权值学习产生震荡,过小的学习率使网络收敛过慢,权值难以趋于稳定。变学习率方法是学习率在BP神经网络的进化初期较大,网络收敛迅速,随着学习过程的进行,学习率不断减小,网络趋于稳定。变学习率公式为:
其中,为最大学习率,为最小学习率,为最大迭代次数,t为当前迭代次数