基于遗传算法优化的BP神经网络的心电图分类方法与流程

文档序号:18625868发布日期:2019-09-06 23:01阅读:576来源:国知局
基于遗传算法优化的BP神经网络的心电图分类方法与流程

本发明涉及人工智能技术领域,特别是一种基于遗传算法优化的bp神经网络的心电图分类方法。



背景技术:

现有随着计算机技术和人工智能技术的发展,心电图的自动分类方法已经逐渐趋于成熟。目前,对心电图分类识别的方法的研究主要有两类:基于波形形态的分类方法和基于波形特征的分类方法。第一种方法比较直观清晰,容易让人接受;第二种方法则需要提取波形的本质特征。基于波形形态的分类方法,是在提取的特征波形的基础上,计算各个波形的时间宽带、波与波之间的间期、各个波的幅值,然后利用医学上疾病分类规则从而作出的判断,这是让计算机模拟心电医生对心电图诊断的过程,建立在医学先验知识上,具有一定的合理性。但是由于心电信号的多样性,使得目前的心电图自动分类的精度并不理想,准确率也不高,还达不到令人满意的程度。



技术实现要素:

为解决现有技术中存在的问题,本发明的目的是提供一种基于遗传算法优化的bp神经网络的心电图分类方法,该方法首先利用遗传算法,选出最优后代,有效的避免陷入局部最优,然后将这些后代作为bp神经网络的数据集,此算法相比于传统的心电图分类算法具有更高的准确率,提高了心电图自动诊断的准确性和稳定性,具有重要的现实意义。

为实现上述目的,本发明采用的技术方案是:一种基于遗传算法优化的bp神经网络的心电图分类方法,其特征在于,包括以下步骤:

s10、从数据库中选取数据集,并通过matlab程序读取所述数据集,并以mat格式文件进行保存;

s20、利用遗传算法对数据集进行交叉变异选出最优子代,将得到的结果作为训练样本传入bp神经网络的输入层;

s30、训练bp神经网络,所述bp神经网络包括依次连接的输入层、多层隐含层单元和输出层,其中,同一层神经元之间无连接,前一层节点与后一层节点采用全连接的方式,具体包括以下步骤:

s31、计算隐含层、输出层的各输入输出;

s32、计算隐含层各单元的校正误差;

s33、调整隐含层到输出层的权重及输出层阈值;

s34、调整输入层到隐含层的权重及输出层阈值;

s35、当误差小于等于预设的误差门限值时,结束训练;

s40、将待分类的心电图通过matlab程序读取出mat格式文件,然后输入训练好的bp神经网络对待分类的心电图进行分类。

作为一种优选的实施方式,所述步骤s20中,利用遗传算法对数据集进行交叉变异选出最优子代具体包括以下步骤:

s21、采用二进制对染社体进行编码,用二进制符号串构成个体基因型;

s22、设定初始种群:根据优化问题,把握最优解所占空间在整个问题空间的分布范围,然后,在此分布范围内设定合适的初始群体;先随机生成一定数目的个体,然后从中挑出最好的个体加入到初始群体中,再不断迭代,直到初始群体中个体数目达到了预先确定的种群大小;

s23、选择运算:找出当前群体中适应度值最高和最低的个体的集合,若当代群体中存在适应度值比迄今为止最好个体的适应度高的个体,则用此个体作为新的迄今为止的最好个体,用迄今为止的最好个体将当代群体中的最差个体替换掉;

s24、交叉运算:采用随机的方法对个体进行两两配对;在配对的个体中,采用随机的方法设置一个或者多个交叉点;依据设定的原则进行染色体交换,形成新的个体;

s25、变异运算:指定一个变异概率pm,然后在(0,1)之间取一组随机数,其长度与编码长度相同,然后将随机数小于变异概率pm的位置上的个体基因值取反。

