神经网络声音信号分类PPT文档格式.ppt
《神经网络声音信号分类PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《神经网络声音信号分类PPT文档格式.ppt(24页珍藏版)》请在冰豆网上搜索。
三、实验结果
(1)这个结果有点怪。
每次权值的变化并没有按想象中的那样下降并趋近于0。
但是训练后得到的神经网络是正确的。
我对书中给的程序进行了这种尝试,得到的权值也类似,没有明显下降。
据我分析,权值的绝对变化率并不能反映出网络是否趋于稳定。
有可能权值变化率很大,但其造成的影响很小。
那下面考察一下权值的相对变化率,即以变化率除以权值的大小。
三、实验结果
(1)可见隐含层的权值变化还是很理想的,但输出层同样没趋于0。
也许是样本之间差异太大,输出的函数不连续,所以系统实在无法找到合适的权值,满足每种样本的需求。
或者是由于串行训练的局限性造成的。
三、实验结果
(2)现在我们来看一下输出误差的变化。
我们期望每回合的训练,输出误差的大小应该逐步减小,直到接近于一个平稳的值。
这个结果还是比较正确的。
增加训练回合的次数,可以降低误差,最终在一个比较小的值附近浮动。
三、实验结果(3)下面考察一下分类的正确率:
进行了200次训练和测试,每次对500个样本进行训练,并对2000个样本进行测试。
得到每次平均正确分类个数为:
1695.6个,标准差为58.9个。
可得正确检测率为(843)%对书上的程序进行测试,得到正确检测率为(854)%可见,我的结果是正确的。
样本来源样本来源1234分类正确率0.8800.9760.6380.876四、参数选择对结果的影响在这次神经网络实验中用到了很多参数,它们几乎都会对网络的学习和工作造成极大的影响。
下面主要研究隐含层节点数N、步长、动量常数、激励函数参数a,b,对网络的影响。
从表格中看出,N=5时,网络的运行结果就几乎可以满足要求。
随节点数增加,效果也没有特别明显的改善。
所以,隐含层选择5个节点就够了。
四、参数选择对结果的影响
(1)在不改变其他条件的情况下,更改隐含层的节点数N,考察训练样本的正确检测概率和全部样本的正确检测概率(每组重复5次):
N3581420253550100训练样本正确检测率(%)731891891891871871872861793全部样本正确检测率(%)711834837827844835842854776四、参数选择对结果的影响
(2)不同步长与动量常数对输出误差收敛的影响:
步长分别选取为0.01,0.1,0.5,0.9,动量常数分别选取为:
0,0.01,0.1,0.5。
从图中可见,当步长增大时,输出误差下降变快。
但当步长太大时,输出会出现错误。
这应该是由于算法发散所造成的。
动量常数增大有时候也会增快误差的下降,但取值过大时候也会造成输出结果的错误。
可见对算法的稳定性也有影响。
实验结果表明,在这个网络中,选择=0.1的时候比较合适。
四、参数选择对结果的影响(3)激活函数f=atanh(bx)不同参数a,b对输出误差影响:
分别令a、b=0.6,1,1.5,2。
从图中,可以看出函数参数对输出会产生很大的影响,尽管其影响的效果不是很有规律。
由于网络比较复杂,激活函数也是非线性的。
所以其参数造成的影响不是很容易解释。
总体来说,当b值比较大的时候,网络的输出结果将完全错误;
当b值比较小时,网络可以正常工作,虽然误差下降的速度很慢。
这应该是由于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,的输出误差结果:
可见,选择了不同的激活函数,对网络训练可见,选择了不同的激活函数,对网络训练的影响很大。
在这个训练中对于步长和动量的影响很大。
在这个训练中对于步长和动量系数的选取远比之前的双曲正切函数随意。
系数的选取远比之前的双曲正切函数随意。
而且,当参数选择合适时,收敛速度也比双而且,当参数选择合适时,收敛速度也比双曲正切函数的网络快一些。
曲正切函数的网络快一些。
从图中看出,当步长选择更大的时候,训练从图中看出,当步长选择更大的时候,训练收敛速度更快。
而动量常数选择较大的时候,收敛速度更快。
而动量常数选择较大的时候,训练训练的收敛速度也会更快。
的收敛速度也会更快。
五、神经网络的容错能力将神经网络的一些隐含层损坏,即使其输出为0。
检验网络的正确检测率变化。
在损坏一定数量的神经元后,网络的正确检测率不会太剧烈的下降,说明其容错能力很强。
但若有太多神经元同时损坏,则神经网络还是无法使用的损坏损坏神经神经元个元个数数012345678正确检测率(%)87.487.476.876.976.876.857.157.157.1六、并行训练的尝试尝试了一下并行训练,具体做法是每次输入的样本得到一个权值改变量,每回合结束后,将这些改变量取平均值去更新权值。
分别检验其权值的改变量、输出误差以及参数对其性能的影响。
(在不加说明的情况下,参数均与串行训练的参数相同)六、并行训练的尝试
(1)可见,在并行训练中,权值的变化总体减小并最终可见,在并行训练中,权值的变化总体减小并最终趋近于趋近于0。
这点看起来要强于串行训练。
首先我们看一下训练中权值的变化:
并行训练时,每回合,都会改变一次网络的权值。
网络权值变化程度的定义同串行训练时一样。
六、并行训练的尝试
(2)图中看出,输出误差收敛很慢,图中看出,输出误差收敛很慢,并且,其最终收敛到的误差强并且,其最终收敛到的误差强度也远高于同等参数下,串行度也远高于同等参数下,串行训练得到的误差值。
训练得到的误差值。
这可能是由于训练陷入了局部这可能是由于训练陷入了局部最小值。
最小值。
在这个参数下,检测的正确率在这个参数下,检测的正确率也不高,只有(也不高,只有(81.20.2)%。
不过,比串行训练好的是,对不过,比串行训练好的是,对于每次训练,网络的性能差异于每次训练,网络的性能差异不大,所以用起来可能会更保不大,所以用起来可能会更保险一些。
险一些。
六、并行训练的尝试(3)不同步长与动量常数对输出误差收敛的影响:
从图中可看出,步长选择较大时,误差收敛较快。
而且大部分情况下,动量常数较大时误差收敛更快。
但是在步长和动量常数都很大时,输出会出现错误。
另外,相比于串行训练,它在同样的条件下,虽然训练最终逼近的误差比较大,但误差发散的情况少一些。
基本不会因为步长和动量常数选取不当而使训练出现错误。
七、增加隐含层的尝试实验中,将隐含层增加到了两层(24884)和三层(248874),进行测试。
下面分别给出1、2、3层隐含层,进行100、300、1000次迭代得到的输出误差曲线。
以及正确检测的概率。
从结果中可看到,对于隐含层只有一层的情况,误差随迭代次数增加,刚开始下降的很快,但是最终的误差维持在较高的高度。
两层隐含层和三层隐含层最终迭代得到的输出误差几乎一样,迭代次数很多时,正确检测概率也相同。
但三层隐含层的网络误差随迭代次数下降的很慢,迭代次数少时正确检测概率不高,而且同样迭代次数,其训练时间更长。
所以选择有两个隐含层的网络比较合适。
正确检正确检测概率测概率(%)一层一层二层二层三层三层100次8538738531000次881911911八、总结这次用BP神经网络对数据分类的实验,总体上是成功的。
实验中,我搭建了神经网络,并通过改变参数来检验其效果。
得以下结论:
1、训练得到的神经网络的性能并不固定,会在一定范围内波动。
2、训练时候的步长、动量常数和激活函数对训练的影响非常大。
尤其是若激活函数没选好,会严重增加训练的难度。
3、即使输入数据维数很多,网络每层的节点数并不一定要取太多。
4、神经网络的容错性很好,在破坏一定数量的神经元后,网络还可以正常工作。
5、并行计算时,网络训练很慢,并且容易陷入局部最小值。
性能不太好,但是更稳定。
6、神经网络的隐含层层数并不是越多越好,有时候增加一层会明显改善网络的性能,但是继续增加反而可能破坏其性能。
八、总结此外,本次实验还存在一些问题:
1、没有考虑阈值的更新。
2、训练时收敛太慢,比另一同学的慢10倍左右。
甚至当网络几乎完全一样的时候,收敛速度仍然慢很多。
具体原因不太清楚。
3、虽然做完了实验,也得到了很多结论,但由于初次接触神经网络,对其中的很多知识都是一知半解,实验和分析中肯定会有很多不正确的地方,有些现象也不能很好地解释。
望大家批评指正。
谢谢!