张开生+黄谦
摘 要: 针对传统脉诊存在易受主观因素影响、诊断结果可靠性不高等问题,提出基于粒子群优化BP神经网络的脉象识别方法。粒子群算法中评判粒子好坏的适应度函数采用神经网络的输出误差,以此获得最优粒子的位置向量,并把其值作为BP神经网络的初始权值和阈值。在Matlab中建立基于BP算法、PSO?BP算法和GA?BP算法的三种ANN模型用于脉象信号的识别。实验结果表明,在识别脉象时,优化后的算法降低了传统BP神经网络的输出误差,提高了识别精度,PSO?BP算法明显改善了传统BP神经网络的泛化能力。
关键词: 脉象识别; 粒子群算法; 输出误差; 误差反向传播算法; 神经网络; 泛化能力
中图分类号: TN711?34; TP391 文献标识码: A 文章编号: 1004?373X(2018)03?0096?05
Abstract: Since the traditional pulse diagnosis is easily affected by subjective factors, and its result has low reliability, a pulse recognition method based on PSO?BP neural network is put forward. The fitness function judging the particles in PSO algorithm adopts the neural network to output the error, so as to obtain the position vector of the optimal particle. The value of the position vector is taken as the initial weight and threshold of the BP neural network. The ANN model based on BP algorithm, PSO?BP algorithm and GA?BP algorithm was established in Matlab to recognize the pulse signal. The experimental results show that the optimized algorithm can reduce the output error of the traditional BP neural network and improve the recognition accuracy for pulse recognition. The PSO?BP algorithm can improve the generalization ability of the traditional BP neural network significantly.
Keywords: pulse recognition; particle swarm optimization; output error; error BP algorithm; neural network; generalization ability
0 引 言
脉诊是中医看病时主要的四种诊断方法之一,具有重要的临床价值,其诊断过程就是根据不同脉搏信号中包含的信息判断人体的健康状况。传统脉诊是医生根据自己的经验对病情作出诊断,这种方式极易受到医生个人情况等主观因素的影响,对于同一个病人,不同医生的诊断结果可能会有所差异。随着现代医学的发展,传统的中医脉诊开始慢慢受到人们的质疑,脉诊的客观化研究对于中医的发展具有重大意义[1]。
针对以上问题,很多学者对脉搏信号的采集、处理、分析分别进行了研究,并取得了一定的成果[2?4],其中有不少将BP神经网络应用于脉象的识别[5]。然而传统BP神经网络常用的学习方法是梯度下降法,在整个学习过程中,只是根据样本调整网络的初始连接权值,以减小输出误差,初始值的设置是否合适,将直接影响到整个算法的性能,存在容易陷入局部最优解、稳定性不好、泛化能力较差的问题[6?7]。本文提出基于PSO?BP神经网络的脉象识别方法,先计算神经网络的输出误差,然后以此寻找PSO算法中适应度值最小的粒子,得出该粒子的位置矢量,设置为BP神经网络最初的权值和阈值达到优化BP神经网络的目的,降低输出误差,使脉象识别结果更具可靠性。
1 脉象信号的采集与特征提取
在本文中,需要先采集脉象信号并进行处理,提取特征向量构成建立神经网络模型所需的训练样本集和测试样本集。目前,采集脉象信号时常用的便携式传感器主要包括两种类型,即压电式与光电容积式;脉象信号的处理方式可采用傅里叶变换或者对其进行小波变换。考虑到压电式传感器采集的脉象波形比光电容积式采集的脉象波形信息更准确和全面,而与傅里叶变换相比较,小波变换的时频特性使其能够保留更多的细节信息,因此,本文采用压电式脉搏传感器采集脉象信号,并用小波变换处理脉象信号。
1.1 脉象信号的采集与预处理
脉象信号采集装置的硬件结构包括脉搏传感器、微处理器、A/D转换模块、串口通信模块以及上位机等,各部分之间的连接关系如图1所示。
采用脉象信号采集装置在中医门诊进行临床采集,通过微处理器将脉搏传感器采集到的信号通过串口通信的方式送入到上位机中。设置采样频率为128 Hz,每次采样时间为15 s,得到如图2所示数据长度为1 920的脉搏波形。
在采集信号的过程中,由于人体的呼吸等活动、采集装置的影响以及外界环境的其他干扰会产生噪声信号叠加在脉象信号上,所以要预处理采集到的脉象信号,这个过程包括去除高频噪声和低频干扰引起的基线漂移。因为硬件滤波方便直接,具有很好的时效性,所以本文采用简单的RC低通滤波电路滤除信号中的高频噪声。去除基线漂移最常用的方法就是小波变换,本文利用Matlab中小波工具箱选择“Sym8”小波将脉象信号分解成8个不同频率的部分,将第8层低频部分的系数设置为零,其他尺度系数保持不变,重构信号为去除基线漂移的脉象信号,如图3所示。endprint
1.2 特征向量的提取
对脉象信号进行小波变换可以抽取信号中不同频率段的信息,在不同尺度上对各脉搏波进行分解,然后计算各个尺度上重构脉搏波的能量。可以得出,在各个频率段上,类别不同的脉象能量值具有显著差异。分别计算出各频率段信号的能量之和,然后按一定顺序排列,可以得到用于识别脉象信号的特征向量[8]。能量值定义如下:设表示脉象信号在第尺度上重构波形第点对应的能量值,则表示小波分解后第尺度上重构波形的能量和。其中,是脉象信号经小波变换后第层重构波形的第个点的幅值[9]。
脉象信号有效成分的频率分布区间一般主要为[0,20] Hz,最高的频率一般不会超过40 Hz。分别计算脉象信号经八层分解后各层的高频段重构信号的能量之和,然后按照一定顺序排列便可作为识别脉象的特征向量。采集一例脉象信号进行预处理并重构其小波分解后各层的高频段可得到如图4所示的波形。图中cd8,cd7,cd6,cd5,cd4,cd3,cd2,cd1为对应各层的高频信号,频率范围分别为[32,64] Hz,[16,32] Hz,[8,16] Hz,[4,8] Hz,[2,4] Hz,[1,2] Hz,[0.5,1] Hz,[0.25,0.5] Hz。
依照上文中能量的定义分别计算脉象信号各频段的总能量得到特征向量,如下:
2 脉象识别神经网络模型
2.1 BP神经网络
BP神经网络是人工神经网络(Artificial Neural Network,ANN)在实际中应用最为普遍的一种,网络结构包含有输入层、输出层和若干隐层。BP算法是一种监督学习算法,在学习过程中通过给定的输入样本和输出样本,根据误差不断调整网络各层间的连接权值对网络进行训练[10]。BP神经网络的训练过程包括输入数据的正向传播和误差的反向传播。在正向传播过程中,从第一层神经元开始向后逐层计算各层神经元的输入数据和输出结果,并计算最后一层输出神经元的误差;在反向传播过程中,根据误差从最后一层向前反向逐层修改各隐层的连接权值,将训练过程进行反复迭代,直到误差达到目标范围之内[11]。
BP神經网络较好的自学习能力和非线性性能使其在很多实际问题中可以得到良好的应用效果,但其训练算法一般采用梯度下降法,初始参数的选定会影响网络训练过程中收敛的方向,导致网络的输出结果可能是局部最优解而造成输出结果不稳定或者误差较大。采用粒子群算法对BP算法进行优化可以有效解决BP神经网络收敛速度慢、容易陷入局部最优解的问题[12]。
2.2 PSO?BP神经网络
粒子群优化算法(Particle Swarm Optimization, PSO)是一种智能优化算法[13],在定义好合适的函数后,可以计算群体中每个粒子的适应度值,然后根据适应度值的好坏来判断粒子性能的优劣[14]。随机的初始粒子群根据个体极值和全局极值改变自身参数寻求最优值,在每一次迭代过程中,粒子更新自身速度与位置的公式分别如下[15]:
式中表示个体极值;表示全局极值;表示粒子的速度;表示粒子的位置;为惯性权重;为当前迭代次数;和为学习因子;和为分布于的随机数。
在PSO算法优化BP算法时,用粒子群中最优粒子位置向量中的数值按顺序作为BP网络中的每个权值和阈值的初始值,每个粒子的维数可根据神经网络模型的结构计算得到。将给定训练样本集的神经网络各输出神经元的均方误差作为粒子群的适应函数,根据适应度函数计算每个粒子的适应度值,其值越小说明网络输出结果的误差越小,也表示相应粒子的性能越好。粒子位置不断更新使得网络输出层误差逐步变小,每一次迭代中使得误差最小的粒子作为当前最优粒子。
算法流程图如图5所示,其步骤可总结如下:
1) 输入训练样本和测试样本,对数据进行归一化处理,确定BP网络每层神经元的个数;
2) 确定BP网络的相关参数,确定PSO的相关参数;
3) 随机产生初始粒子位置和速度;
4) 训练神经网络,计算输出误差,即粒子的适应度值;
5) 得到个体极值和全局极值;
6) 更新每个微粒的速度和位置;
7) 判断是否符合PSO停止迭代的条件,如果符合,停止迭代,保存结果,进行步骤8),否则转到步骤4);
8) 将得到的全局最优值作为BP神经网络的权值和阈值;
9) 用BP算法训练神经网络直到输出结果的误差达到设定的目标范围之内;
10) 用测试样本进行仿真,得到输出结果。
在以上10个步骤中,步骤2)根据BP网络的参数确定PSO的相关参数,步骤4)将前者输出结果的误差作为后者的适应度值,而步骤8)将粒子群算法得到的最优解设置为神经网络的初始训练参数,这三个步骤作为两种算法的结合点,使得模型可以具备两种算法的优点,既有较好的全局搜索能力,也有较好的局部搜索能力,提高了其泛化能力。
2.3 基于PSO?BP神经网络的脉象识别模型
在本文中,脉象识别神经网络选择只有一个隐含层的三层BP神经网络,将小波变换得到的8个能量值作为输入样本,因此,网络的输入层具有8个神经元;根据经验公式和实验误差对比,设置隐层为10个神经元;由于本文研究了9种脉象,输出神经元表示9种不同的结果,所以输出层设置为4个神经元,这9种脉象训练的期望输出向量为,如表1所示。
采用PSO算法优化BP神经网络算法时,粒子的维数取决于网络各层的权值和阈值个数之和。因BP神经网络为8?10?4型,所以粒子维数为134。根据经验试凑和实验对比,设置粒子规模为30,最大迭代次数为100次,惯性权重为0.5,加速度因子和均为1.5,位置限制区间为[-5,5],速度限制区间为[-1,1]。采用可识别脉象的BP神经网络模型输出端误差作为粒子群的适应度函数,并用Matlab仿真软件画出适应度值的变化曲线,如图6 所示。随着迭代次数的不断增加,函数值越来越小,与之相反,个体的适应度会越来越高。endprint
3 实验仿真及结果分析
本文中仿真实验基于Matlab软件,分别建立基于BP算法、GA?BP算法和PSO?BP算法的ANN模型对脉象信号进行识别,从9种脉象中各取20组数据构成180组训练样本集,用统一的数据对三种模型进行同样的训练,为了检验三种网络模型的性能,选取18组与建模数据无关系的数据对其进行验证,BP神经网络、GA?BP神经网络和PSO?BP神经网络的输出结果以及期望输出的对比如图7所示,误差对比如图8所示,三种模型的训练误差曲线如图9所示。
根据图7,对比三种不同网络模型的实际输出结果与实验期望输出值可知,三种模型的实际输出值与期望输出值基本相符,均能实现18例脉象样本的正确识别,其中基于PSO?BP算法的神经网络模型实际输出结果较BP算法和GA?BP算法的模型输出结果更接近样本值。
根据图8可以得出,基于三种不同算法的ANN模型输出误差有很大区别:BP网络模型的误差均小于0.12,GA?BP网络模型的误差均小于0.04,PSO?BP网络模型的误差均小于0.02;BP网络模型误差变化幅度较大,另两种网络模型误差变化相对较为平稳,而且基于PSO?BP算法的ANN模型比基于GA?BP算法的ANN模型更稳定。计算BP网络模型的均方误差为0.001 3,GA?BP网络模型的均方误差为0.000 14,而PSO?BP网络模型的均方误差为0.000 014,具有更高的精确度。
根据图9对比三种网络模型训练过程中测试样本、验证样本与训练样本的误差曲线可知,PSO?BP网络模型的三条误差曲线变化趋势比BP网络和GA?BP网络模型更接近,迭代次数最少,最终收敛的误差最小。
综上分析,把基于PSO?BP算法的神经网络模型用于脉象识别更为合理,识别结果更为理想,更加有效地改善了脉象识别模型的泛化能力,可靠性更高。
4 结 语
本文提出一种基于粒子群优化BP神经网络的脉象识别方法,具体指把神经网络的输出误差作为粒子群算法中粒子个体的适应度值寻找最优值,将全局最优值设置为BP神经网络最初的权值和阈值,实现用PSO算法优化BP神经网络的目的,建立了基于PSO?BP算法的神经网络模型,并将其用于9种人体脉象的识别中。采用小波变换作为脉搏信号的预处理手段构成识别脉象的特征向量,再把其作为神经网络的输入数据,使用大量统一数据对基于PSO?BP网络、BP网络和GA?BP网络的脉象识别模型进行训练,最后用与建模无关的数据对三种网络模型进行检验。实验结果表明,基于PSO?BP算法的神经网络模型比另外两种神经网络模型泛化能力更好,精确度更高,识别脉象的结果更具可靠性。
参考文献
[1] 魏红,徐刚.从中医整体、动态、平衡观论脉诊客观化研究[J].中医杂志,2014,55(1):25?27.
WEI Hong, XU Gang. Objective study of pulse diagnosis from the integral, dynamic and balanced view of traditional Chinese medicine [J]. Journal of traditional Chinese medicine, 2014, 55(1): 25?27.
[2] 焦琪玉,庞春颖.基于DSP的脉象仪的设计与实现[J].中国医療器械杂志,2013,37(2):112?115.
JIAO Qiyu, PANG Chunying. Design and realization of pulse instrument based on DSP [J]. Chinese journal of medical instrumentation, 2013, 37(2): 112?115.
[3] 宫树杰,陈明锐.基于脉象信号处理的肝硬化诊断方法研究[J].计算机应用与软件,2014,31(6):69?71.
GONG Shujie, CHEN Mingrui. Diagnosis of liver cirrhosis based on pulse signal processing [J]. Computer applications and software, 2014, 31(6): 69?71.
[4] 燕海霞,王忆勤,郭睿.中医常见脉象脉图特征分析及识别研究[J].中华中医药杂志,2010,25(12):2295?2298.
YAN Haixia, WANG Yiqin, GUO Rui. Analysis and recognition of common pulse patterns of traditional Chinese medicine [J]. Journal of traditional Chinese medicine and pharmacy, 2010, 25(12): 2295?2298.
[5] 郭红霞,师义民.中医脉象的BP神经网络分类方法研究[J].计算机工程与应用,2005(32):187?189.
GUO Hongxia, SHI Yimin. Study on classification method of Chinese pulse by BP neural network [J]. Computer engineering and applications, 2005(32): 187?189.
[6] 张德慧,张德育,刘清云,等.基于粒子群算法的BP神经网络优化技术[J].计算机工程与设计,2015,36(5):1321?1326.
ZHANG Dehui, ZHANG Deyu, LIU Qingyun, et al. Optimization of BP neural network based on particle swarm optimization [J]. Computer engineering and design, 2015, 36(5): 1321?1336.endprint
[7] 张璐,雷雪梅.基于粒子群优化BP神经网络的养肠胃菜谱判定[J].计算机科学,2016,43(z2):63?66.
ZHANG Lu, LEI Xuemei. Decision of menu good for stomach based on particle swarm optimization and BP neural network [J]. Computer science, 2016, 43(S2): 63?66.
[8] 岳沛平,李训铭.基于小波变换的中医脉象信号特征提取与分析[J].医疗卫生装备,2006,27(1):23?25.
YUE Peiping, LI Xunming. Feature extraction and analysis of pulse signal based on wavelet transform [J]. Medical and health equipment, 2006, 27(1): 23?25.
[9] 张坤艳.脉象特征信息的提取与识别方法研究[D].青岛:山东科技大学,2007.
ZHANG Kunyan. Study on extraction and recognition of pulse feature information [D]. Qingdao: Shandong University of Science and Technology, 2007.
[10] ERIC WONG W, YU Qi. BP neural network based effective fault localization [J]. International journal of software engineering and knowledge engineering, 2009, 19(4): 573?597.
[11] 钟珞,饶文碧,邹承明.人工神经网络及其融合應用技术[M].北京:科学出版社,2007.
ZHONG Luo, RAO Wenbi, ZOU Chengming. Artificial neural network and its application technology [M]. Beijing: Science Press, 2007.
[12] 张少迪.基于PSO?BP神经网络的短期负荷预测算法[J].现代电子技术,2013,36(12):155?158.
ZHANG Shaodi. Short term load forecasting algorithm based on PSO?BP neural network [J]. Modern electronics technique, 2013, 36(12): 155?158.
[13] WANG Hongbo, ZHAO Xiaoqi, TU Xuyan, et al. Cooperative velocity updating model based particle swarm optimization [J]. Applied intelligence, 2014, 40(2): 322?342.
[14] 谷宇,吕晓琪,赵瑛,等.基于PSO?SVM的乳腺肿瘤辅助诊断研究[J].计算机仿真,2015,32(5):344?349.
GU Yu, L? Xiaoqi, ZHAO Ying, et al. Study on auxiliary diagnosis of breast cancer based on PSO?SVM [J]. Computer simulation, 2015, 32(5): 344?349.
[15] 王小川,史峰,郁磊,等.Matlab神经网络43个案例分析[M].北京:北京航空航天大学出版社,2013.
WANG Xiaochuan, SHI Feng, YU Lei, et al. 43 cases analysis of Matlab neural network [M]. Beijing: Beijing University of Aeronautics and Astronautics Press, 2013.endprint