资源描述
《智能信息处理》实验报告二
系别: 电子工程
班级: 智能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,初始化权值、
和隐含层阈值a和输出层阈值b,给定学习速率和神经元的激励函数 。
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时,期望输出向量为[1 0 0 0];
标识类为2时,期望输出向量为[0 1 0 0];
标识类为3时,期望输出向量为[0 0 1 0];
标识类为4时,期望输出向量为[0 0 0 1]。
五、Matlab部分代码如下:
1.
input=data(:,2:25);
output1 =data(:,1);
for i=1:2000
switch output1(i)
case 1
output(i,:)=[1 0 0 0];
case 2
output(i,:)=[0 1 0 0];
case 3
output(i,:)=[0 0 1 0];
case 4
output(i,:)=[0 0 0 1];
end
end
2.
for ii=1:20
E(ii)=0; %训练误差
for i=1:1:1500
x=inputn(:,i); %选择本次训练数据
for j=1:1:midnum %隐含层输出
I(j)=inputn(:,i)'*w1(j,:)'+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end
yn=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 ;
for j=1:1:midnum %计算w1,b1调整量
S=1/(1+exp(-I(j)));
FI(j)=S*(1-S);
end
for k=1:1:innum
for j=1:1:midnum
dw1(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));
end
end
w1=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;
end
end
六、结果如下
对程序稍作修改,分别令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
此处粘贴运行结果
七、实验感想
展开阅读全文