背景
我们在如何利用 C# 对神经网络模型进行抽象?中完成了神经网络的抽象结构:
三个接口:激活函数、有监督学习、无监督学习
接口
三个抽象类:神经元、网络层、网络拓扑
抽象类
我们在如何利用 C# 实现神经网络的感知器模型?中对神经网络的结构进行了扩展,完成了感知器神经网络:
实现了三个接口:利用符号函数和阈值函数实现激活函数接口;利用感知器学习规则实现有监督学习接口。
接口实现
覆写了三个抽象类中的抽象方法:用实体类 继承 ;用实体类 继承 ;用实体类 继承 。
实体类继承
实体类继承
我们在如何利用 C# 实现 Delta 学习规则?中对神经网络进行进一步的扩展。
实现了两个接口:利用Sigmoid函数实现激活函数接口;利用 Delta 学习规则实现有监督学习接口。
接口实现
技术分析
今天,我们进一步扩展神经网络的学习规则,利用误差反向传播学习规则来实现有监督学习接口;增加BP神经网络另外一个常用的Sigmoid函数。
接口实现
有关BP神经网络的原理,参见图文基于Matlab的BP神经网络在语音特征信号识别中的应用,这篇图文中有详细的权值、阈值推导过程。
代码实现
双极性Sigmoid函数
误差反传算法的实现
计算各层的误差与网络的总体误差
计算网络权值和阈值的调整值
调整整个网络的权值和阈值
总结
我们仍然应用基于Matlab的BP神经网络在语音特征信号识别中的应用中的语音信号分类的例子,来说明BP神经网络的应用。
获取数据集的方法:
获取输入、输出样本的方法:
主应用程序:
输入层 24 个神经元
中间层 25 个神经元
输出层 4 个神经元
训练样本 1500 个
测试样本 500 个
最大迭代次数 1000 次
最后得到的准确率为:90.2%,与用Matlab计算的近似。好了,今天就到这里吧!See You!
对了,到目前为止已经有 10 名同学 通过解码Huffman Code得到团队的报名方式。
团队的招新仍在进行中,对我们感兴趣的同学欢迎与我联系,我会亲自带着大家学习,一起成长!
经过8年多的发展,LSGO软件技术团队在「地理信息系统」、「数据统计分析」、「计算机视觉」等领域积累了丰富的研发经验,也建立了人才培养的完备体系,目前深耕的领域为「机器学习与量化金融」,欢迎对计算机技术感兴趣的同学加入,与我们共同成长进步。