研究生课程考核试卷科目:模式识别教师:姓名:学号:专业:类别:上课时间:考生成绩:卷面成绩平时成绩课程综合成绩阅卷评语:阅卷教师(签名)重庆大学研究生院制引言帕金森病(PD)是一种常见的神经功能性疾病,大多在50岁以后发病,但是随着社会老龄化的加剧,该病的发病率、患病率及致残率均呈现出增高的趋势。
现阶段帕金森病的发病机理仍不是很清楚,对于该病的诊断较多地依赖于临床经验,这种诊断方法存在一定的误诊率。
随着现今计算机技术以及人工智能技术的高速发展,人工神经网络这样一个分支逐渐出现在公众的视野当中,并且在许多方面如模式识别和智能信息处理方面取得了较好地效果,所以本实验将其应用至帕金森病的智能诊断方面。
本实验的目的就是寻找一种智能、客观、准确地诊断帕金森病的方法,探究人工神经网络模拟医学专家诊断帕金森病的可行性。
这里选用应用较为广泛的BP 神经网络作为病理诊断器,以32个人的各项指标数据为little数据集,其中帕金森患者24人,正常人8个,每个人采集6到7组数据,数据样本数共195组。
每次训练时以31个人的所有数据样本为训练集对BP神经网络进行训练,提取特征参数,然后以另一人为测试集,如此重复32次,确保每个人都进行一次测试,最后得出基于32个人的诊断准确率和基于195个样本的准确率。
另外再以40个人的各项指标数据为sakar数据集,正常与患病人数各占一半,每人采集26组数据,同样采用留一法训练测试BP神经网络。
结果显示,在误差可接受的范围内,设计达到了初步的要求,说明将人工神经网络应用于帕金森病的诊断具备可行性,但是由于BP网络存在一些缺点,再加上数据集中无病样本较少,未对复杂的病例做更加深入的研究,尚且不能严格满足临床诊断要求,所以在之后的研究中还需要进一步改进。
关键字:帕金森病,人工神经网络,BP网络1 实验原理在图1.1中,神经元接收n 个输入信号a 1,a 2,…a n ,经过线性运算输出为t ,如公式(1.1)所示。
)()(1T∑=+=+=ni i i b a w f b a w f t(1.1)tanh 函数是sigmoid 函数的一种变体形式,输出范围是[-1,1],效果比sigmoid 函数更好。
1.2 人工神经网络人工神经网络是一种由大量神经元连接而形成的拓扑结构,依靠这些神经元以及它们之间的相互联系,神经网络可以将接收到信号进行非线性处理,以此实现对复杂信息的进一步处理。
如图1.4所示为一个简单人工神经网络。
图1.4 人工神经网络结构图如图1.4所示,该神经网络由三层组成,L 1为输入层,包含三个输入信号和一个偏置项,L 2为隐含层,L 3为输出层,对网络计算的最后结果进行输出。
图中神经网络的参数表示为(b w ,)=()2()2()1()1(,,,b w b w ),其中)1(w 表示输入层和隐藏层神经元之间的连接权重],,[)1(33)1(32)1(31)1(21)1(13)1(12)1(11)1(w w w w w w w w ,,;⋯=,)2(w 表示的是隐藏层和输出层神经元之间的权重,],,[)2(13)2(12)2(11)2(w w w w =,其中)(l ij w 表示第l 层的第j 单元与第l+1层第i 单元的连接权重。
对于偏置参数],,[)1(3)1(2)1(1)1(b b b b =,][)2(1)2(b b =,其中)(l i b 表示第l +1层第i 单元的偏置项,第l 层第i 单元的输出值我们用)(l i a 表示。
对于本图中的人工神经网络,计算公式如下: )()1(13)1(132)1(121)1(11)2(1b x w x w x w f a +++= (1.4) )()1(23)1(232)1(221)1(21)2(2b x w x w x w f a +++= (1.5) )()1(33)1(332)1(321)1(31)2(3b x w x w x w f a +++= (1.6))()()2(1)2(3)2(13)2(2)2(12)2(1)2(11,b a w a w a w f x h b w +++=(1.7)上面的计算步骤实质是信号在神经网络中的前向传播过程,不存在闭环和回路计算,因此也称之为前馈神经网络。
本图中的神经网络模型只含有一个隐含层和一个输出单元,对于含有多隐层和多输出单元的复杂神经网络,计算步骤与此类似,但是与较为简单的单隐层神经网络相比,能够解决复杂度更高的问题。
1.3 梯度下降和反向传播BP 算法在设置好网络的连接方式、网络层数和每层神经元的节点数之后,就需要对网络进行训练,不断进行迭代训练的目的就是使网络的权值和偏置都获得一个较好的值,让我们由输入可以得到理想或者接近理想值的输出。
那么主要的问题就是如何更新网络中的权值和偏置,使网络达到最优状态,为此引入了梯度下降法。
在梯度下降法中,需要使用误差函数,其定义为神经网络的预期输出与实际输出间的均方误差,训练的目的就是使得该误差最小化,对于一个拥有n 个训练样本的问题而言,误差函数公式如下:其中)(l i z 和)(l i a 分别表示第l 层第i 个节点的输入和以及激活值。
3)对于除输出层以外的其它层,第l 层第i 个节点的残差计算如下:)(')()()1(11)()(l i l j s j l ji l iz f w l ++=∑=δδ(1.12)开始初始化网络参数给定输入和理想输出计算隐含层和输出层输出计算输出单元与理想输出的误差E误差E 是否满足要求?计算误差对权值和偏置的梯度更新参数否是结束BP 算法伪代码:1.对于所有层l ,令∆w (l ) := 0,∆b (l ) := 0,设置为全零矩阵或全零向量;2.从第一个训练样本一直到第m 个,对于i =1:m:a:用反向传播计算∇ w (l ) E(w,b;x,y )和∇ b (l ) E(w,b;x,y ); b:计算∆w (l ) :=∆w (l ) + ∇ w (l ) E(w,b;x,y ); c:计算∆b (l ) := ∆b (l ) + ∇ b (l) E(w,b;x,y );2实验结果2.1数据集little正确率与隐层神经元个数关系测试次数\神经元个数1 81.75% 81.25% 84.38% 81.25%81.25%2 78.13% 84.38% 84.38% 81.25%81.25%3 81.25% 81.25% 81.25% 84.38%84.38%4 84.38% 81.25% 87.50% 78.13%81.25%5 78.13% 78.13% 84.38% 84.38%84.38%平均正确率80.63% 81.25% 84.38% 81.88%82.50%测试次数\神经元个数1 82.05% 80.00% 78.97% 78.97%80.51%2 75.38% 82.05% 80.51% 80.51%78.97%3 80.00% 78.46% 80.03% 80.51%82.05%4 82.05% 80.00% 80.00% 76.41%77.95%5 76.92% 76.41% 82.05% 84.10%80.51%平均正确率79.28% 79.38% 80.31% 80.10%80.00%由表2.1和表2.2可知,随着隐层神经元个数从8增加到10时,基于32个人的帕金森病判断正确率从80.63%增加到84.38%,基于195个样本的正确率从79.28%增加到80.31%,但是当从10再继续增加时,两种正确率均有所下降,说明对于此BP网络,最为恰当的隐层神经元个数为10。
2.2数据集little正确率与迭代次数关系测试次数\迭代次数1 81.25% 84.38% 81.25% 81.25%78.13%2 78.13% 84.38% 78.13% 84.38%75.00%3 78.13% 81.25% 81.25% 81.25%78.13%4 75.00% 87.50% 75.00% 78.13%81.25%5 78.13% 84.38% 81.25% 81.25%81.25%平均正确率78.13% 84.38% 79.38% 81.25%78.75%\迭代次数1 78.46% 78.97% 80.00% 81.03%77.44%2 74.87% 80.51% 76.41% 80.00%72.82%3 75.90% 81.03% 80.00% 81.03%71.80%4 74.87% 80.00% 74.87% 78.97%80.51%5 73.85% 82.05% 79.49% 80.00%78.97%平均正确率75.59% 80.31% 78.15% 80.21%76.31%由表2.3和表2.4可知,随着迭代次数从50增加到100时,基于32个人的帕金森病判断正确率从78.13%增加到84.38%,基于195个样本的正确率从75.59%增加到80.31%,但是当从100再继续增加时,两种正确率均有所下降,可能出现了过拟合现象,说明对于此BP网络,最为恰当的迭代次数为100。
通过以上对正确率与隐层神经元个数的关系和正确率与迭代次数的关系两种对比可以得出结论:当隐层神经元个数为10,迭代次数为100时,BP网络的分类效果最好,基于32个人的诊断正确率为84.38%,基于195个样本的诊断正确率为80.31%,基本满足实验预期要求。
2.3数据集sakar正确率与little数据集实验类似,通过多次实验验证,选取隐层神经元数目为10个,训练迭代次数为2000次,训练所得神经网络的准确率较高,具体的实验结果如下:实验次数基于40个人正确率基于1040个样本正确率1 60.00% 55.00%2 67.50% 56.73%3 57.50% 53.46%4 60.00% 53.37%5 57.50% 56.63%平均正确率60.50% 55.04%通过实验可知,对于sakar数据集,选取隐层神经元12个,迭代次数2000次,进行5次实验,基于40个人的平均正确率为60.50%,在某次实验时最高正确率为67.50%,基于1040个样本的正确率为55.04%,与little数据集84.38%的人正确率和80.31%的样本正确率相比,正确率还有待提高,算法以及参数调整还需进一步完善。
3实验总结本次实验通过在MATLAB实验工具下搭建BP网络,利用给定的帕金森病数据集对网络进行训练,通过改变相关的网络参数如隐层神经元个数和迭代次数使网络性能达到最优状态。
对于little数据集,BP神经网络取隐层神经元个数为10,迭代次数为100,以31个人的所有样本数据为训练集,另一人作为测试,如此重复32次,使每个人都能作为测试集进行一次测试,并进行5次实验求得正确率的平均值,以较少偶然性对测试结果的影响,基于32个人的正确率为84.38%,基于195个样本的正确率为80.31%。