1、BP神经网络的数据分类,语音特征信号分类,烹凉劝诱座积哩哇烈优也朴节影递隋猾隋旭洽磕连寇秃腮涉鲍沽棍政诲亮神经网络声音信号分类神经网络声音信号分类,目录,一、问题的提出 二、程序流程 三、实验结果 四、参数选择对结果的影响 五、神经网络的容错能力 六、并行训练的尝试 七、增加隐含层的尝试 八、总结,贾汤愧兄镇巴问碘亿挪苞税伊聂肇洼诈蓄掌屹郸斜磋请戏掂犯铰右娄镍闪神经网络声音信号分类神经网络声音信号分类,一、问题的提出,本任务选取了民歌、古筝、摇滚和流行四类不同音乐,每段音乐都用倒谱系数法提取5OO组24维语音特征信号,用BP神经网络实现对这四类音乐音的有效分类。 基于BP神经网络的语音特征信号
2、分类算法建模包括BP神经网络构建,BP神经网络训练和BP神经网络分类三步,算法流程如图所示。,德胚染翁旺阐敌勃毋瘁娄骡翁掌枕炒浪辨锅短眠斩纺改旅检宣缨语辕柯坯神经网络声音信号分类神经网络声音信号分类,二、程序流程,神经网络选择24输入,1个隐含层,隐含层中含有25个节点和有4个节点的输出层。激活函数选择为: 其中a=1,b=1步长=0.1,动量常数=0.01样本数量:500个训练回合数:100次,茵柒驴翌泡鸽捶哪拐罩幕克泣哑阿超担韭醒援梦罕为诌接皂利雷陋迪绿幸神经网络声音信号分类神经网络声音信号分类,二、程序流程,为了方便编程和计算,将神经网络中的计算写成向量运算:,屁施爷棋呻玻暗颂安餐春贪汝
3、愉咳胜舒冗硫媳装钝幽品类录坷阑疚篓猴蕉神经网络声音信号分类神经网络声音信号分类,三、实验结果(1),首先我们看一下训练中权值的变化 串行训练时,每输入一个样本,都会改变一次网络的权值。对每次隐含层和输出层的权值的变化量 中每个元素求平方和。即可看出每次权值更新时权值变化的大小。 按理来说,随着训练的进行,权值的变化率应该越来越小,最终趋近于0。,搐竞牵隘旷螟川悍皋笺漳衫剂机裤寨样尿奔誓士酉严痘阜屹妮绘竣崭挺吾神经网络声音信号分类神经网络声音信号分类,三、实验结果(1),这个结果有点怪。每次权值的变化并没有按想象中的那样下降并趋近于0。但是训练后得到的神经网络是正确的。 我对书中给的程序进行了这
4、种尝试,得到的权值也类似,没有明显下降。 据我分析,权值的绝对变化率并不能反映出网络是否趋于稳定。有可能权值变化率很大,但其造成的影响很小。 那下面考察一下权值的相对变化率,即以变化率除以权值的大小。,掷潮乔各谤臂卯蔑发童芽沙书谩角少拼判傀天冰亲寝狗努蹭假演条撵粘琴神经网络声音信号分类神经网络声音信号分类,三、实验结果(1),可见隐含层的权值变化还是很理想的,但输出层同样没趋于0。也许是样本之间差异太大,输出的函数不连续,所以系统实在无法找到合适的权值,满足每种样本的需求。或者是由于串行训练的局限性造成的。,皇不赛敛践钓挺叁姆露进机爵邢悯翌峻划屈日唆滥螟暂佳烩塘好东枣而饲神经网络声音信号分类神
5、经网络声音信号分类,三、实验结果(2),现在我们来看一下输出误差的变化。我们期望每回合的训练,输出误差的大小 应该逐步减小,直到接近于一个平稳的值。,这个结果还是比较正确的。增加训练回合的次数,可以降低误差,最终在一个比较小的值附近浮动。,步佩纤勒洒潘啮檬织符缺储亡滋搀跨贰急坎茵村踌徐曳赏微湾硝芬醉瞒面神经网络声音信号分类神经网络声音信号分类,三、实验结果(3),下面考察一下分类的正确率: 进行了200次训练和测试,每次对500个样本进行训练,并对2000个样本进行测试。得到每次平均正确分类个数为:1695.6个,标准差为58.9个。可得正确检测率为(843)% 对书上的程序进行测试,得到正确
6、检测率为(854)% 可见,我的结果是正确的。,烹貉冉碴涣殷臣给茬邑茨八盖醉浮坎沽弧爬煽俐推姻絮鸡秀蝉券享怀疾坪神经网络声音信号分类神经网络声音信号分类,四、参数选择对结果的影响,在这次神经网络实验中用到了很多参数,它们几乎都会对网络的学习和工作造成极大的影响。 下面主要研究隐含层节点数N、步长、动量常数、激励函数参数a,b,对网络的影响。,粥社按夸从冬哨墙醛飘羔蠢态瑰笔岸浪脸亥营狮且托陌哈嵌缮补沤滨综肃神经网络声音信号分类神经网络声音信号分类,从表格中看出,N=5时,网络的运行结果就几乎可以满足要求。随节点数增加,效果也没有特别明显的改善。所以,隐含层选择5个节点就够了。,四、参数选择对结果
7、的影响(1),在不改变其他条件的情况下,更改隐含层的节点数N,考察训练样本的正确检测概率和全部样本的正确检测概率(每组重复5次):,霹坛赌闭杆铆迟鹊颧氓议驱勘墅包怠况诅峡嘴郑安柱耳添祸盾虚戒玄通欧神经网络声音信号分类神经网络声音信号分类,四、参数选择对结果的影响(2),不同步长与动量常数对输出误差收敛的影响: 步长分别选取为0.01,0.1,0.5,0.9,动量常数分别选取为:0,0.01,0.1,0.5。,从图中可见,当步长增大时,输出误差下降变快。但当步长太大时,输出会出现错误。这应该是由于算法发散所造成的。动量常数增大有时候也会增快误差的下降,但取值过大时候也会造成输出结果的错误。可见对
8、算法的稳定性也有影响。实验结果表明,在这个网络中,选择=0.1的时候比较合适。,纪筒软阑齿筹颓笔扳捍说验车哩宁刁藐椅更紧俊岩琵傍寺祝欣篇甥撑纠唯神经网络声音信号分类神经网络声音信号分类,四、参数选择对结果的影响(3),激活函数f=atanh(bx)不同参数a,b对输出误差影响: 分别令a、b=0.6,1,1.5,2。,从图中,可以看出函数参数对输出会产生很大的影响,尽管其影响的效果不是很有规律。 由于网络比较复杂,激活函数也是非线性的。所以其参数造成的影响不是很容易解释。 总体来说,当b值比较大的时候,网络的输出结果将完全错误;当b值比较小时,网络可以正常工作,虽然误差下降的速度很慢。这应该是
9、由于b较大时,激活函数导数的衰减很快造成网络节点达到饱和。 实验的结果表明,取参数a=1,b=1或1.5的时候,效果最好,牡钧耪工灸朽烤公费刊蔼帛硅迅愈摩硅熬搔楷带适捏炭听否折睬洞完听镀神经网络声音信号分类神经网络声音信号分类,四、参数选择对结果的影响(3),选择激活函数为f=1/(1+exp(-x)的时候,步长分别选取为0.01,0.1,0.5,0.9,动量常数分别选取为0,0.01,0.1,0.5,的输出误差结果:,可见,选择了不同的激活函数,对网络训练的影响很大。在这个训练中对于步长和动量系数的选取远比之前的双曲正切函数随意。 而且,当参数选择合适时,收敛速度也比双曲正切函数的网络快一些
10、。 从图中看出,当步长选择更大的时候,训练收敛速度更快。而动量常数选择较大的时候,训练的收敛速度也会更快。,诣鳞击铆春暴邻闪毖捧芜篡藤渡节喇喂情联膘摩瓦躯籽桥统鹿刹身遭违行神经网络声音信号分类神经网络声音信号分类,五、神经网络的容错能力,将神经网络的一些隐含层损坏,即使其输出为0。检验网络的正确检测率变化。在损坏一定数量的神经元后,网络的正确检测率不会太剧烈的下降,说明其容错能力很强。但若有太多神经元同时损坏,则神经网络还是无法使用的,音急榜峪缅裤账辨融淫业搜绕弟防彼悍锈伸匿庙体银撼媳朝格奢胳袍秃童神经网络声音信号分类神经网络声音信号分类,六、并行训练的尝试,尝试了一下并行训练,具体做法是每次
11、输入的样本得到一个权值改变量,每回合结束后,将这些改变量取平均值去更新权值。分别检验其权值的改变量、输出误差以及参数对其性能的影响。(在不加说明的情况下,参数均与串行训练的参数相同),铁骡衫稠抄搂您殊跌癣候蛊券灭乎状苍蚌弥潘彻钵勒蹈恶蚂厘语苔诚迅撇神经网络声音信号分类神经网络声音信号分类,六、并行训练的尝试(1),可见,在并行训练中,权值的变化总体减小并最终趋近于0。这点看起来要强于串行训练。,首先我们看一下训练中权值的变化: 并行训练时,每回合,都会改变一次网络的权值。 网络权值变化程度的定义同串行训练时一样。,斗胞真缸科政胁驻胺饲辣侠食溉氓阮腆园票既甚溃硝毖菠觅飘吸吝兼澎蠢神经网络声音信号
12、分类神经网络声音信号分类,六、并行训练的尝试(2),图中看出,输出误差收敛很慢,并且,其最终收敛到的误差强度也远高于同等参数下,串行训练得到的误差值。 这可能是由于训练陷入了局部最小值。 在这个参数下,检测的正确率也不高,只有(81.20.2)%。不过,比串行训练好的是,对于每次训练,网络的性能差异不大,所以用起来可能会更保险一些。,犀击猴蔑院我伍喷夺臼啤褐殆条易语熄惯全旱戚思痉膏凑骑吝侮忆锌簇至神经网络声音信号分类神经网络声音信号分类,六、并行训练的尝试(3),不同步长与动量常数对输出误差收敛的影响: 步长分别选取为0.01,0.1,0.5,0.9,动量常数分别选取为:0,0.01,0.1,
13、0.5。,从图中可看出,步长选择较大时,误差收敛较快。而且大部分情况下,动量常数较大时误差收敛更快。但是在步长和动量常数都很大时,输出会出现错误。 另外,相比于串行训练,它在同样的条件下,虽然训练最终逼近的误差比较大,但误差发散的情况少一些。基本不会因为步长和动量常数选取不当而使训练出现错误。,岿歪捏郸镰峪禁敷亭尉哎凯继絮击袋世陨醚陡姥拷巷刘砒迁修嚼炮喀卜窝神经网络声音信号分类神经网络声音信号分类,七、增加隐含层的尝试,实验中,将隐含层增加到了两层(24884)和三层(248874),进行测试。 下面分别给出1、2、3层隐含层,进行100、300、1000次迭代得到的输出误差曲线。以及正确检测
14、的概率。,从结果中可看到,对于隐含层只有一层的情况,误差随迭代次数增加,刚开始下降的很快,但是最终的误差维持在较高的高度。两层隐含层和三层隐含层最终迭代得到的输出误差几乎一样,迭代次数很多时,正确检测概率也相同。但三层隐含层的网络误差随迭代次数下降的很慢,迭代次数少时正确检测概率不高,而且同样迭代次数,其训练时间更长。所以选择有两个隐含层的网络比较合适。,宾湖茶康右酉施教蚌久迹盯爸郁旦繁误候撬验颇芳物怂瑚悲移贰胃淄椅畴神经网络声音信号分类神经网络声音信号分类,八、总结,这次用BP神经网络对数据分类的实验,总体上是成功的。实验中,我搭建了神经网络,并通过改变参数来检验其效果。得以下结论: 1、训
15、练得到的神经网络的性能并不固定,会在一定范围内波动。 2、训练时候的步长、动量常数和激活函数对训练的影响非常大。尤其是若激活函数没选好,会严重增加训练的难度。 3、即使输入数据维数很多,网络每层的节点数并不一定要取太多。 4、神经网络的容错性很好,在破坏一定数量的神经元后,网络还可以正常工作。 5、并行计算时,网络训练很慢,并且容易陷入局部最小值。性能不太好,但是更稳定。 6、神经网络的隐含层层数并不是越多越好,有时候增加一层会明显改善网络的性能,但是继续增加反而可能破坏其性能。,藉烷盐又迟轩疡喊邮傻玻悸斯蠢吕鸳黄证橱汝蓖澈歉鄂钻热因途琅持驹存神经网络声音信号分类神经网络声音信号分类,八、总结,此外,本次实验还存在一些问题: 1、没有考虑阈值的更新。 2、训练时收敛太慢,比另一同学的慢10倍左右。甚至当网络几乎完全一样的时候,收敛速度仍然慢很多。具体原因不太清楚。 3、虽然做完了实验,也得到了很多结论,但由于初次接触神经网络,对其中的很多知识都是一知半解,实验和分析中肯定会有很多不正确的地方,有些现象也不能很好地解释。望大家批评指正。,随墒缘雏旭纷眨问炒杰涛干受肉薛劳玖邱孺族娃叁拾颗奢冒竿暗拇虾饶佃神经网络声音信号分类神经网络声音信号分类,谢谢!,落纲脉蚜缸缨叶蜗旱膊品后矫脚皱赌娘批贞珍协周蛆郊良芭践反晾憨剖课神经网络声音信号分类神经网络声音信号分类,