张金亮,李东平,周靖
(湖北汽车工业学院 电气与信息工程学院,湖北 十堰442002)
被动声源定位是一种运用声学原理、使用电子设备接收和处理声学信号以检测锁定目标的技术。被动声源定位技术发展至今已有100多年,最早以1906 年的声呐系统为世人所知,随着技术的发展,利用声源的振动、频率、声压级、传播等特性,可以较好地实现声源定位并用于系统异常情况的识别和诊断[1],也为深海探测、水下通讯、侦测敌军等提供了可能。随着电磁干扰、隐身技术、反辐射材料相关技术的发展,传统的主动探测面临巨大的挑战。基于麦克风阵列探测的主动探测技术凭借其隐蔽性好、成本低、定位精度高等独特的优势,受到许多研究人员的青睐,随着现代科技的不断突破,该技术在军事领域、工业工程、环境监测以及日常民用领域都有着广泛的应用[2]。Brandstein等人于1996年首次将麦克风阵列信号应用于人的声音定位和追踪,基于一系列的研究,传统声源定位方法分为基于时延估计的声源定位算法[3-4]、基于高分辨率谱估计的声源定位算法[5]、基于可控波束形成的声源定位算法[6]。传统的声源定位尽管部分算法易于实现,计算量小,但其在复杂噪声环境或多声源场景下效果较差,鲁棒性也有待进一步提高[7-8]。机器学习从已有案例中学习知识和经验,针对各种情况建立起不同的模型,并用来推断实际问题。与常规的解决策略相比,这种学习算法的新颖之处在于它特别重视样本数据,即使用数据驱动。传统声源定位方法并不使用预先获得的先验信息,某些情况下会局限于预定的区域内,机器学习算法利用分类识别以及其高度泛化能力对声源进行定位,可以较好地解决传统方法存在的一些问题,不仅有更强的鲁棒性,而且能够在麦克风无法收到直达声时依旧有效。近年来,基于支持向量机、神经网络等机器学习的声源定位算法得到广泛关注。文中旨在继续对声源定位模型中机器学习应用展开研究,采用基于麦克风阵列进行声源测量和数据采集,并对数据集进行筛选和处理,重点对机器学习中线性回归、决策树、多层感知机、集成学习4 种算法进行分析,并应用于声源定位中,使用Python 机器学习工具箱sklearn 对4 种不同的算法进行实现,并对不同算法的性能和特点进行分析。
结合实际应用场景,考虑点声源的情形,由声音传播模型可知,点声源的波阵面为球面,声波在某点处的声压与该点至声源中心的距离成反比,在被动声源定位系统中,往往需采用3个或者3个以上接收设备测量声源相关的信息[9-10]。在理想环境中,麦克风阵列接收的信号视为直达声音信号。在声源发出声波之后,麦克风阵列的每个阵列元件接收声学信号用于后续处理。图1展示了由3个麦克风构成的理想模型示意图。若以3 个接收端为圆心,当接收到的声波传递时间、声压级一定时,有且仅有1个交点,即声源点。因此可通过机器学习方法去“学习”这一规律,达到预测新输入的目的。
图1 声源定位模型示意图
基于上述三点麦克风接收模型,按照图2所示的方案选择100 m×100 m的空旷场地,分别在预定的位置放置3个麦克风及声级计,其位置构成三角形,从图标记位置出发,先横向后纵向,每隔5 m移动声源依次采样,通过不断改变声源位置来构造数据集,声源的声压设置为固定值100 dB,便于后续数据整理;同时还需要测量温度、空气湿度等一些影响声音传播的环境因素。在每个位置点进行10组试验后,将3 个接收端的数据记录下来,经整理后存入Excel中,以备进一步使用。
图2 声源测量及数据采集方案示意图
数据集的好坏在一定程度上影响机器学习的效果和最终数据分析的质量,因此对上述方案中每个位置点采集到的10组数据剔除最大值和最小值后,再进行均值处理,以排除测量误差的影响。此外,为了降低计算复杂度、减少噪声干扰和提高识别精度,对数据降维。
点声源传播过程中随着距离衰减,理想情况下的衰减公式为
式中:r1为参考点到声源的距离;r2为实际点到声源的距离。图3为声源随距离衰减的波形图。由图3可见,筛选后的数据能较好地反映实际的场景,由于噪声干扰及地面反射等因素,实际声场中声波声压级幅值会有较小的波动,反映出的函数关系和理想曲面十分接近,因此所采集的样本数据是有效的,可用于后续的训练和学习。
图3 声源随距离衰减的波形图
损失函数可以用来评定一个模型的泛化能力,
式中:α为学习率,在式(5)中每次更新时乘以学习率可控制更新参数的快慢。当α值太小,训练得很慢;但是α值比较大的话,训练加快,却容易过拟合,在实验过程中需要根据实际情况调整。
回归决策树一般使用CART(classification and regression tree)算法,由若干个二叉树组合,若用于分类,每个结点表示“是”或“否”;若用于回归,每个结点反映为数值。对于不同的特征,回归树将某属性划分为多个范围,每个范围对应着1 个固定输出。通过判别条件,将样本分到相应的叶子结点中。由于每个结点服从二项分布,故其划分边界与坐标轴平行。按照上述规则,将测试数据归纳到指定结点中,预测结果时可以使用平均值作为输出。决策树划分的过程也就是建立树的过程,每划分1次,随即确定划分单元对应的输出,也就多了1 个结点。当根据停止条件划分终止的时候,每个单元的输出也就确定了,也就是叶结点。
假设X和Y分别为输入和输出变量,并且Y是连续变量,给定训练数据集为
式中:c1和c2为划分后2个区域内固定的输出值,方括号内的2 个min 表示使用的是最优值,即各自区域内平方误差最小的值,易知这2个最优的输出值是各自对应区域内y的均值,所以式(8)可写为
找到使损失最小的(j,s)后,对每个特征的取值依次遍历,首先划分出2 个初始区域,按上述过程依次构造二叉树,直到划分完所有的训练集或达到某预设条件。此方法切分的树称为最小二乘回归树。
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络,从网络结构上看是一种前馈神经网络,最简单的MLP只有3层,即输入层、输出层以及1 个隐层。随着隐层数量的增加,其结构越复杂,处理能力也越强。多层感知机每层神经元之间是全连接的,通过训练网络中的权值连接,可以使感知机对1组输入加权处理,实现目标输出[12]。
BP神经网络(back propagation network)是一种应用广泛的权值调整算法,基本方法是随机梯度下降,目的是使实际输出值与期望值的均方误差最小。BP算法分为信号的前向传播和误差的反向传播。也就是说,当计算输出时,信号经由每层神经网络依次从左至右传递;而更新权重时,则从右至左反向传递,减小系统误差。示意图如图4 所示。正向传播时,输入信号由隐层加权处理后作用于输出结点,若该结点上的输出值与期望值不符,则进行误差反向传播。误差的反向传播是将输出层误差向输入层逐层反馈,并将误差分摊给各层所有单元,以此作为调整各单元权值的依据。权值的修正是沿着代价函数梯度的反方向进行的,通过调整输入结点与隐层结点的联结强度和隐层结点与输出结点的联结强度以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差对应的权值和阈值,此时停止训练。
图4 BP神经网络节点关系示意图
集成学习可通过多个基学习器来完成学习任务。按照个体学习器之间是否存在依赖关系,采用基于装袋(bagging)的集成学习方法。装袋是自助抽样的投票方法。设1个训练数据集为M,样本数量为N,先从M中随机抽取1个样本,放入集合Ms,然后再将该样本放回到M中。重复上述过程N次,集合Ms中得到了N个样本的采样数据。由于采样是有放回的过程,服从二项分布,那么1 个样本没
随机森林(Random,RF)是一种典型的Bagging算法,在Bagging的基础上做出了相应的改进,基本思想是集成多棵决策树用于数据分类和回归。在构建RF的过程中,假设样本具有D个不同的特征,从D个特征中随机选取E个特征,保持E不变,且E小于D,然后随机选择每个机会节点中的特征。每个学习器相互独立且是随机的,从而构建了RF[12]。在进行数据在线预测时,学习器都会产生各自的预测结果,最终通过投票决策综合分析得出输出结果,通常取平均数,算法示意图如图5所示。
图5 集成学习—随机森林算法示意图
1)抽样产生训练数据集RF采用Bagging抽样技术,从原始的训练数据集中重复抽样K次,产生K个训练子集(假设需随机生成K棵决策树)。训练子集中的样本存在一定的重复,主要是为了在训练模型时,每棵决策树的输入样本都不是全部的样本,使森林中的决策树不至于产生局部最优解。
2)构建K个学习器(决策树)每个训练集得到1个最优模型,K个训练集得到K个最优模型,每个最优模型产生1棵决策树,从而产生K棵决策树形成森林,每棵树不需要剪枝处理。
3)生成随机森林,使用投票决策输出结果 根据决策树对测试样本进行综合分析,以平均值作为预测结果。若是分类问题,需要对K个模型进行投票处理,何种结果出现次数多就分为哪一类;若是回归问题,则需要对K个模型的预测结果求平均。
图6 基于机器学习声源定位方法
基于4种机器学习的定位流程和方法如图6所示。基于前述章节中的固定场景下,3个麦克风分别接收预定位置声源信号,通过采集的信息可得到声源到各麦克风的传播时间和声压级,进一步计算每2 个麦克风之间接收信号的到达时间差(timedifferences-of-arrival,TDOA),并将其和声压级共同作为特征向量,分别基于不同的机器学习算法,对特征向量和分类器的权重系数进行调整和更新,从而得到分类模型,完成样本的训练。在定位测试时,同样通过3个麦克风分别接收某个测试位置的声源信号,提取TDOA 和声压级特征向量后,根据训练的分类模型提取输出定位结果。
针对4种算法,使用Python下机器学习工具箱sklearn 对其进行仿真和对比分析。在具体实现过程中,参数调整好后,使用regr.fit(X,y)来训练数据,使用某一特定比例的训练集,均匀选取样本总数的70%作为测试集,X对应于训练样本中的输入,即声源分别到每个麦克风的传播时间和接收到的声压级,y对应于训练样本中的输出,即声源的二维坐标和声源声压级。剩下30%数据集用来检测模型拟合的优劣程度,利用regr.predict(X_test)预测输出,将预测出来的结果与真实情况比较,以此来评判模型及算法准确性。
选取部分测试集的数据进行展示,所有测试集及对应的预测结果(样本总数的30%)用三维曲面表示,结果如图7 所示:神经网络和随机森林算法相对于线性回归和决策树算法的预测数据覆盖更全面,分布也相对比较平坦、均匀。
为进一步验证不同算法特征,对其具体性能进行分析。对于每个轴方向上4 种算法预测数据最大误差统计结果如表1 所示,4 种算法的X向距离偏差较Y向距离和声压级的偏差更大一些。
图7 三维曲面预测结果
表1 各轴向最大误差统计
对于多元线性回归模型而言,其主要优势在于建模简便、易于理解,适用于数据量不大的情况,训练时间短,但是当训练样本中有噪声时,会产生较大误差。某些情况可能会忽略交互效应和非线性的因果关系,可能出现欠拟合现象,导致不能取得最好的预测效果。该模型在处理声源定位的问题上得分较高,较好地拟合了测试集,这是由于样本数据有比较好的线性关系,且噪声点较少。
回归决策树拟合略差,其均方差为27.89,CART对噪声敏感,易在训练中造成过拟合。优点是计算量小,对缺失数据不敏感,采用自顶向下递归方式构造决策树,每次划分都使当前误差最小,训练时间复杂度小、效率高,只用构建1次决策树,每次预测的最大计算次数不超过决策树的深度。
多层感知机有很强的鲁棒性和泛化能力,人工神经网络由许多个简单的处理单元并联组合而成,其分布式处理的方式能够运算大规模数据。每个神经元接受大量其他神经元的输入,通过非线性的输入、输出关系,进而影响其他神经元。该算法最明显的缺点是在隐层数量和神经元个数的选取上徘徊不定,至今没有明确的理论依据,只能凭经验去摸索。由于神经网络收敛速度很慢,训练过程会耗费大量时间,另外在使用梯度下降法优化权值的过程中容易陷入局部最小值。
集成学习明显优于弱学习器(决策树)。Bagging 对回归结果采用简单平均的方法,性能稳定,泛化能力较强,可有效降低模型的方差。训练过程并行且互不干扰,对大规模样本的处理具有优势。相比CART决策树,其鲁棒性有很大程度的提高。
文中研究的是多输入多输出的回归问题,将机器学习中线性回归、决策树、多层感知机、集成学习4种算法应用于声源的定位中,使用sklearn工具箱对算法进行仿真,分析不同算法模型的预测结果和性能指标,为不同应用环境和场合下声源定位算法的选择提供一定参考。然而,在实际应用算法移植的可行性来看,需考虑硬件平台及处理器算力的限制,后续将展开进一步的研究。