作为另一种优选的实施方式,所述步骤s30中,采用relu激活函数将隐含层节点的输出节点传播到输出节点,为了防止过拟合,采用dropout函数修改bp神经网络本身结构,并且设置神经元被选中的概率为0.8,然后通过softmax分类器输出分类结果,最后通过误差反向传播修改各层神经元之间的权值和阈值。

作为另一种优选的实施方式,计算隐含层、输出层的各输入输出具体包括:

设激活函数为σ(z),l1层为输入层,l2层为隐藏层,隐藏层中每一个节点的输出分别表示为:

对于第三层的输出满足如下关系:

在bp神经网络中假设第l-1层共有m个神经元,第l层共有n个神经元,通过类推则第l层的第j个神经元的输出满足如下关系:

第l-1层激活后的输出a组成了一个m×1的向量al-1,根据上式得出第l层的权重系数ω组成了n×m的矩阵wl以及偏倚向量b组成了n×1的向量bl,对于第l层未激活前线性输出z组成了n×1的向量zl,激活后的输出a组成了n×1的向量al,用矩阵法表示第l层的输出为:

al=σ(zl)=σ(wlal-1+bl)。

本发明的有益效果是:本发明利用了遗传算法良好的搜索性能,在高维的神经网络参数解空间中进行相对最优值搜索,从而尽量避免神经网络在训练过程陷入局部最优的风险,并以此来提高网络的稳定性,经过遗传算法筛选出的后代作为bp神经网络的数据集,相比于传统的心电图分类算法具有更高的准确率。对于心脏病高发的当今时代,如何在现有技术的基础上进一步加强对心电图数据的分析,提高心电图自动诊断的准确性和稳定性,具有重要的现实意义。

附图说明

图1为本发明实施例的流程框图;

图2为本发明实施例三层bp神经网络示意图。

具体实施方式

下面结合附图对本发明的实施例进行详细说明。

实施例:

如图1所示,一种基于遗传算法优化的bp神经网络的心电图分类方法,包括以下步骤:

1、选取合适的数据集:目前,国际上公认的可以作为标准的有四个数据库:麻省理工学院的心律失常数据库(简称mit-bih数据库)、美国心脏协会赞助华盛顿大学的心电图数据库(简称aha数据库)、qt数据库、欧盟组织整理的心电图通用标准数据库(简称cse数据库),mit-bih数据库成为目前应用最多的数据库,现有的很多心电相关的研究都是将该数据库作为实验数据和检测标准。本实施例选取48组mit-bih数据库的数据集进行实验,由于mit-bih数据库中每一个数据包括三个文件:hea文件,atr文件,dat文件,不能直接读取数据,数据集下载之后无法直接使用,所以通过matlab程序读取这三个文件,通过修改每个数据的标号,就能读出每一个数据并以mat格式文件保存,因为通过matlab程序读取出来的数据形式为2*1024维,所以设置bp神经网络输入层节点为2048。考虑到若隐含层节点数太少,网络性能很差,若隐含层节点数太多,网络训练的时间会延长,本实施例设置4层隐含层节点数分别为50,10,10,4。

2、利用遗传算法对数据集进行交叉变异选出最优子代,将得到的结果作为训练样本传入bp神经网络的输入层:

在本实施例中,主要是利用了遗传算法良好的搜索性能,在高维的神经网络参数解空间中进行相对最优值搜索,从而尽量避免神经网络在训练过程陷入局部最优的风险,并以此来提高网络的稳定性。具体参数为:种群个体数量为20,交叉概率0.2,变异概率0.05。遗传算法选取最优后代的具体过程如下:

(1)染色体的编码方式采用二进制编码,即用{0,1}所组成的二进制符号串构成个体基因型,采用二进制编码有如下优点:遗传算法中的遗传操作如交叉、变异很容易实现,且容易用生物遗传理论来解释;算法可处理的模式多,增强了全局搜索能力;便于编码、解码操作;

