《智能信息处理》实验报告二系别:电子工程班级:智能13001班学号:13160700131姓名:郭桂伶日期:2016/4.1指导教师:赵秀洁一、实验内容:1.BP神经网络的数据分类二.实验目的:1.通过BP神经网络的使用,熟悉BP神经网络的基本概念和工作原理。2.编程建立BP神经网络模型,实现对BP模型的训练,做到日后熟练使用。三.实验分析:1.语音特征信号识别语音识别研究领域中的一个重要方面,一般采用模式匹配的原理解决。语音识别的运算过程为:首先,待识别语音转化为电信号后输入识别系统,经过预处理后用数学方法提取语音特征信号,提取出的语音特征信号可以看成该段语音的模式。然后将该段语音模型同已知参考模式相比较,获得最佳匹配的参考模式为该段语音的识别结果。语音识别流程如图1-2所示。实验选取了民歌、古筝、摇滚和流行四类不同音乐,用BP神经网络实现对这四类音乐的有效分类。每段音乐都用倒谱系数法提取500组24维语音特征信号,提取出的语音特征信号如下图2、模型建立基于BP神经网络的语音特征信号分类算法建模包括BP神经网络构建、BP神经网络训练和BP神经网络分类三步,算法流程如图1-4所示。BP神经网络构建根据系统输入输出数据特点确定BP神经网络的结构,由于语音特征输入信号有24维,待分类的语音信号共有4类,所以BP神经网络的结构为24—25—4,即输入层有24个节点,隐含层有25个节点,输出层有4个节点。BP神经网络训练用训练数据训练BP神经网络。共有2000组语音特征信号,从中随机选择1500组数据作为训练数据训练网络,500组数据作为测试数据测试网络分类能力。BP神经网络分类用训练好的神经网络对测试数据所属语音类别进行分类。3、BP神经网络训练过程1)网络初始化。确定输入层、隐含层和输出层的节点数n、l、m,初始化权值ijw、jkw和隐含层阈值a和输出层阈值b,给定学习速率和神经元的激励函数1()1xfxe。2)隐含层输出计算3)输出层输出计算4)误差计算5)权值更新6)阈值更新。根据网络预测误差e更新网络节点阈值a,b。7)判断算法迭代是否结束,若没有结束,返回步骤2。四、Matlab相关函数1.归一化方法及Matlab函数数据归一化方法是神经网络预测前对数据常做的一种处理方法。数据归一化处理把所有数据都转化为[0,1]之间的数,其目的是取消各维数据间数量级差别,避免因为输入输出数据数量级差别较大而造成网络预测误差较大。数据归一化的方法主要有以下两种。1)最大最小法。函数形式如下:2)平均数方差法,函数形式如下:实验采用第一种数据归一化方法,归一化函数采用MATLAB自带函数mapminmax,该函数有多种形式,常用的方法如下。input_train,output_train是训练输入、输出原始数据,inputn,outputn是归一化后的数据,inputps,outputps为数据归一化后得到的结构体,里面包含了数据最大值、最小值和平均值等信息,可用于测试数据归一化和反归一化。测试数据归一化和反归一化程序如下。input_test是预测输入数据,inputn_test是归一化后的预测数据,apply表示根据inputps的值对input_test进行归一化。an是网络预测结果,outputps是训练输出数据归一化得到的结构体,BPoutput是反归一化之后的网络预测输出,reverse表示对数据进行反归一化。2.数据选择和归一化首先根据倒谱系数法提取四类音乐语音特征信号,不同的语音信号分别用1,2,3,4标识,提取出的信号分别存储于data1.mat,data2.mat,data3.mat,data4.mat数据库文件中,每组数据为25维,第1维为类别标识,后24维为语音特征信号。把四类语音特征信号合为一组,从中随机选取1500组数据作为训练数据,500组数据作为测试数据,并对训练数据进行归一化处理。根据语音类别标识设定每组语音信号的期望输出值:标识类为1时,期望输出向量为[1000];标识类为2时,期望输出向量为[0100];标识类为3时,期望输出向量为[0010];标识类为4时,期望输出向量为[0001]。五、Matlab部分代码如下:1.input=data(:,2:25);output1=data(:,1);fori=1:2000switchoutput1(i)case1output(i,:)=[1000];case2output(i,:)=[0100];case3output(i,:)=[0010];case4output(i,:)=[0001];endend2.forii=1:20E(ii)=0;%训练误差fori=1:1:1500x=inputn(:,i);%选择本次训练数据forj=1:1:midnum%隐含层输出I(j)=inputn(:,i)'*w1(j,:)'+b1(j);Iout(j)=1/(1+exp(-I(j)));endyn=w2*Iout+b2;%输出层输出e=output_train(:,i)-yn;e=output_train(:,i)-yn;%填入对应的语句完成误差的预测E(ii)=E(ii)+sum(abs(e));dw2=e*Iout;%计算w2,b2调整量db2=e;forj=1:1:midnum%计算w1,b1调整量S=1/(1+exp(-I(j)));FI(j)=S*(1-S);endfork=1:1:innumforj=1:1:midnumdw1(k,j)=FI(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));db1(j)=FI(j)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));endendw1=w1_1+xite*dw1;%权值阈值更新b1=b1_1+xite*db1;w2=w2_1+xite*dw2;b2=b2_1+xite*db2;w1_1=w1;%结果保存w2_1=w2;b1_1=b1;b2_1=b2;endend六、结果如下对程序稍作修改,分别令ii=1:15和ii=1:20,和ii=1:10做对比。1.BP预测语音类别与实际类别ii=1:10此处粘贴运行结果的图片ii=1:15此处粘贴运行结果的图片ii=1:20此处粘贴运行结果的图片2.BP网络分类误差ii=1:10此处粘贴运行结果的图片ii=1:15此处粘贴运行结果的图片ii=1:20此处粘贴运行结果的图片3.BP网络分类的正确率ii=1:10此处粘贴运行结果ii=1:15此处粘贴运行结果ii=1:20此处粘贴运行结果七、实验感想