基于深度学习网络的心音智能分析平台构建
2019-07-23杨雨诺张国林孙科学成谢锋
杨雨诺,张国林,孙科学,2,3,成谢锋,2,3
(1.南京邮电大学 电子与光学工程学院,江苏 南京 210023;2.南京邮电大学 信息电子技术国家级虚拟仿真实验教学中心,江苏 南京 210023;3.射频集成与微组装技术国家地方联合工程实验室,江苏 南京 210023)
0 引 言
心音模式识别是信息科学和人工智能的一个交叉应用领域,作为一种自然信号,心音信号应用于听诊辅助治疗已经有相当悠久的历史。它是医疗领域中一种重要的人体生理信号,具备独特性和可采集性且不容易被模仿或复制[1-2]。
深度学习是机器学习的一种延伸,其基础概念在2006年和2007年由Geoffrey Hinton提出并发表于《Sciences》,深度学习是受到人类大脑结构启发的一种基于对数据进行表征学习的神经网络算法加之模型深度的增加发展。类似一张图片的观察值可以通过各种方式来表示,例如以更加抽象的方式表示为指定形状的区域、一系列边,或者单个像素强度值的向量。如果使用人脸识别或面部表情识别[3]等特定的表示方法,则会让实例中的学习任务更加高效。深度学习的一个显著优势是其可以通过非监督式和半监督式的特征学习及分层特征提取高效算法来替代效率相对低的手工提取方法[4]。
深度学习框架现在已经出现了很多种形式,例如深度神经网络、卷积神经网络和深度置信网络和递归神经网络,在图像处理和计算机视觉、语音识别与自然语言处理、音频识别与生物信息学等领域均取得了很好的应用效果。
文中分析了深度学习算法和深度信任网络在心音识别方面的应用,并以深度信任网络作为模型[5],结合进程择优算法构建一种基于深度学习网络的心音信号分析识别平台。为了完成深度学习网络模块的设计,首先解决心音传感器的无线通信问题,制作了无线心声检测装置。通过心音深度学习网络的构建实现了一种可拓展的心音智能分析实验平台。
1 设计思路及原理
心音采集模块的设计思路是循环结构与顺序结构相结合。具体为当一路心音信号采集成功后,将得到的心音信号首先通过小波去噪进行处理[6-8]。之后使用LabVIEW软件中已有的FFT谱分析控件与功率谱控件将经过处理的心音信号的FFT谱与功率谱各自显示在计算机前面板上。到此即完成了一路信号的采集与分析工作。
在上述工作完成后,还可以搭建心音身份识别系统的搭建[9-11],只需要添加数据处理模块和身份识别模块即可。通过使用低频加强型梅尔倒谱系数和频域分段相关系数的算法,可以在数据处理模块中完成心音信号的特征参数提取,通过矢量化欧氏距离和S1、S2信号最小相关距离对采集的信号进行确认识别以实现识别模块的功能。
研究平台流程如图1所示。
图1 系统流程
将心音采集器采集的心音信号经过去噪,包络截取放大,周期心率计算及频域分析等步骤实现采集模块的功能。将采集模块得到的数据传入到心音识别模块,其主要由数据处理模块和身份识别模块组成,信号的特征提取由数据处理模块完成,并在处理完成后建立特征数据库;身份识别模块对心音信号特征数据的分类识别通过两种算法完成,识别率使用决策层融合算法来提高。采集模块采集到的数据不需要像传统方法一样进行预处理,可以直接传输到深度学习模块以组成深度学习研究的平台。
2 基于深度学习的心音智能分析平台的构建
2.1 深度学习网络模块
通过多个受限玻尔兹曼机(restricted Boltzmann machine,RBM)的叠加可以构成深度信念网络系统,并可以使用梯度下降法和反向传播算法进行调优。RBM的概率模型为:
(1)
E(x,h)=-bTx-cTh-hTwx
(2)
(3)
其中,x为可见层单元;h为隐层单元;Z为配分函数;E为能量函数;b和c为偏置;W为可见层单元和隐层单元之间的连接权重。
如果一个RBM网络的各个隐层单元的状态已知,则各个可见层的配置x对于隐层配置h的条件概率为:
(4)
其中,'表示转置,式4可化简为:
(5)
由于RBM为一个二分图,层内没有边相连,因而隐层是否激活在给定可见层节点取值的情况下是条件独立的。类似地,可见层节点的激活状态在给定隐层取值的情况下也是条件独立的。因为神经元二进制的特点,故当其被激活后(值为1)的概率分布为:
(6)
或者表示为:
P(hi=1|x)=sigm(ci+wix)
(7)
可见层的概率分布同理为:
P(xi=1|h)=sigm(bi+wih)
(8)
为了获得理想的模型训练效果,要让测试得到的数据和模型得到的数据尽可能接近。即需要令训练数据的对数概率和负对数概率分别最大化和最小化。其中负对数的数据较难获得。因此,对模型进行抽样。
抽样次数应该尽可能多,在进行抽样时需要给定可见层状态,更新隐层,将隐层得到的数据返还给可见层从而更新可见层,依次循环,即
(9)
整个层会在每次迭代中进行更新。通过对初始化进行随机处理,可以得到恰当的抽样。考虑到可实施性,初始化数据采用训练样本,一次迭代后,将更新的数据作为负样本,这就是对比分歧算法。
对比分歧算法的弊端在于其是通过层之间数据对比来使数据实现收敛,进而来调整网络权重,容易导致训练误差递增。可知深度学习系统结构并不是层数越多越好,其同样存在一个最优解。
深度学习主要具有以下特点[12-14]:
深度神经网络是具备至少一个隐层的神经网络,当前的隐层作为更高层的可见层。任一个RBM输出数据和层之间权值的变化情况都仅取决于输入数据,多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。
实验表明,通过无监督学习算法对网络结构进行逐层预训练可以取得较为理想的结果,逐层无监督学习回避了有监督学习所面临的梯度传播问题。深度学习的训练过程分为自底向上的无监督学习和自顶向下的有监督学习,主要使用的学习算法包括:迁移学习算法、稀疏编码对称机算法、非线性变换算法、自然语音解析算法和深度费希尔映射算法等。
深度学习网络中底层训练速度最慢并且还拥有最大的误差。由于使用随机初始化的方法,最初的网络权值随机分布,初始的训练误差会很大且训练速度也会比较慢。而由于使用了反向传播,在计算梯度即误差导数时,随着网络层数的递增,梯度的幅值会逐渐减小,整体上权值变化的导数即趋势会越来越缓。
深度学习网络可以与任意一种分类器结合。与BP(back propagation)神经网络的结合是现阶段相对更理想的解决方案。在BP神经网络中,信号是前向传播,而误差则是反方向传播,其组成是一种多层结构的前馈神经网络。
2.2 深度信任网络
深度信任网络(deep belief networks,DBN)是一种包含多层隐层单元的概率生成模型,可视为进行数据分类的多层简单学习模型。深度信任网络可以作为预训练部分并提供初始权值,随后提供反向传播等算法进行调优。深度信任网络结构中的每一层都是标准的受限玻尔兹曼机,可以通过无监督逐层训练。
深度信任网络是有监督学习和无监督学习的结合,这是由于BP神经网络在深度学习网络结构中作为最后一层,使得等级最高的隐层可以充当分类器的一部分,整体网络以反向神经网络进行训练。BP神经网络可以通过这种方法提供训练成功率,加快收敛速度[15]。
深度信任网络训练步骤为:
(1)初始化一个多层的深度学习网络,通过对比分歧算法对训练数据进行训练,并得到网络各层的权值。对比分歧算法提供了一种最大似然的近似值,可以作为学习受限玻尔兹曼机的权重。
(2)搭建一个人工神经网络,其节点数和隐层层数要和深度学习网络保持一致,将通过深度学习网络得到的权值赋予人工神经网络的各个隐层。
(3)使用BP算法调试神经网络,并构建一个符合要求的深度信任网络。
与BP神经网络的特点相同,深度信任网络同样拥有自组织性,对输入的数据不作任何限制。深度信任网络同时解决了BP神经网络所具有的收敛速度偏慢的不足,理论上随着隐层层数的增加,深度学习网络可以更高效地学习到深层次特征,从而使系统的整体性能和网络效率同时得到提高。然而BP神经网络容易产生局部最优解的弊端还无法得到很好的解决,与此同时,由于隐层层数的增加和训练时使用层与层数据进行比较的原因,误差也会逐层传递。因此主要的难点就是隐层层数以及隐层节点数应该如何设置以获得理想的深度信任网络性能。
2.3 心音识别模块设计
心音识别模块实现了待测心音与数据库标准心音的最佳匹配功能,细节上又分为心音识别模块和共振峰展示模块。以下分别对两个模块进行介绍。
(1)心音识别模块。
该模块先载入待识别的心音文件和数据库中的标准心音文件,分别对它们进行预加重和分帧加窗等的预处理,接着提取它们的MFCC特征参数,之后利用DTW匹配算法将得到的特征参数进行模式匹配,得到两者的帧平均匹配距离,记录下每次匹配的结果,最后比较所有距离,选取匹配距离最小的标准心音文件作为最终的匹配结果。系统的工作流程如图2所示。
图2 心音识别流程
(2)共振峰展示模块。
心音共振峰展示模块以图形化的形式展示了现场待测心音和数据库标准心音共振峰随时间的变化情况,给用户直观的观察,定性地反映两者的差异。该模块首先对现场待测心音和数据库标准心音信号进行预处理,然后分别对它们进行快速傅里叶变换,提取它们的共振峰,通过Android图表引擎AchartEngine将提取到的共振峰信息以图形化的形式展示出来。工作流程如图3所示。
图3 心音共振峰的流程
3 基于深度学习的心音智能分析平台的验证
这里结合进程择优法[15]及深度学习网络的快速设计方法构建一种可在自然环境下对心音信号进行分类处理的深度学习网络。将本实验室采集得到的800个健康心音信号与800个非健康(包括早搏心音)的心音信号组成数据库,单个信号样本时长大于等于3 s,采样频率均为4 kHz,使用上述样本时无需任何的预处理操作。传统心音识别中,心音信号必须先完成一系列繁杂的预处理过程,系统一次性能识别的心音信号数量也有严格限制。然而心音深度学习网络平台是面向自然环境下数据量大的心音信号,与传统实验方法相比,性能更加优越,同时具备一定的工程应用性。
先从数据库中随机抽取800个样本进行训练,将剩余的样本分为两个库进行测试,先后抽取的库无任何交集以排除可能出现的干扰。
(1)构建一个2~6层,每层有20~300节点数的深度学习网络,由训练库数据得到的层间重构误差如表1所示。
表1 层间重构误差
(2)经过上述操作后可发现,当每层有超过150个节点数时,重构误差就会从第二层开始逐步增加。因此,将节点数部分减少后,每层的重构误差也随之降低,当单层节点数降至20节点后,第二层的重构误差随之下降到底层的10%以下。
(3)心音深度信任网络的分类器选择BP神经网络。表2为2~6层,20~200节点数的心音深度信任网络训练误差表。
表2 心音深度信任网络的训练误差
结合训练集误差进行分析,对比可知每层60节点共三层的网络结构性能最佳,其训练误差是0.022 9。
通过测试库进行测试,采用最优网络结构对数据库中的两个测试库进行测试所得误差分别为0.107 3和0.097 7,同等测试环境下60-60-60-60的测试误差则达到0.112 6和0.117 3,40-40-40(40节点三层)的测试误差为0.127 2和0.114 8,100-100-100(100节点三层)的测试误差为0.169 8和0.139 8。对比数据如表3所示,可以看到60节点三层的网络结构准确度最高。
表3 四种网络结构性能对比
4 结束语
本实验平台以LabVIEW语言作为研发搭建工具,结合MATLAB以及深度学习网络开发一种模块化的实验平台,实现对心音的采集、分析、处理并可以拓展到身份识别和深度学习等前沿领域的实验和探索。心音深度信任网络的研究对于快速构建一种深度学习网络,增强在自然环境下心音识别算法处理大数据的性能,具有实际的意义。在以后的研究中还可以在身份识别和深度学习方面进一步优化处理,使该平台更加完善和实用。