(2)、初始种群的设定:遗传算法是按随机方法在可能解空间内产生一个一定规模的初始群体,然后从这个初始群体开始遗传操作,搜索最优解。对于种群初始化,个体编码方法为实数编码,每隔个体均为一个实数串,由输入层和隐含层连接权值、隐含层阈值、隐含层与输出层连接权值以及输出层阈值4个部分组成,个体包含了神经网络全部的权值和阈值。本实施例采用以下规则设定初始种群:

根据优化问题,把握最优解所占空间在整个问题空间的分布范围,然后,在此分布范围内设定合适的初始群体;

先随机生成一定数目的个体,然后从中挑出最好的个体加入到初始群体中。该过程不断迭代,直到初始群体中个体数目达到了预先确定的种群大小。

(3)、选择算子分析:选择算子的作用是选择优良基因参与遗传运算,目的是防止有用的遗传信息丢失,从而提高全局收敛效率。本实施例采用最优保存选择机制。具体步骤如下:找出当前群体中适应度值最高和最低的个体的集合;若当代群体中存在适应度值比迄今为止最好个体的适应度高的个体,则用此个体作为新的迄今为止的最好个体;用迄今为止的最好个体将当代群体中的最差个体替换掉。

(4)、交叉算子设计:采用随机的方法对个体进行两两配对;

在配对的个体中,采用随机的方法设置一个或者多个交叉点;

依据设定的原则进行染色体交换,形成新的个体。

(5)、变异算子分析:本实施例采用二进制编码下的变异算子,具体步骤如下:基本变异算子是指随机生成一个或多个变异位置,然后对其对应码值取反。具体操作过程:先指定一个变异概率pm,然后在(0,1)之间取一组随机数,其长度与编码长度相同。然后将随机数小于变异概率pm的位置上的个体基因值取反。

算法终止条件:遗传算法选择最优子代的终止条件为:染色体的评估适应度值达到预定值。

3、训练bp神经网络,所述bp神经网络包括依次连接的输入层、多层隐含层单元和输出层,其中,同一层神经元之间无连接,前一层节点与后一层节点采用全连接的方式,如图2所示,采用relu激活函数将隐含层节点的输出节点传播到输出节点,为了防止过拟合,采用dropout函数,通过修改神经网络本身结构来实现。该方法是在对网络进行训练时用一种技巧,在训练开始时,随机得删除一些(可以设定为一半,也可以为1/3,1/4等)隐藏层神经元,即认为这些神经元不存在,同时保持输层与输出层神经元的个数不变。并且设置神经元被选中的概率为0.8,然后通过softmax分类器输出分类结果,最后通过误差反向传播修改各层神经元之间的权值和阈值。训练bp神经网络具体包括以下步骤:

3.1、计算隐含层、输出层的各输入输出;具体包括:

设激活函数为σ(z),l1层为输入层,l2层为隐藏层,隐藏层中每一个节点的输出分别表示为:

对于第三层的输出满足如下关系:

在bp神经网络中假设第l-1层共有m个神经元,第l层共有n个神经元,通过类推则第l层的第j个神经元的输出满足如下关系:

第l-1层激活后的输出a组成了一个m×1的向量al-1,根据上式得出第l层的权重系数ω组成了n×m的矩阵wl以及偏倚向量b组成了n×1的向量bl,对于第l层未激活前线性输出z组成了n×1的向量zl,激活后的输出a组成了n×1的向量al,用矩阵法表示第l层的输出为:

al=σ(zl)=σ(wlal-1+bl)。

3.2、计算隐含层各单元的校正误差;

3.3、调整隐含层到输出层的权重及输出层阈值;

3.4、调整输入层到隐含层的权重及输出层阈值;

3.5、当误差小于等于预设的误差门限值时,结束训练,bp神经网络终止条件为,达到预定迭代次数。

4、将待分类的心电图通过matlab程序读取出mat格式文件,然后输入训练好的bp神经网络对待分类的心电图进行分类。

以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1