基于卷积神经网络的糖尿病视网膜并发症诊断辅助系统的制作方法

文档序号:15777118发布日期:2018-10-30 15:35阅读:310来源:国知局
基于卷积神经网络的糖尿病视网膜并发症诊断辅助系统的制作方法

本发明涉及基于卷积神经网络的糖尿病视网膜并发症诊断辅助系统。



背景技术:

传统中医通过“望闻问切”进行疾病诊断,即便有各项精确指标,传统的人工方法仍有很多缺陷:1)医生要对每个病人的数十上百种指标做系统性判断和筛选,耗费大量人力,且有一定误判几率;2)当病症不止一种(即并发症)时,复杂的致病因素将使得人工诊断变得不那么直观;3)个体差异会导致病情和治疗效果不尽相同,而个体差异有时非常细微,会被人工诊断忽略;

近年来,随着机器学习、大数据、深度神经网络等认知计算技术的兴起,给各行业带来深远变革,医疗大数据也正悄然兴起。机器学习模型大致分为两类:经典模型和深度模型。经典模型有lr、svm、rf、gbdt等,其优点是训练快速,能输出特征重要性,可解释性好,而缺点是模型相对简单,特征学习能力一般。深度模型包括dnn、cnn、rnn等,其优点是预测精度高,特征学习能力强,具有万能逼近的特质,而缺点是模型复杂,训练速度慢,对计算资源要求高。

本发明选择“糖尿病视网膜并发症”作为切入点,这是一个临床上最常见的糖尿病人微血管并发症之一,但如果不及时治疗,将导致糖尿病人致盲。引起这一并发症的原因多种多样较为复杂,治疗手段也不一而足。如果我们能提前从病人的化验指标中分析出潜在可能性,并给予对应的治疗,将大大降低发病几率,增强治疗效果。



技术实现要素:

本发明旨在利用目前前沿的认知计算技术,将其应用到疾病检测和诊断中。通过对大量样本建模、训练和预测,使用深度学习、集成学习等方法,自动精准预测病人病情和治疗效果。在本发明中,本模型将传统的卷积神经网络lenet模型的网络结构进行重新设计,加入bn层得出一个新模型bncnn,有效的防止了梯度弥散,加快了训练速度,提高了模型精度。另外还加入了自适应池化层,对深度学习模型进行了优化。本发明设计了基于卷积神经网络的糖尿病视网膜并发症诊断辅助系统,避免了人工显式的特征提取,隐式地从训练数据中进行学习。

基于卷积神经网络的糖尿病视网膜并发症诊断辅助系统,包括:

训练集和测试集准备模块,用于准备2型糖尿病并发视网膜病变和非2型糖尿病并发视网膜病变的训练集和测试集;

卷积神经网络构建模块,用于构建卷积神经网络;

卷积神经网络优化模块,用于对所构建的卷积神经网络进行优化;

卷积神经网络训练模块,利用训练集对卷积神经网络进行训练;

分类输出模块,将测试集作为训练好的神经网络的输入,输出值是2型糖尿病并发视网膜病变或非2型糖尿病并发视网膜病变。

作为本发明的进一步改进,所述训练集和测试集准备模块,用于

获取2型糖尿病并发视网膜病变患者样本信息,一部分作为第一训练样本,另外一部分作为第一测试样本,患者样本信息包括:患者就诊编号、诊断时间、距离诊断时间最近的患者糖化检查信息、距离诊断时间最近的患者生化检查信息;针对每一名患者从糖化检查信息中提取预先选定指标的指标值,同时从生化检查信息中提取预先选定指标的指标值;

获取非2型糖尿病并发视网膜病变人员样本信息,一部分作为第二训练样本,另外一部分作为第二测试样本,人员样本信息包括:就诊编号,就诊时间,距离就诊时间最近的糖化检查信息、距离就诊时间最近的生化检查信息;针对每一名非2型糖尿病并发视网膜病变的人员从糖化检查信息中提取预先选定指标的指标值,同时从生化检查信息中提取预先选定指标的指标值;

