基于BP神经网络的疾病诊断模型(论文)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于BP 神经网络的疾病诊断模型
郑楷洪 兰妙萍
中国矿业大学计算机学院
摘要:医生诊断就诊人员是否患肾炎时,通常要化验人体内各种元素含量,通过分析元素含量来判断病人是否患病。
为了能够方便准确的诊断疾病,需要通过建立更加实用的数学模型来应用于诊断设备,实现更加准确的诊断。
本文引出了—种BP 神经网络预测模型,通过对已有数据记录进行数学分析,找出简单有效的肾炎诊断方法。
用Matlab 神经网络工具箱以7种元素化验结果作为网络的输入接点设计了三层神经网络模型,计算并对其检验,得到满意的结果,并对30组就诊病人数据进行了预测。
关键词:肾炎诊断;BP 神经网络;数学模型;数据分析
一、 引言
在现代生活当中,许多疾病困扰着我们的生活,在某种程度上说诊断疾病是一项相当复杂的过程,需要对许多因素进行分析,有时甚至会出现误诊,而且有时需要花销大量费用。
为了节约费用且能够方便准确的诊断疾病需要通过建立更加实用的数学模型来来应用于诊断设备,从而实现更加准确的诊断。
本文通过BP 神经网络构造出一个疾病诊断模型,通过对数据进行分析拟合来判断就诊人员是否患病。
二、 原理分析
BP 神经网络可以是一种具有三层或三层以上的神经网络,包括输入层、中间层(隐层)和输出层,上下层之间实现全连接,而每层神经元间无连接。
当一对学习样本提供给网络后,神经元的激活值从输入层经各中间层向输出层传播,在输出层的各神经元获得网络的输入响应。
按照减少目标输出与实际误差的方向,从输出层经过各中间层逐层修正各连接权值,最后回到输入层,即BP 算法。
BP 算法通过“训练”这一事件来得到这种输入、输出间合适的线性或非线性关系。
“训练”的过程可以分为向前传输和向后传输两个阶段。
三、 实现方法或步骤流程
下面我们就基于BP 人工神经理论来建模。
(1)初始化。
给每个连接权值mt lm v w ,,阈值t m γθ,赋予区间(-1,1)内的随机值。
(2)随机选取一组输入和目标样本),...,,(),...,,(n 21n 21k k k k k k k k s s s T a a a P ==、提供给网络。
(3)用输入样本),...,,(n 21k k k k a a a P =,连接权lm w 和阈值m θ计算中间层各单位的输入m s ,然后用m s 通过传递函数计算中间层各单位的输出m b 。
p m a w s m l lm
n m m ,...,2,11=−=∑=θ (1)
p m s f b m m ,...,2,1)
(== (2) (4)利用中间层的输出m b ,连接权mt v 和阈值t γ计算输出层各单位的输出t L ,然后利用通过传递
函数计算输出层各单元的响应t C 。
q t b
v L t m mt p m t ,...,2,11=−=∑=γ (3)
q t L f C t t ,...,2,1)
(== (4) (5)利用网络目标向量),...,,(p 21k k k k y y y T =,网络的实际输出t C ,计算输出层的各单位一般化误差
k t d 。
q t C C C y d t t t t k k t ,...,2,1)1()(=−⋅−= (5)
(6)利用连接权mt v 、输出层的一般化误差t d 和中间层的输出j b 计算中间层各单位的一般化误差k m
e 。
)1(][1
m m q
t mt t k
m
b b v d e −⋅=∑= (6) (7)利用输出层各单位的一般化误差k
t d 与中间层各单位的输出j b 来修正连接权jt v 和阈值t γ。
1
0;,...,2,1;,...,2,1)()1()()1(<<==⋅+=+⋅⋅+=+αγγαp m q t d a N N b d N v N v k
t t t m
k t mt mt (7) (8)利用中间层各单位的一般化误差k m e ,
输入层各单位的输入),...,,(n 21a a a P =来修正连接权lm w 和阈值m θ。
1
0;,...,2,1;,...,2,1)()1()()1(1<<==+=+⋅⋅+=+ββθθβp m n l e N N a e N w N w k m m m k
k m lm lm (8)
(9)随机选取下一个学习样本向量提供给网络,返回步骤(3),直到λ个训练样本训练完毕。
(10)重新从λ个学习样本中随机选取一组输入和目标样本,返回步骤(3),直到网络全局误差E (即给定误差)小于预先设定的一个极小值,即网络收敛。
如果学习次数大于预定设定的值,网络就无法收敛。
四、 实验设计和结果分析
BP 网络的训练所采用的算法是反向传播法,可以以任意精度逼近任意的连续函数。
近年来,为了解决BP 网络收敛速度慢,训练时间长等不足,提出了许多改进算法。
在应用BP 网络解决实际问题的过程中,选择多少层网络、每层多少个神经元节点、选择何种传递函数、何种训练算法等,均无可行的理论指导,只能通过大量的实验计算获得。
这无形增加了研究工作量和编程计算工作量。
MATLAB 软件提供了一个现成的神经网络工具箱(Neural Network Toolbox ,简称NNbox),为解决这
个矛盾提供了便利条件。
我们利用NNbox 编写程序(见附录),根据a t l m ++=(t 为输出单元数,l 为输入单元数,a 为1~10之间的任意常数)来确立隐藏层的层数。
输入单元为7=n ,输出单元1=m ,取5=a ,这样可以得到71≈n ,取其值为7,进而可以很顺利的得出训练传递函数,最终得到的结果较优。
精度0.0001,训练次数704次:
1010101010100704 Epochs T r a i n i n g -B l u e G o a l -B l a c k Performance is 9.74635e-005, Goal is 0.0001
图1. 训练结果
并用它模拟了就诊人员的数据,与原数据比较,我们得到了满意的结果。
靠近1说明有病,靠近0说明健康,利用此网络进行诊断结果跟题目所给数据对比,显然,正确率是100%。
将就诊人员各元素的含量值带入BP 神经网络模型通过模型中的训练传递函数可以得到诊断结果的预测值,通过我们对已确诊人员诊断结果的0-1赋值(0代表健康,1代表患肾炎)的方法可以对就诊人员作出较为准确的诊断。
五、 结论
针对本次实验问题的性质,用0表示健康,1表示确诊患有肾炎,先用BP 神经网络模型给出直观精确的结果。
回代训练样本时此模型的正确率达到100%。
由实验结果可知,本次使用的BP 神经网络模型得到较好的训练效果。
通过这个疾病诊断模型,可以快速准确地判断出了就诊人员是否患病。
为进一步加大精度,可以用神经网络和模糊控制相结合的检测方法,利用二者的并行性,充分发挥模糊控制系统鲁棒性强、模仿人的思维的优点,可以得到更好的拟合结果,并且可以适应于常规控制难以解决的非线形、时变及滞后系统。
参考文献:
[1]桂现才.BP 神经网络在MATLAB 上的实现与应用.湛江师范学院学报.2004.25(3).1-5.
[2]傅鹂.数学实验.北京:科学出版社, 2000.105-108
[3]边肇祺,张学工等. 模式识别(第二版).北京:清华大学出版社,2000.254-257。