李丽琴(华南农业大学食品学院,广东广州510642)
中图分类号:R692文献标识码:A文章编号:1033-2738(2012)05-0330-02
摘要:目前世界超过5亿人患有不同的肾脏疾病,但全社会对慢性肾脏病的知晓率尚不足10%,肾病患者甚至一些非肾脏科的大夫对慢性肾脏病的危害缺乏足够的了解,由于慢性肾脏病早期多没有明显症状,很容易被忽略,很多患者直到肾功能完全恶化导致尿毒症时才去就医。同时,针对不同慢性肾病的等级又有对应的不同治疗方向。因此,对慢性肾病进行分级预警是一个影响非常深远的课题。在进行慢性肾病分级的过程中,肾小球滤过率对慢性肾病分级起着基础与指导的作用,因此我们必须着重解决一个重要的问题:肾小球滤过率的评估。
本文主要针对肾小球滤过率的预测进行设计。为了达到人工智能对慢性肾病进行分级的最终目的,本文将通过MATLAB软件平台对肾小球滤过率的评估进行仿真。接着对于在医院收集好的数据进行筛选,最终选出一组具有较高参考意义的数据,对其使用适当的处理方法,并运用了BP神经网络来构建合适的预测模型,对肾小球滤过率进行预测评估。在经过反复的网络学习,测试后,最终确定一个误差最少,精度最高,稳定性最好的BP神经网络评估模型。最后,根据训练好的神经网络对数据进行分级,从而最终构建出一个实用性良好的慢性肾病分级预警模型。
关键词:慢性肾病;肾小球滤过率;BP神经网络
一、前言
在众多的神经网络结构中,多层前馈神经网络是目前应用最广泛也是最成熟的一种网络结构。Rumelhart,McClelland和他们的同事洞察到神经网络信息处理的重要性,于1982年成立了一个PDP小组,在研究并行分布信息处理方法,探索人类认知的微结构的过程中,于1986年提出了BP网络(Back.PropagationNetwork,简称BP网络)模型,实现了Minsky的多层网络设想[1]。在多层前馈神经网络MFNN中,网络权值的调整是通过著名的误差反向传播学习算法——BP算法来进行的。BP网络具有非线性映射能力、泛化能力和容错能力,同时BP网络结构简单,是在自动控制中是最有用的学习算法之一,也是慢性疾病分析的首选神经网络[2-5]。因此,本文选取这种网络结构作为慢性肾病分级预测的基础,在后面将对它进行详细论述。
二、基于BP神经网络的慢性肾病分级预警模型设计框架
要设计出慢性肾病的分级预警模型,关键在于如何把慢性肾病进行分级[6-9]。我所采用的设计框架是基于MATLAB的BP神经网络,把从医院获得的临床数据进行筛选,并对网络进行初始化设置,运用BP神经网络对数据进行学习,根据不断的误差修正以及数据的测试,构建起肾小球滤过率的预测模型,根据肾小球滤过率的指标最终建立起符合实际的慢性肾病分级预警模型,如图1所示。
图1慢性肾病预警模型设计框架
因此,本文的整个设计重点分为两部分:第一部分为建立肾小球滤过率的预测模型,第二部分为建立基于人工智能的慢性肾病分级预警模型。
(一)BP神经网络进行肾小球滤过率预测的原理
BP神经网络是通过对以往历史数据的学习,找出不同测量指标对肾小球滤过率的相应的非线性的变化关系,并将具体的资料存储于相应的权值与阈值之中,从而对肾小球滤过率进行预测。
(二)基于BP神经网络的肾小球滤过率预测模型
利用BP神经网络对肾小球滤过率进行预测时,网络的拓扑结构的设计、隐层节点个数的确定、样本数据的选取以及对原始数据、输出数据的预处理的确定等问题,都直接影响着我们所建立的肾小球滤过率预测模型的各项性能[10-12]。
1.网络拓扑结构的设计。
由于网络训练样本是有限的,因此把推广能力作为主要的要求来操作的话,则强调选择能达到要求的最小网络[13]。许多理论都表明,一个三层网络可以任意逼近一个非线性连续函数。由于这种三层网络简单、易于实现、计算量小、并行性强得众多特点,目前仍然是多层式网络训练的首选网络结构之一,并且已经被人们广泛应用于解决实际的问题。因此,鉴于上述提及的论点,本文采取三层网络建模进行对肾小球滤过率的预测。
相比起输入输出层节点的选择,隐层节点数目的选择可谓是一个较为复杂的问题,因为没有很好的表达式来表示。隐层节点的数目与我所需要的输入、输出节点数目密切相关。隐层节点数目太小,则会导致学习过程不能收敛,或者导致网络实用性不强,不能识别以前所没有遇到过的样本;但是如果隐层节点数目过多,虽然网络映射能力会增强,局部极小点会越少,且越容易收敛到全局最小点,但会使学习时间加长,同时使得网络训练过度,这时网络不但记住了训练样本的一般特征,而且记住了训练样本中的一些个别特征,包括随机噪声,这样将会导致网络的容错性降低[14]。
确定一个最佳的隐层节点数的一个常用方法称为试凑法,可先设置较少的隐层节点用以训练网络,随后逐渐增加隐层节点数,用同一样本进行训练,从中确定出网络误差最少的时候对应的隐层节点数[15]。在使用试凑法的时候,可以用一些确定隐层节点数的经验公式。这些公式计算出来的隐层节点数虽然只是一些粗略的估计值,但是可作为大致隐层节点数目的参考:
以上各式中m为隐层节点数,n为输入层节点数,l为输出层节点数,a为1-10之间的常数[16]。在本文中采取了式(3-1)来确定隐层节点数的大概范围,然后将根据实验结果反复修正具体的隐层结点个数。
对于BP网络来说,为了节约训练网络的时间,可以采用部分连接的方式,使得在合理的时间内获得比较好的精度。而本文将采用相邻两层节点全连接,而同一层的节点互不相连的连接方式构造BP神经网络。
(三)肾小球滤过率预测模型的MATLAB实现。
在建立了肾小球滤过率的预测模型之后,就要开始使用MATLAB仿真软件构件BP神经网络,同时通过对网络的不断训练,以求达到最好的肾小球滤过率的预测效果。
1.BP网络的MATLAB实现。
MATLAB是一套功能强大的工程计算及数学分析的可视化软件。1984年,Mathwork公司将MATLAB推向市场。90年代又逐步拓展起数值计算、符号解析运算、文字处理、图形显示等功能,至今,MATLAB已经成为线性代数、自动控制理论、概率论及数理统计、数字信号处理、时间序列分析、动态系统仿真等方面重要的数学计算工具[19]。它具有程序可读性强、程序简单等优点,尤其是在编写含矩阵运算的复杂程序时,能给用户提供极大方便。
现在,神经网络已经成为了解决一些问题的手段以及方法,但利用神经网络来解决问题的时候,必定会设计到大规模的运算量,其中包括了矩阵计算的问题等,考虑到MATLAB的神经网络工具箱的特殊功能,以及效率与准确性的问题,本文选择了专门用于了MATLAB软件进行仿真模拟。
(1)BP神经网络的生成及初始化。
在MATLAB软件中,我们采用newff函数来生成BP网络,而newff函数的调用格式为:
其中PR为维的矩阵,表示R维输入矢量中每维输入的最小值和最大值之间的范围;因此,通常我们会设定、,即设定PR为P的最小值和最大值之间的范围;中n表示BP神经网络所具有的层数,而Sn则表示具体第几层具有多少个神经元;中各元素表示各层神经元采用的传递函数;BTF则表示神经网络训练时所用的训练函数;net为生成的BP网络对象。对于newff生成的BP神经网络,网络本身对各层的权值和阈值会自动进行初始化,如果用户需要,则可以对各层网络的权值和阈值的初始化函数重新定义。
(2)BP神经网络的训练。
在BP神经网络生成及初始化后,就可以开始对网络进行训练了。BP神经网络的训练通常采用train函数来完成,在训练之前需要对网络的训练参数net.trainparam进行适当的设置。当设置完训练参数之后,就可以开始调用train函数对BP神经网络进行训练了。该函数采用自适应学习速率法,返回误差参数。其调用格式如下:
其中P是输入样本;T是对应的输出样本;等号的左右两侧的net分别用于表示训练得到的和训练之前的神经网络对象;tr存储了训练过程中的步数信息以及误差信息,并给出了网络误差的实时变化曲线。
(3)BP神经网络的仿真。
在MATLAB的应用中,我们选用sim函数对训练之后所得到的网络进行仿真,sim函数的调用格式如下:
其中,net为神经网络对象,P为输入样本,Pi为输入延迟的初始状态,Ai为层延迟的初始状态,T为输出样本,Y为网络的实际输出,Pf为训练终止时的输入延迟状态,Af为训练终止时的层延迟状态,E为输出样本和实际输出之间的误差,pref为网络性能值。
对于本文的sim函数调用,采取了如下调用格式进行简化:
(4)BP神经网络的保存。
在完成网络的训练后,必须要对训练后的网络进行保存,这样才能在下次进行预测的时候沿用训练过的网络,在MATLAB中,保存网络的调用格式如下:
以上即为肾小球滤过率预测模型的设计流程。
2.BP神经网络进行肾小球滤过率预测的实现。
(1)数据样本的选取。
为实现肾小球滤过率的预测模型,本文选取了广州珠江医院的327例慢性肾病病历作为研究对象。
初始权值采取的是随机数,输入层到单隐层采用的传递函数为tansig函数,单隐层到输出层采用的传递函数为logsig函数,训练函数采用trainlm函数。同时,设置300个训练网络的样本数据,误差精度设置为E<0.01,学习次数设置为2000次,学习速率初始值设为0.1。
BP神经网络的训练是网络是否成功的一个非常重要的环节,网络训练的好坏直接影响到预测的准确性与稳定性。因此,对网络进行训练和测试的时候,必须要反复修改设置参数,方能达到最佳效果。
在神经网络训练完成之后,需要用另外的测试数据来对网络进行检验,而这些测试的数据应该要是独立的数据。因此,学习与测试过程需要独立开来,一旦BP网络学习完成了,就必须要将权值保存下来,以供下次预测使用。
(四)仿真实验及结果分析。
1.应用肾小球滤过率预测模型建立慢性肾病分级预警模型。
上述建立肾小球滤过率预测模型的目的,正是为了建立起慢性肾病的分级预警模型。在预测到肾小球滤过率的基础上,运用数据,建立起对应的慢性肾病的分级模型。在表1中,根据归纳方法,列出了以上20组预测数据的预测分级情况与这20组数据实际的分级情况的对比。
表120组数据的预测分级与实际分级情况对比
从上表1可以看出,基于MATLAB的神经网络对慢性肾病的分级有较好的准确性,能较好地对慢性肾病进行分级预警,因此,具有良好的推广性以及实用性。
三、结论
本文的工作只是一种基础性的、初步的工作,涉及到BP神经网络的一些重要应用显得还比较浅,因此,在今后的研究里面,还需要对其中的许多性能参数进行有效的修改,方能得到理想的结果。
在今后的研究中,对BP网络的算法修改是一个非常大的课题,为了能使网络的预测能力最大限度地根据实际情况达到目的,必须针对现有的数据资料,对使用的算法进行改良。同时,为了更有效,更准确地得到预测结果,需要对样本的数量继续加以增加,方能达到理想的目标。
因此,以BP神经网络对医学各个方向的预测是今后研究许多医学问题的主要趋势,是一个值得深入探讨的重要课题。
参考文献:
[1]程晓霞.慢性肾病的幕后推手.疾病与营养。
[2]张春,邓安国.慢性肾脏病心血管并发症的危险因素与防治.临床内科杂志,200825(7)。
[3]陆汉魁.中华检验医学杂志.20073(11)P.1211-1212。
[4]叶解明.简化估算肾小球滤过率模型算法的参考限及临床特性.2010,25(4)。
[5]M.Kastra.ForecastingCombiningwithNeuralNetworks.Forecast,1996,15(1):49—61。
[6]韩力群.人工神经网络教程.北京:北京邮电大学出版社,2006。
[7]王万森.人工智能原理及其应用.北京:电子工业出版社,2006.27-51。
[8]T.Kohonen.Theselforganizingmap.ProcIEEE,1990,(78):1464~1480。
[9]D.E.Rumelhart,GE.Hinton,R.J.Williams.LearningRepresentationsbyBack.propagatingErrors.Nature,1986,323(9):533-536。
[10]钟义信.智能理论与技术——人工智能与神经网络.北京:人民邮电出版社.1992:45--46。
[11]吴凌云.BP神经网络学习算法的改进及其应用.信息技术,2003,27(7):42—44。
[12]吴耿锋等.股票短期预测的一种非线性方法.上海投资,1999:35、37。
[13]徐丽娜.神经网络控制.哈尔滨:哈尔滨哈尔滨工业大学出版社,2006:241~256。
[14]师智斌,陈立潮,靳雁霞.基于神经网络的股票交易数据的预测研究.华北工学院学报,2003,34(6):12~16。
[15]尹念东.BP神经网络的应用设计.信息技术,2003,27(6):18~20。
[16]韩力群.人工神经网络教程.北京:北京邮电大学出版社,2006:74~75。
[17]吴佑寿,赵明生.激活函数可调的神经元模型及其监督学习与应用.中国科学E辑,2001,3l(3):263。
[18]哈根.神经网络设计(戴葵译).北京:机械工业出版社,2002:30--45。
[19]禹建丽,孙增圻,Valeri.K等.基于BP神经网络的股市建模与决策.系统工程理论与实践,2003,37(5):17~21。