其中,第一训练样本和第二训练样本作为训练集,第一测试样本和第二测试样本作为测试集。

作为本发明的进一步改进,所述卷积神经网络构建模块,用于构建

输入层,用于输入训练集;

第一卷积层,卷积核大小为5*5,卷积核种类为6,可训练参数为(5*5+1)*6个,第一卷积层用于对输入训练集进行反卷积操作;

第一bn层,用于对第一卷积层的输出值进行批归一化处理;

第一池化层,采样区域为2*2,采样种类为6,可训练参数为2*6个,第一池化层用于对第一bn层的输出值进行采样操作;

第二卷积层,卷积核大小为5*5,卷积核种类为16;第二卷积层,用于对第一池化层的输出值进行反卷积操作;

第二bn层,用于对第二卷积层的输出值进行批归一化处理;

第二池化层,采样区域为2*2,采样种类为16,神经元数量为5*5*16个,第二池化层用于对第二bn层的输出值进行采样操作;

第三卷积层,卷积核大小为5*5,卷积核种类为120;第三卷积层,用于对第二池化层的输出值进行反卷积操作;

第三bn层,用于对第三卷积层的输出值进行批归一化处理;

全连接层,计算第三bn层的输出值与设定权重向量之间的点积,点积再加上偏置得到的结果输入到sigmoid函数中进行分类;

输出层,输出分类结果。

所述反卷积操作是指:将每个数据特征看做一个通道channel,对每个数据特征做一个反卷积;当卷积核的维度大于数据特征维度的时候,对反卷积之后的特征使用padding操作对缺失数据进行补零;padding操作使得数据特征维度大于等于卷积核的维度,把数据看作118个channel,对每个channel里的单点进行卷积。

作为本发明的进一步改进,所述卷积神经网络优化模块,用于

使用网格搜索来优化卷积神经网络中的超参数;使用adam算法来优化卷积神经网络;

针对糖化检查信息或生化检查信息中的缺失值,利用mice插补法进行填补。

在定义前向传播foward时,把卷积层和池化层的forward定义在一起,数据维度不改变;把全连接层的forward定义在一起,数据维度改变;中间用adaptive_maxpool1d连接卷积池化层与全连接层两部分来解决维度变化,所以函数自定义的结构顺序为:conv_forward、layer_bridge和fc_forward。

本发明的有益效果是:

通过使用卷积神经网络模型实现对糖尿病视网膜并发症进行自动化的诊断,取得了97.6%的极高准确率,能够在一定程度上辅助医生进行诊疗。一般情况下疾病诊断准确度的提升能够在一定程度上提高社会的稳定性。

本发明解决了一维无关数据如何做卷积的问题,将卷积神经网络用于一维无关数据集中,打破了传统意义上cnn在图像领域的适用专一性。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1为本发明的功能模块图;

图2为本发明针对疾病诊断设计的新模型bncnn结构图;

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

如图1所示,基于卷积神经网络的糖尿病视网膜并发症诊断辅助系统,包括:

训练集和测试集准备模块,用于准备2型糖尿病并发视网膜病变和非2型糖尿病并发视网膜病变的训练集和测试集;

获取2型糖尿病并发视网膜病变患者样本信息,一部分作为第一训练样本,另外一部分作为第一测试样本,患者样本信息包括:患者就诊编号、诊断时间、距离诊断时间最近的患者糖化检查信息、距离诊断时间最近的患者生化检查信息;针对每一名患者从糖化检查信息中提取预先选定指标的指标值,同时从生化检查信息中提取预先选定指标的指标值;

