骈斐斐, 王巧云,2, 王铭萱, 张 楚, 单 鹏,2, 李志刚,2
(1.东北大学 信息科学与工程学院,辽宁 沈阳 110819; 2.东北大学 秦皇岛分校 河北省微纳精密光学传感与检测技术重点实验室,河北 秦皇岛 066004)
高血压、血脂异常、糖尿病导致的心血管疾病的发病率正在迅速增加,不仅给患者本人带来了极大的痛苦,更是增加了家庭和社会的负担[1, 2],预防、及早筛查和及时治疗这些疾病迫在眉睫。光谱检测技术能够根据待测物所呈现的光谱来鉴别物质化学成分和相对含量,具有对样本无损、灵敏度高、适用性强、操作性好、分析速度快等优势[3, 4]。其中拉曼光谱技术适用于化合物分子结构测定、混合物成分分析及样本浓度检测,且具有对水分子散射效应小的突出特点。然而,拉曼光谱存在吸收强度弱、光谱重叠严重等特点,光谱中所产生的差异极其微弱,必须借助基于化学计量学的分析方法[5, 6]。
极限学习机(extreme learning machine,ELM)是一种具有单隐含层前馈神经网络的学习框架[7],其收敛速度快、学习速度快,同时,它还具有逼近复杂非线性函数的优势,可以解决传统神经网络参数不能确定的问题。但由于其输入权值和隐含层偏置随机给定导致模型稳定性降低,有不少学者尝试对该模型进行改进[8~13]。
本文选取极限学习机模型,并对算法进行改进,提出一种自适应差分进化人工蜂群算法优化的极限学习机模型用于血液成分的检测,以提升预测精确度和模型稳健性。
本实验所用的血液样本收集于达成合作的河北省秦皇岛市第一医院,用于实验研究,实验样本均已征求并取得医生和病人的同意,符合伦理道德标准。本实验的血液样本共106组,包括临床上确诊的糖尿病病人的血液和健康志愿者的血液。取血条件为:被试者禁食12 h,于次日晨6:30~7:30采集静脉血5 mL,加入乙二胺四乙酸二钠抗凝剂防止凝血,并将血液样本置于4 ℃便携冰箱内备用;在血液提取过程中,使用一次性胶头滴管,最大限度地避免样本间的交叉污染。由于样本的稀缺性导致样本数目过少,本实验对每组样本进行10次拉曼光谱采集,再进行加和平均以避免偶然因素的干扰。为保证实验的连续性和可重复性,在两日内完成全部样本的拉曼光谱采集,确保所有样本采集的背景大致相同,降低由外界环境差异等因素造成的影响,为后期数据处理提供基础保障。
为避免在光谱采集和实验操作的过程中发生样本任何特性的变异,实验样本均保存在4 ℃以下的稳定环境中。在实验前,将样本均分为两份:一份样本采用安捷伦高效液相色谱仪测量并作为标准浓度;另一份样本置于洁净石英透明杯中,用拉曼光谱仪在室温环境下检测,设置激发光源功率为400 mW,光谱分辨率为5 cm-1,扫描速率为10 kHz,扫描范围为400~4 000 cm-1,对每个样本重复采集3次并计算平均值作为原始光谱数据,以保证实验的准确性和可重复性。样本溶液测量使用德国布鲁克(Bruker)公司生产的MultiRAM傅里叶变换拉曼光谱仪,且相应配备高性能液氮冷却的Ge检测器、标准Nd:YAG(1 064 nm)激光器和OPUS7.0光谱分析软件程序。
使用拉曼光谱仪扫描测得106组实验血液样本的光谱数据,原始拉曼光谱如图1所示。
图1 血液样本原始拉曼光谱Fig.1 Original Raman spectroscopy of blood samples
对于给定的N组样本{(xi,yi)|i∈[1,N]},其中网络的输入向量为xj=[xj 1,xj 2,…,xjn]T∈Rn,期望输出为tj=[tj 1,tj 2,…,tjm]T∈Rm,隐含层结点个数为M,且激活函数为g(x)的单隐层前馈神经网络(single-hidden layer feed-foward neural network,SLFN)可表示为
(1)
式中:ωj为输入层与隐含层第j个节点之间的输入权重,ωj=[ωj 1,ωj 2,…,ωji]T;βj为隐含层与输出层第j个节点之间的输出权重,βj=[βj 1,βj 2,…,βjk]T;bj为第j个节点之间的偏置。
方程可以表示为:
Hβ=T
当激活函数g(x)无限可微时,在网络结构参数不变的情况下,输出权值β可通过求解式(3)的最小二乘解获取。
(3)
β的解见式(4):
(4)
式中H+为隐含层输出矩阵H的广义雅克比矩阵的逆,可由正交法计算求得。
ELM的随机参数、输入权值和隐含层偏置在很大程度上决定了算法的性能,对回归效果有很大的影响。因此,对这两个参数进行筛选和优化是提高回归性能的有效方法。
人工蜂群算法(artificial bee colony algorithm,ABC)是模拟蜂群觅食行为的一种新型智能优化算法[14]。在ABC算法中,寻找最佳食物来源的蜜蜂分为雇佣蜂、观察蜂和侦查蜂3种类型。雇佣蜂和观察蜂执行局部搜索,侦查蜂控制全局搜索。ABC算法的主要步骤如下:
第一步:初始化阶段
初始化蜜源位置的边界值[Min,Max]。
随机初始化边界处的每个搜索位置,初始化函数定义如下:
xij=Min+Rij·(Max-Min)
(5)
式中:Xi为搜索位置,Xi=(xi1,xi 2,…,xiD),其中i=1,2,…,NS,NS为蜜源个数,D为蜜源位置的维度;Rij是范围在 [-1,1]之间的随机数。
使用贪婪算法初始化雇佣蜂的初始搜索位置,并在初始化位置矩阵XNS·D中找到最优解。
第二步:雇佣蜂阶段
雇佣蜂采用下式生成新的解:
vij=xij+φij·(xij-xkj)
(6)
式中:vij为候选解,其中i,k∈{1,2,…,NS},j∈{1,2,…,D}均为随机选择的索引,但是k≠j;φij为 [-1,1]之间的一个随机数。
利用贪婪算法在最新的候选解和最初的初始解之间选择最优解,然后计算适应度和选择概率,公式如下:
(7)
式中:fiti为第i个解Xi的适应值;fi为第i个解Xi的代价值。
第三步:观察蜂阶段
利用选择概率pi在所有雇佣蜂的解中选择一个新解,公式如下:
(8)
在ABC算法中,全局搜索和局部搜索难以平衡,导致收敛速度较慢或局部最优解较早出现。提高收敛速度和避免局部最优是改进ABC算法的两个主要研究方向。
变异操作中最常用的方法是:
(9)
式中:F为变异率,其值在[0,1]之间;r1,r2,r3∈{1,2,…,NP}为随机选择的个体且r1≠r2≠r3。
交叉操作实现变异个体与初代个体的信息融合,最常用的表现形式为:
(10)
式中:i∈{1,2,…,D}; 交叉率CR∈[0,1]。
选择操作在交叉后个体与初代个体间进行贪婪选择,计算公式是:
(11)
式中f(*)为适应度函数。
在差分进化中,变异算子和交叉算子的变异率F和交叉率CR是人为根据经验直接给出的特定值,在更新进化的过程中保持不变,干涉整体的寻优效果,所以考虑对此固定不变的参数进行调整,提出自适应差分进化(self-adaptation differential evolution,SADE)的理念来减少算法对此初始固定参数的依赖,利用当前得到的适应值的全局最优值GBest(fit)和均值间mean(fit)的关系来调节变异率和交叉率,自适应调整方法见式(12)和式(13)。
(12)
(13)
式中:F0变异率初始值;CR0为交叉率初始值。
自适应原理为:当目前适应值的全局最优值与均值相差较大时,变异率及交叉率的数值随之减小,使每个解自身的位置随机变异的发生概率减小、使两组解之间位置信息的互换程度降低,有助于缩小寻优过程的步长,尽量保留当前最优的状态;当目前适应值的全局最优值与均值相差较小时,变异率及交叉率的数值随之增大,使每个解自身的位置随机变异的发生概率增大、使两组解之间位置信息的互换程度提高,有助于增加寻优过程的步长,能够在全局范围内大概率更新,避免陷入局部最优。此改进方法能够在获得较优解时缩小不良进化的概率,弥补部分早熟现象带来的影响。
与遗传算法(GA)、粒子群算法(PSO)、蚁群算法(ASO)和差分进化算法(DE)等常用的优化算法相比,传统的ABC算法在求解一些优化问题上性能更佳;但它也存在明显的缺点,即经典的ABC算法的搜索策略每次只能更新向量中的一个元素,全局搜索较优,局部搜索较差。受DE算法搜索策略的启发,我们提出了ABC算法结合DE算法协同搜索机制,且考虑到变异率和交叉率等固定参数对搜索结果的影响,采用自适应理念来优化变异率和交叉率,进一步提高了搜索效率,自适应差分进化人工蜂群算法(SADEABC)算法可以分为以下几个阶段:
第一阶段:初始化
1) 初始化traili=0;
2) 由式(5)生成Xi初始解。
第二阶段:雇佣蜂阶段
3) 由式(6)生成候选解Vi;
4) 贪婪算法在Xi和Vi中选择较优解;
5) 由式(7)计算每个解的适应值fiti;
6) 由式(8)计算每个解的概率值pi。
第三阶段:观察蜂阶段
7) 利用pj选择一个解Xj;
8) 由式(9)生成变异后新的候选解Vj,其中F由式(12)得出;
9) 由式(10)生成交叉后新的候选解Uj,其中CR由式(13)得出;
10) 由式(11)在Xj和Uj中选出较优解。
第四阶段:侦查蜂阶段
11) if(traili>LM)then
12) 由式(5)产生的新解替换Xi;
13) Else
14) traili=traili+1
15) end if
16) 记录当前最优解BT并重复至(cycle=MCN)。
其中,MCN为最大迭代次数,LM为最大搜索次数,traili为第i个解的搜索次数,BT为最优解。
ELM的训练目标是找到最优的输入权值矩阵和隐藏的偏置向量,使网络的观测值和预测值之间的误差最小。因此,输入权值和偏置及其数量对ELM的性能和精度有很大的影响。在ELM模型中,输入权值和隐藏偏置是随机分配的,并在训练过程中保持不变。随机参数可能是一组非最优或不必要的值,这使得ELM网络需要大量的隐藏节点来达到理想的结果,从而对测试数据响应缓慢,因此选择最优的输入权值和隐藏偏置可以提供更紧凑的ELM网络结构和更好的泛化性能。
应用SADEABC算法来训练ELM神经网络,先将采集到的106组血液拉曼光谱数据进行基线校正、正交信号校正等预处理操作,再使用主成分分析法对光谱数据进行降维,重复多次试验后选取主成分数为10;然后将数据归一化,再将处理好的数据采用Duplex算法进行样本选择,划分出65组作为训练集以及41组作为测试集,训练集用于训练SADEABC-ELM模型,得出最优ELM模型;最后将测试集数据输入最优ELM模型,得到最终的预测浓度值。
具体步骤为:
1) 根据第3.3节初始化ABC算法参数,ABC迭代次数=145,蜂群总数=40;
2) 初始化ELM神经网络,ELM神经网络隐含层节点数为10,激活函数为Sigmoid函数;
3) 使用ELM算法对提取到的光谱特征数据训练、验证由ABC适应度公式计算出的适应值,利用自适应差分进化算法协同搜索最优值;
4) 当网络达到最大迭代次数时,寻优停止并退出,计算出预测值,由评价指标验证模型的可行性。
对拉曼光谱建立定量回归模型,主要以决定系数R2、校正集均方根误差RMSEC、预测集均方根误差RMSEP、相对分析误差RPD等几个常用指标来评价定量回归模型的性能,判断所建模型的优劣。其中R2表征预测值与真实值间拟合程度,数值在[0,1]范围内,越接近于1说明预测值越接近真实值,模型拟合越精确;RMSEC、RMSEP表征真实值与预测值之间的偏差,其值越小(越接近于0)表示模型的稳健性越强;在避免过拟合的前提下RPD的数值越高,表征模型精确度越高。
对血液样本中的血糖、胆固醇和甘油三酯成分分别建立定量回归模型进行浓度检测,使用提出及构建的自适应差分进化人工蜂群算法优化的极限学习机模型进行预测,统计各模型的评价指标见表1。
由表1可知,对血液拉曼光谱数据各组分浓度的回归预测,SADEABC-ELM模型所取得的效果优于ELM, ABC-ELM和DEABC-ELM模型。SADEABC-ELM模型决定系数最大,均方根误差最小,相对分析误差最大,表明SADEABC-ELM模型能够对测试集样本做出精确的预测,回归拟合度和精度均能达到较高水平,在所有测试模型中表现最佳。一般来说,模型对测试集的回归拟合度与预测精度要低于训练集样本,且两者间差异越小则模型的泛化能力越强。观察表1中4个模型的评价指标可以看出,SADEABC-ELM模型的预测能力和建模效果差异最小,说明SADEABC-ELM模型的鲁棒性和泛化性能要优于ELM, ABC-ELM和DEABC-ELM模型。实验所用血液样本的血糖、甘油三酯和胆固醇定量回归模型的浓度预测情况如图2~图4所示。
表1 血液样本成分评价指标统计Tab.1 Evaluation indices of blood sample components
图2 血液样本血糖成分定量回归模型浓度预测结果Fig.2 Concentration prediction of quantitative regression model for blood samples glucose component
图4 血液样本胆固醇成分定量回归模型浓度预测Fig.4 Concentration prediction of quantitative regression model for blood samples cholesterol component
通过以上血液样本成分的建模分析和数据统计能够看出,自适应差分进化人工蜂群算法优化的极限学习机(SADEABC-ELM)模型能够用于拉曼光谱预测血液中各成分的浓度值,而且相比于ELM,ABC-ELM和DEABC-ELM模型,所建模型具有较高的稳健性和预测精度。
本文提出了一种用于血液拉曼光谱分析的SADEABC-ELM回归模型。首先对106组血液样本采集拉曼光谱数据,采用ELM神经网络建立血液各组分浓度回归模型。针对ELM输入权值和隐含层阈值随机给定的特点,使用ABC算法对网络参数进行寻优以提升模型的性能;进而对ABC算法仍存在易陷入局部最优且搜索精度不高等问题,结合DE算法对个体信息和群体信息进行指导,为改善DE算法的变异率和交叉率凭经验设定的不足,引入了自适应调整的思想,最终本文提出并构建了SADEABC-ELM模型用于血液样本检测。结果表明SADEABC-ELM模型能更好地预测血液各组分浓度。相较于其它模型,SADEABC-ELM模型具有更高的预测精度和更强的鲁棒性,在实际应用中具有较大的优势。