2. 南京医科大学, 南京 211166;
3. 杭州市卫生和计划生育委员会, 杭州 310006;
4. 杭州市妇幼保健院, 杭州 310008
2. Nanjing Medical University, Nanjing 211166, China;
3. Health and Family Planning Commission of Hangzhou Municipality, Hangzhou 310006, China;
4. Hangzhou Maternity and Child Health Care Hospital, Hangzhou 310008, China
在妇产科学中, 准确预测胎儿体重具有十分重要的意义. 胎儿体重是判断胎儿发育的重要指标之一, 孕中期计算胎儿体重, 可以监测胎儿发育是否正常, 且孕晚期计算胎儿体重对产妇的生产方式有指导作用. 随着经济水平的提高和医疗条件的改善, 巨大儿的发生率也在逐年上升, 占新生儿的5.62%–6.49%[1]. 由于孕妇营养过程引起巨大儿的发生比率接近70%, 随之而来的问题就是难产、剖宫产比率增加[2]. 然而, 胎儿体重无法直接测得, 只能根据孕妇体检数据进行预测.
传统的胎儿体重预测是基于孕妇体检时的B超检查结果来预测胎儿体重预测模型. Shepard等[3]使用双顶径 (BPD), 腹围 (AC)等参数直接计算胎儿体重; Hadlock等[4]使用头围 (HC), 腹围 (AC), 股骨长度 (FL)等参数, 通过回归分析得到的经验公式预测胎儿体重. 朱桐梅等[5]比较了6种利用宫高、腹围数值的胎儿体重经验公式的准确性, 其中最高的精确度为45.76%, 难以满足当前的医疗需求. Möst L等[6]认为传统经验公式是基于单次点预测的结果, 易于解释其意义, 但是忽略了对预测区间不确定性的度量, 因此提出基于条件线性变换模型预测胎儿体重, 将不同预测区间的不确定性度量引入预测模型, 提升模型适应度. 洪传美等[7]指出目前临床工作中使用的经验公式多为国外学者创立, 由于不同人种之间的种族差异, 使得测量结果也存在较大差异, 因此, 经验公式预测方法在使用过程中需要根据具体情况作出适当调整. 由于孕产妇所在地区的不同、孕产妇本身参数的差异以及测量方法的差异, 很难建立一个通用的经验公式, 因此经验公式预测的准确率较低[8]. Farmer等[9]首次提出利用人工神经网络进行胎儿体重预测, 在B超检查结果基础上增加了孕妇本身的生理特征, 基于BPD, HC, AC, FL, 羊水指数(AFL), 孕妇年龄, 孕次, 产次, 身高等参数, 使用BP人工神经网络预测胎儿体重. 结果显示使用BP人工神经网络预测结果优于传统回归分析结果. 随后Cheng等[10]提出基于聚类的人工神经网络模型进行胎儿体重预测. Mohammadi等[11]利用人工神经网络预测双胞胎胎儿体重. 李昆等[12]基于深度神经网络的胎儿体重预测模型, 利用胎儿和孕妇产前检查记录作为模型特征输入预测胎儿体重. 然而, 以上预测模型均基于单次横断面时间的孕妇或胎儿检查参数信息, 预测准确率仍旧不高.
本文基于孕产妇从怀孕开始到结束的历史体检数据建立孕妇连续体征变化模型, 使用遗传算法优化的BP神经网络(GA-BPNN)构建胎儿体重预测模型, 在我国东部某医院3000例临床数据集上进行实验. 结果表明, 基于GA-BPNN的胎儿体重预测模型比传统BP神经网络的预测方法提升了14%的预测精度.
2 数据预处理孕产妇产检次数不同、产检机构不同、每次检查内容不同等都会导致孕产妇的历史体检数据的不完整, 会干扰预测模型的训练和预测过程. 因此, 数据预处理过程是提高数据质量的关键步骤. 本文在预处理过程中首先对原始数据进行缺失值处理、特征标准化操作, 形成孕妇连续体征变化模型.
2.1 预测模型输入属性参数孕产妇的各项历史检查数据存在于电子病历系统(EMR)以及检验检查系统(LIS)中, 本文从这些系统中以孕妇身份证为主索引提取从孕早期开始到分娩的各项检验检查数据, 以及出生胎儿的真实体重, 形成体重预测的样本集合. 定义Y为胎儿真实体重集合, 定义X为模型的输入参数集合, 该集合由15个参数组成, X={xg, xp, xh, xw, xa, {weightt}, xhc, xbpd, xac, xfl, xafi}, 其中{weightt}表示孕产妇在孕期不同时间的体重变化量, 其余各参数意义如表1所示.
2.2 缺失值处理
基于历史检查数据的预测模型中存在的一个现实问题是, 由于孕产妇的产检时间、次数不固定, 会导致体重序列值缺失, 本文采用回归法补全缺失的体重序列值. 基于孕产妇已有的体重数据集建立回归方程, 筛选出产检记录数大于5的孕妇, 获取孕妇孕期不同时间(以天为单位)的体重值, 以此作为数据集, 为每一名孕产妇建立回归方程, 回归方程采用二次拟合函数.给定数据序列(xi, yi), 其中xi为孕期天数, yi为xi时的体重. 设P(x)为二次拟合函数, 得到拟合函数与实际体重序列的均方误差:
$\frac{1}{m}\sum\limits_{i = 1}^m {{{(P({x_i}) - {y_i})}^2}} $ | (1) |
通过求解式(1)的极小值获得二次拟合函数参数. 本研究中随机抽取1000例样本数据进行拟合函数实验, 得到拟合结果的平均相对误差率为2.14%. 通过上述方式, 获取孕产妇体重序列集合{weightt}, 完成缺失值处理.
2.3 特征标准化通过数据预处理与缺失值处理后, 得到模型输入参数集合, 但由于不同生理参数具有不同的单位和数量级, 为消除单位和数据量级不同对模型预测结果的影响, 在参数输入网络模型前要进行数据归一化处理, 保证各个参数处在同一个数量级[13]. 标准化采用式(2)所示的计算方法, 其中x表示当前特征值, xmin、xmax表示当前特征值得最小值、最大值. y为标准化后的特征值. 标准化后的数据范围为[–1, 1].
$y = \frac{{2(x - {x_{\min }})}}{{{x_{\max }} - {x_{\min }}}} - 1$ | (2) |
本文提出的胎儿体重预测模型采用遗传算法优化的BP神经网络, 利用遗传算法的优化全局优化搜索能力优化神经网络的初始权值和阈值, 从而解决BP神经网络的局部收敛问题, 即将神经网络初始化权值和阈值作为初始种群进行编码, 利用遗传算法优化得到最终的权值和阈值, 在进行神经网络学习.
3.1 GA-BPNN胎儿体重预测模型胎儿体重预测模型是一个三层BP神经网络, 利用遗传算法根据训练目标函数优化BP神经网络的初始权值和阈值, 采用误差逆传播(Error Back-Propagation, BP)[14]算法学习神经网络模型. BP神经网络结构如图1所示.
图1中, 输入层包含15个神经元(生理参数), 分别对应X={xg, xp, xh, xw, xa, {weightt}, xhc, xbpd, xac, xfl, xafi}, 隐含层神经元个数为n, 输出层为单个神经元(胎儿体重).
遗传算法的编码方式常用的有实数编码和二进制编码, 其中实数编码精度高, 便于大空间搜索, 因此本文采用实数编码方式. 编码长度由公式(3)确定.
$L = m \times n + n \times l + n + l$ | (3) |
其中m为输入层神经元个数, n为隐层神经元个数, l为输出层神经元个数. 完成编码过程, 选择合适的初始化种群以及适应度函数计算公式后, 进行遗传算法的选择、交叉、变异的迭代过程, 当迭代过程满足训练目标要求或迭代次数达到设定的目标时, 停止迭代过程. 将最优的染色体(即神经网络的初始权值和阈值)作为结果返回.
将遗传算法的返回结果作为BP神经网络的初始权值和阈值, 完成神经网络学习过程, 得到的最优神经网络结构即为GA-BPNN胎儿体重预测模型.
3.2 隐含层神经元个数选择隐含层神经元个数通过经验公式(4)确定:
$n = \sqrt {m + l} + \alpha $ | (4) |
其中, m为输入层神经元个数, l为输出层神经元个数, n为隐层神经元个数. 根据公式(4)得到隐含层的节点数应该为5~14. 实验过程中使用相同的数据集合, 每次进行同样的训练次数, 通过比较均方误差(MSE)来确定隐含层节点数目. 不同的网络结构训练后相应的MSE如表2所示.
从表2可知, 当隐层节点为11时, 网络性能最好, 继续增加隐层节点数目对提升网络性能贡献不明显, 因此确定隐层节点数为11.
3.3 神经网络优化与训练输入层到隐含层的激活函数使用Relu[15]函数, Relu函数相比于其他激活函数收敛速度快、实现简单、有效缓解梯度消失问题、在无监督训练的时候也能有较好的表现. 隐含层到输出层的激活函数使用线性激活函数.
由于BP神经网络的阈值和初始权值采用随机生成的方式, 导致BP神经网络存在收敛速度慢、不能确保收敛到全局最小值等问题. 本文采用遗传算法优化BP神经网络的初始权值和阈值, 通过处理编码变量字符串(即染色体)的聚合, 可以加速网络的收敛速度, 提升预测模型精度[16]. 在算法中, 每个染色体代表待处理问题的个体, 并且许多染色体(基本单元)形成遗传算法的初始种群, 通过选择、交叉、变异三个步骤的操作, 将神经网络从前一代(即父母)群体进化到下一代来完成优化过程.
在本文中, 遗传算法中群体的适应度基于GA-BPNN与编码染色体的预测误差, 每个染色体的适应度值(fj)通过式(5)计算:
${f_j} = {\left[ {\frac{1}{n}\sum\limits_{j = 1}^m {\sum\limits_{i = 1}^n {{e^2}_{ij}} } } \right]^{ - 1/2}}$ | (5) |
个体被选择的概率(Pj)由式(6)计算:
${P_j} = {f_j}/\sum\limits_{j = 1}^m {{f_j}} $ | (6) |
其中, fj是第j个染色体的适应度值, n是神经网络输入数据集的数量, m是遗传算法中种群的大小, eij是第i个神经网络的输入与第j个染色体间的误差.
第二步交叉, 将相互配对的父母染色体依据概率交换部分信息, 形成下一代. 在交叉的过程中交换的部分是在染色体上随机选取. 当交叉过程完成后, 重新计算每个子代染色体的适应度值, 将适应度值高的子代保留在当前种群中.
在将子代染色体重新插入原始群体之前, 进行变异过程用来提高遗传算法的搜索能力和群体多样性. 变异是根据变异概率将染色体中的部分编码基因改变来实现. 通过该过程, 遗传算法可以更好地搜索整个参数空间, 并且可以避免陷入局部最优.
遗传算法优化BP神经网络的初始权值和阈值的过程如算法1所示, GA-BPNN模型的训练过程如算法2所示.
算法1. BP神经网络初始权值和阈值优化
输入: 种群大小m; 交叉概率Pc; 变异概率Pm; 迭代次数α
输出: 最优解x
随机生成m个解决方案, 保存在种群pop中
for i = 1 to α do
精英数量ne=m · Pc
从pop中选择最佳的精英ne保存在pop1
//交叉操作, 染色体互换部分信息
//保留适应度高的形成下一代
交叉数量nc= (m−ne)/2
for j= 1 to nc do
从pop中随机选择两个解决方案xa和xb from
通过对xa和xb交叉操作生成xc和xd
将xc和xd保存在pop2中
endfor
//变异过程, 根据变异概率改变部分编码基因
//避免陷入局部最优
for k=1 to nc do
从pop2中选择一个方案xk
概率Pm发生变异, 并重新生成新的方案xk′
将pop2中的xk更新为xk′
endfor
更新pop=pop1+ pop2
endfor
return x in pop
算法2. GA-BPNN体重预测模型的训练
输入: 算法1中的X, Y, x; 学习速率η; 迭代次数m
输出: Network
//初始化神经网络结构, 输入神经元15个
//隐含层神经元11个, 输出节点1个
Network← ConstructNetworkLayers()
//将算法1的优化结果赋值给神经网络权值
weights ← x
//利用反向传播算法更新权重值
for i= 1 to m do
Outputi ← ForwardPropagate(Xi, Network)
BackwardPropagateError(Xi, Outputi, Network)
UpdateWeights(Xi, Outputi, Network, η)
endfor
return Network
4 实验与结果分析 4.1 实验对象本文从我国东部某医院2016年1月1日至2016年12月31日所有产科电子病历中随机抽取了3000例符合实验要求的样本. 样本符合条件为: 单胎、无妊娠综合征、年龄分布22~43岁、在分娩前72小时内接受过B超检查. 将样本集的2250例作为训练集, 剩余750例作为测试集验证模型预测准确度. 训练过程中, 采用交叉验证, 防止过拟合.
4.2 结果与分析经试验选取遗传算法种群规模为200, 交叉概率Pc=0.4、变异概率Pm=0.1, 进化代数为100. BP神经网路的学习率选为0.016, 误差精度设置为1×10–3, 最大迭代次数3000次. 适应度函数值随进化代数变化曲线如图2所示, 可以看到个体在进化到83代以后适应度函数值基本没有变化, 到达最大值, 取此时的最佳染色体值作为BP神经网络的初始权值和阈值.
本文采用两个指标衡量预测模型的性能. 第一个是平均相对误差(Mean Relative Error, MRE), 该指标更能反映测量的可信程度. 设m为样本数, MRE为平均相对误差. 即:
$MRE = \frac{1}{m}\sum\limits_{i = 1}^m {\frac{{\left| {actual - predict} \right|}}{{actual}}} $ | (7) |
另一种判断标准为胎儿体重预测值和实际值的误差在±250克之内即认为预测准确[17], 从而计算预测模型的准确率. 通过上述两种标准来讨论本文的实验结果. 从表3中看出, 对胎儿体重的预测GA-BP的误差控制在6%以内.
BPNN和GA-BPNN模型的胎儿体重预测误差统计如表4所示. 其中MiRE为最小相对误差, MaRE为最大相对误差, BPNN与GA-BPNN的训练误差曲线如图3所示.
将GA优化后得到的初始权值和阈值赋给神经网络后, 两种胎儿体重预测模型的预测结果如图3所示.
从表3的结果可知, GA-BPNN比BPNN的预测准确率更高, GA-BPNN的预测结果更加接近胎儿实际体重值. 从图3可知, GA-BPNN的收敛速度比BPNN的收敛速度快, 模型表现更好.
5 结束语本文提出了一种基于遗传算法优化BP神经网络(GA-BPNN)的胎儿体重预测模型, 基于孕妇的历史体检数据建立连续体征变化模型, 然后利用遗传算法优化BP神经网络的初始权值和阈值, 建立胎儿体重预测模型. 实验结果表明, 本文提出的GA-BPNN胎儿体重预测模型不仅加快了模型的收敛速度, 而且将胎儿体重预测精度提高了14%. 未来的工作可以进一步考虑孕妇体检数据的时间序列特点, 改进胎儿体重预测模型, 从而进一步提升模型预测的准确率和实用性.
[1] |
刘致君, 李桂荣, 郭兴巧. 预测胎儿体重新方法与传统方法的比较. 中国妇幼保健, 2008, 23(24): 3478-3479. DOI:10.3969/j.issn.1001-4411.2008.24.065 |
[2] |
Yu ZB, Han SP, Zhu JG, et al. Pre-pregnancy body mass index in relation to infant birth weight and offspring overweight/obesity: A systematic review and meta-analysis. PLoS One, 2013, 8(4): e61627. DOI:10.1371/journal.pone.0061627 |
[3] |
Shepard MJ, Richards VA, Berkowitz RL, et al. An evaluation of two equations for predicting fetal weight by ultrasound. American Journal of Obstetrics and Gynecology, 1982, 142(1): 47-54. DOI:10.1016/S0002-9378(16)32283-9 |
[4] |
Hadlock FP, Harrist RB, Carpenter RJ, et al. Sonographic estimation of fetal weight. The value of femur length in addition to head and abdomen measurements. Radiology, 1984, 150(2): 535-540. DOI:10.1148/radiology.150.2.6691115 |
[5] |
朱桐梅, 赵晓华, 艾梅, 等. 6种预测胎儿体重公式准确性的对比研究. 中国妇幼保健, 2016, 31(20): 4179-4181. |
[6] |
Möst L, Schmid M, Faschingbauer F, et al. Predicting birth weight with conditionally linear transformation models. Statistical Methods in Medical Research, 2016, 25(6): 2781-2810. DOI:10.1177/0962280214532745 |
[7] |
洪传美, 纪毅梅. 胎儿体重预测常见方法比较及临床价值探讨. 中国妇幼健康研究, 2017, 28(5): 522-523, 530. |
[8] |
刁晓娣, 江志斌, 刘瑾. 根据孕妇参数预测胎儿体重的神经网络方法. 中国生物医学工程学报, 1999, 18(2): 155-158, 193. |
[9] |
Farmer RM, Medearis AL, Hirata GI, et al. The use of a neural network for the ultrasonographic estimation of fetal weight in the macrosomic fetus. American Journal of Obstetrics and Gynecology, 1992, 166(5): 1467-1472. DOI:10.1016/0002-9378(92)91621-G |
[10] |
Cheng YC, Hsia CC, Chang FM, et al. Cluster-based artificial neural network on ultrasonographic parameters for fetal weight estimation. 6th World Congress of Biomechanics (WCB 2010). Singapore. 2010. 1514–1517.
|
[11] |
Mohammadi H, Nemati M, Allahmoradi Z, et al. Ultrasound estimation of fetal weight in twins by artificial neural network. Journal of Biomedical Science and Engineering, 2011, 4(1): 46-50. DOI:10.4236/jbise.2011.41006 |
[12] |
李昆, 柴玉梅, 赵红领, 等. 基于深度神经网络的胎儿体重预测. 计算机科学, 2016, 43(11A): 73-76, 82. |
[13] |
Chen GY, Fu KY, Liang ZW, et al. The genetic algorithm based back propagation neural network for MMP prediction in CO2-EOR process. Fuel, 2014(126): 202-212. DOI:10.1016/j.fuel.2014.02.034 |
[14] |
Rumelhart DE, Hinton GE, Williams RJ. Learning representations by back-propagating errors. Nature, 1986, 323(6088): 533-536. DOI:10.1038/323533a0 |
[15] |
Krizhevsky A, Sutskever I, Hinton GE. Imagenet classification with deep convolutional neural networks. Proceedings of the 25th International Conference on Neural Information Processing Systems. Lake Tahoe, NV, USA. 2012. 1097–1105.
|
[16] |
杨启文, 蒋静坪, 张国宏. 遗传算法优化速度的改进. 软件学报, 2001, 12(2): 270-275. |
[17] |
难产与围产编写组. 难产与围产. 重庆: 科学技术文献出版社重庆分社, 1983.
|