获取非2型糖尿病并发视网膜病变人员样本信息,一部分作为第二训练样本,另外一部分作为第二测试样本,人员样本信息包括:就诊编号,就诊时间,距离就诊时间最近的糖化检查信息、距离就诊时间最近的生化检查信息;针对每一名非2型糖尿病并发视网膜病变的人员从糖化检查信息中提取预先选定指标的指标值,同时从生化检查信息中提取预先选定指标的指标值;

其中,第一训练样本和第二训练样本作为训练集,第一测试样本和第二测试样本作为测试集;

卷积神经网络构建模块,用于构建卷积神经网络;

输入层,用于输入训练集;

第一卷积层,卷积核大小为5*5,卷积核种类为6,可训练参数为(5*5+1)*6个,第一卷积层用于对输入训练集进行反卷积操作;所述反卷积操作是指:将每个数据特征看做一个通道channel,对每个数据特征做一个反卷积;当卷积核的维度大于数据特征维度的时候,对反卷积之后的特征使用padding操作对缺失数据进行补零;padding操作使得数据特征维度大于等于卷积核的维度,把数据看作118个channel,对每个channel里的单点进行卷积。

第一bn层,用于对第一卷积层的输出值进行批归一化处理;

第一池化层,采样区域为2*2,采样种类为6,可训练参数为2*6个,第一池化层用于对第一bn层的输出值进行采样操作;

第二卷积层,卷积核大小为5*5,卷积核种类为16;第二卷积层,用于对第一池化层的输出值进行反卷积操作;所述反卷积操作是指:将每个数据特征看做一个通道channel,对每个数据特征做一个反卷积;当卷积核的维度大于数据特征维度的时候,对反卷积之后的特征使用padding操作对缺失数据进行补零;padding操作使得数据特征维度大于等于卷积核的维度,把数据看作118个channel,对每个channel里的单点进行卷积。

第二bn层,用于对第二卷积层的输出值进行批归一化处理;

第二池化层,采样区域为2*2,采样种类为16,神经元数量为5*5*16个,第二池化层用于对第二bn层的输出值进行采样操作;

第三卷积层,卷积核大小为5*5,卷积核种类为120;第三卷积层,用于对第二池化层的输出值进行反卷积操作;所述反卷积操作是指:将每个数据特征看做一个通道channel,对每个数据特征做一个反卷积;当卷积核的维度大于数据特征维度的时候,对反卷积之后的特征使用padding操作对缺失数据进行补零;padding操作使得数据特征维度大于等于卷积核的维度,把数据看作118个channel,对每个channel里的单点进行卷积。

第三bn层,用于对第三卷积层的输出值进行批归一化处理;

全连接层,计算第三bn层的输出值与设定权重向量之间的点积,点积再加上偏置得到的结果输入到sigmoid函数中进行分类;

输出层,输出分类结果。

卷积神经网络优化模块,用于对所构建的卷积神经网络进行优化;

使用网格搜索来优化卷积神经网络中的超参数;使用adam算法来优化卷积神经网络;

卷积神经网络训练模块,利用训练集对卷积神经网络进行训练;

分类输出模块,将测试集作为训练好的神经网络的输入,输出值是2型糖尿病并发视网膜病变或非2型糖尿病并发视网膜病变。

针对糖化检查信息或生化检查信息中的缺失值,利用mice插补法进行填补。

在定义前向传播foward时,把卷积层和池化层的forward定义在一起,数据维度不改变;把全连接层的forward定义在一起,数据维度改变;中间用adaptive_maxpool1d连接卷积池化层与全连接层两部分来解决维度变化,所以函数自定义的结构顺序为:conv_forward、layer_bridge和fc_forward。

本发明解决了一维无关数据如何进行卷积的问题,打破了传统意义上cnn在图像领域的适用专一性,同时也得到了一个不错的预测结果。我们的实验显示,该模型的诊断准确率最高,达到约为99%的准确率,比普通的机器学习方法提高两个多百分点。本次研究为糖尿病并发视网膜病变的早期诊断以及优化诊断流程提供了一定的依据,将深度学习与电子病历信息相结合,并得到了不错的效果。

本发明的具体方案设计如下:

在步骤1中,我们将从301医院获取的电子医疗记录包括病人信息表、详细资料表、诊断表、生病体征记录表、生化指标表、糖化指标表、随访等,大约含有600万条记录进行数据的整合。

数据整合的步骤如下:

①根据首次诊断信息提取2型糖尿病并发视网膜病变的患者信息;

②根据患者就诊id以及诊断时间从糖化检查以及生化检查表中提取距离诊断时间最近的一次患者检查信息;

③从糖化、生化实验室检查中的诊断信息中提取出合并症的信息。最终我们成功的获取到了3164例dr患者的相关资料。

为了确保预测的合理性,我们还从数据集中筛选出不是dr的患者作为对照样本,来保证dr和非dr的数据保持1:1的比例。

最终,我们创建了适用于此试验的数据集,由dr患者和非dr患者的所组成的,共约3100条记录数据。

为了准确地评价该模型的效果,本研究将经过预处理的样本分析数据随机分成两部分,其中3/4为训练样本,1/4为测试样本,按此方法随机组成训练集和测试集,分别利用训练集建立预测模型,然后利用测试集对模型进行效果评价。糖尿病数据中的检查信息存在一些数值缺失,本发明利用mice插补法对其进行填补。

在步骤2中,通过使用反卷积解决了一维无关数据做卷积的问题。目前,cnn方法一般用于二维图像数据集中。不同channel之间的特征是彼此独立的,而同一个channel里面的图像才可以做卷积。

本发明使用的糖尿病并发视网膜病变数据集中的特征不同于图像里的像素点具有相关性,同时本发明的数据中没有序列之间的关系,经过实践直接用在数据中效果是不好的,准确率不到60%。

为了解决这个问题,本发明将训练集中的每个数据特征看做一个channel(通道),对每个数据特征做一个反卷积。当卷积核的维度大于数据特征大小的时候,本发明使用了padding方法,把数据特征进行补零操作,这样便可以完成卷积。类似图像经过一次卷积后维度越来越小,以便图像数据压缩,相当于做了数据的升维,先升后降。padding操作使得数据特征大小大于等于卷积核大小,把数据看作118个channel,对每个channel里的单点进行卷积。该方法主要解决了一维无关数据如何做卷积的问题,将卷积神经网络用于一维无关数据集中,打破了传统意义上cnn在图像领域的适用专一性。

在步骤3中,向传统的卷积神经网络lenet模型中加入两个分批标准化(batchnormalization,bn)层,设计出一个新模型——bncnn。bn实现了在神经网络层的中间进行预处理的操作,即在上一层的输入归一化处理后再进入网络的下一层,这样可有效地防止“梯度弥散”,加速网络训练。

在步骤4中,本发明对bncnn模型进行优化,使用网格搜索来调节超参数,以及使用自适应学习率算法——adam算法,用于自适应模型参数的学习率。在定义foward时,可以把m个卷积池化层的forward定义在一起(数据维度不改变),把n个全连接层的forward定义在一起(数据维度改变),中间用adaptive_maxpool1d连接两部分来解决维度变化,所以自定义的结构是:conv_forward->layer_bridge->fc_forward。

如图2所示,bncnn模型共有10层,由三个卷积层,两个池化层,三个bn层以及1个全连接层和1个output层组成,不包含输入层,每层都包含可训练参数(连接权重),卷积大小为5*5,stride为2,池化都是max,用于糖尿病并发视网膜病变的诊断。

本发明使用的bn算法,

输入:输入数据x1…...xm(这些数据是准备进入激活函数的数据)

计算过程中可以看到,

1.求数据均值;

2.求数据方差;

3.数据进行标准化(个人认为称作正态化也可以)

4.训练参数γ,β

5.输出y通过γ与β的线性变换得到原来的数值,在训练的正向传播中,不会改变当

前输出,只记录下γ与β。

每次训练时,取batch_size大小的样本进行训练,在bn层中,将一个神经元看作一个特征,batch_size个样本在某个特征维度会有batch_size个值,然后在每个神经元xi维度上求样本的均值和方差,通过计算得到xi的方差xi。再通过参数γ和β进行线性映射得到每个神经元对应的输出yi。在bn层中,可以看出每一个神经元维度上,都会有一个参数γ和β,它们同权重w一样可以通过训练进行优化。

在卷积神经网络中进行批量归一化时,一般对未进行relu激活的featuremap进行批量归一化,输出后再作为激励层的输入,可达到调整激励函数偏导的作用。

一种做法是将featuremap中的神经元作为特征维度,参数γ和β的数量和则等于2×fmapwidth×fmaplength×fmapnum,这种做法会导致参数的数量会变得很多。

另一种做法是把一个featuremap看做一个特征维度,一个featuremap上的神经元共享这个featuremap的参数γ和β,参数γ和β的数量和则等于2×fmapnum,计算均值和方差则在batch_size个训练样本在每一个featuremap维度上的均值和方差。(fmapnum指的是一个样本的featuremap数量,featuremap跟神经元一样也有一定的排列顺序。)

本发明bn算法使用流程如下:

输入:待进入激活函数的变量

输出:

1.对于k维的输入,假设每一维包含m个变量,所以需要k个循环。每个循环中按照上面所介绍的方法计算γ与β。需要注意,在正向传播时,会使用γ与β使得bn层输出与输入一样。

2.在反向传播时利用γ与β求得梯度从而改变训练权值(变量)。

3.通过不断迭代直到训练结束,求得关于不同层的γ与β。如网络有n个bn层,每层根据batch_size决定有多少个变量,设定为m,这里的mini-batcherb指的是特征图大小*batch_size,即m=特征图大小*batch_size,因此,对于batch_size为1,这里的m就是每层特征图的大小。

4.不断遍历训练集中的图片,取出每个batch_size中的γ与β,最后统计每层bn的γ与β各自的和除以图片数量得到平均直,并对其做无偏估计直作为每一层的e[x]与var[x]。

5.在预测的正向传播时,对测试数据求取γ与β,并使用该层的e[x]与var[x],通过图中11:所表示的公式计算bn层输出。

在深度网络中,如果网络的激活输出很大,其梯度就很小,学习速率就很慢。因为深层神经网络在做非线性变换前的激活输入值随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近,所以这导致后向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因。而batchnormalization作为最近一年来dl的重要成果,已经广泛被证明其有效性和重要性。bn通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,以此避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。本研究中我们基于lenet-5模型重新进行网络结构的设计,加入bn层,有效的防止了梯度消失问题产生,加快训练速度,提高模型精度。

本研究中采用adam算法,在定义foward时,可以把m个卷积池化层的forward定义在一起(数据维度不改变),把n个全连接层的forward定义在一起(数据维度改变),中间用adaptive_maxpool1d连接两部分来解决维度变化,所以自定义的结构是:conv_forward->layer_bridge->fc_forward。adam(kingmaandba,2014)是另一种学习率自适应的优化算法。“adam”这个名字派生自短语“adaptivemoments”。早期算法背景下,它也许最好被看作结合rmsprop和具有一些重要区别的动量的变种。动量直接并入了梯度一阶矩(指数加权)的估计。将动量加入rmsprop最直观的方法是将动量应用于缩放后的梯度。结合缩放的动量使用没有明确的理论动机。其次,adam包括偏置修正,修正从原点初始化的一阶矩(动量项)和(非中心的)二阶矩的估计。rmsprop也采用了(非中心的)二阶矩估计,然而缺失了修正因子。因此,不像adam,rmsprop二阶矩估计可能在训练初期有很高的偏置。adam通常被认为对超参数的选择相当鲁棒,尽管学习率有时需要从建议的默认修改。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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