摘要 针对传感器优化布置(optimal sensor placement,简称OSP)问题,提出了一种新的使用深度神经网络的解决方案,并以简化的桥梁形状的桁架结构中的振动测试传感器优化为例进行了验证。首先,选择一种传统的传感器优化布置方法,对自动化生成的大量不同的桁架结构分别进行传感器优化布置计算,将所得优化布置结果在进行数据预处理后构建出深度学习方法所需要的训练集与验证集;其次,使用Python语言和深度学习框架Tensor Flow设计实现与本研究问题适配的深度神经网络模型并训练;然后,随机生成了新的桁架结构参数;最后,将深度神经网络输出的传感器布置结果和传统方法的计算结果进行了比较,验证了本研究方法的有效性以及在速度上、可移植性与可扩展性方面的性能优势。
关键词 结构健康监测;传感器优化布置;深度学习;深度卷积神经网络
引 言
传感器系统是结构健康监测或类似体系中的重要部分。为了对结构进行科学合理的评价,需要设置尽可能多的传感器,考虑监测系统的经济性与可靠性,又不能设置过多的传感器。如何在m个自由度上设置n个传感器(n≪m),达到监测效果与经济性的统一,一直是OSP领域的热点问题。Kammer[1]提出了一种针对大型空间结构OSP的有效独立性方法。Worden等[2]利用神经网络和组合优化方法研究了故障检测及其分类。Papadimitriou[3]应用信息熵(information entropy,简称IE)测量OSP中传感器的配置性能。李世龙等[4]根据信息熵原理,以协调灵敏度矩阵条件数最小和信息矩阵最大为目标,提出了一种多目标传感器优化布置方法。程建旗等[5]基于传统有效独立法,以传感器测点的频响函数为驱动点留数加权有效独立分布向量,提出了改进的有效独立法。吴子燕等[6]结合有效独立法和运动动能法,提出了能够避免两者缺陷的有效独立-驱动点残差法。Yi等[7]研究了OSP的多种策略,例如:QR分解、顺序传感器布置和传感器位置优化的遗传算法(genetic algorithm,简称GAs)。Flynn等[8]在一种损伤检测理论框架内,提出了用于结构健康监测的贝叶斯OSP方法。Chang等[9]使用多维度模态形状研究了韧性结构的OSP。
数学上OSP可被表述为约束优化问题,其中变量为结构上的候选传感器位置的离散值。约束条件由OSP的可用自由度和给定传感器总数决定。根据Fisher信息矩阵(Fisher information matrix,简称FIM)等定义最小化或最大化的目标函数,测量OSP中传感器配置的效用。因此,使用各类新兴优化方法解决OSP问题获得了广泛重视。Yao等[10]使用遗传算法研究了空间站在轨模态识别的传感器布局。Rao等[11]将OSP问题视为一个组合优化问题进行处理,通过混合粒子群优化(particle swarm optimization,简称PSO)方法解决。Guo等[12]通过使基于模态形状敏感性的FIM目标函数最大化,提出了一种改进的遗传算法,使用了针对桁架桥OSP问题的二进制编码。Lian等[13]提出了一种离散PSO技术,根据最近邻指数加权的FIM,为大型结构选择最佳传感器位置。Yi等[14]研究了具有双重编码机制的猴群算法(monkey algorithm,简称MA)的几个版本,通过最小化模态置信矩阵(modal assurance criterion,简称MAC)最大非对角值解决OSP优化问题。李德春等[15]提出了基于改进粒子群算法的应变传感器优化布置方法。
人工智能领域的深度学习(deep learning,简称DL)在图像识别和语音识别等领域取得了巨大成功。Hinton等[16]使用无监督的逐层贪婪的预训练方法,成功解决了深度模型优化困难的问题。Dahl等[17]在语音处理中使用深度神经网络(deep neural network,简称DNN),将语音识别的错误率显著降低。在图像领域,Krizhevsky等[18]使用深层次的卷积神经网络(convolutional neural network,简称CNN)在ImageNet评测上取得巨大突破,将错误率从26%降低到15%。
随着物联网技术的加速布局,相关研究问题也日益得到重视。与生命财产安全息息相关的各种机械、建筑结构无疑是物联网传感器技术首先成熟并行业化应用的对象之一。为这些数量巨大的结构提供传感器优化方案,对传统优化方法提出了挑战,而深度学习方法为解决这一问题提供了新的思路与方案。笔者尝试利用人工智能领域的先进成果,将DL应用到OSP领域。
1 结构的OSP实现与数据集的构建
DL本质上是使用DNN的机器学习方法。本研究目标是训练一个DNN模型,以结构的物理参数为输入,输出该结构的最优传感器布置方式。深度学习方法所需要的理想的数据集,应由从科研或工程实践中采集到的效果良好、公认可行的数据构成。本研究训练数据集采用文献[6]的有效独立-驱动点残差法生成。
1.1 单个结构的OSP实现
如图1所示,本研究的研究对象为简化的桥梁形状桁架结构,具有12个节点和21个桁架单元。其物理参数为:弹性模量E=2.1×1011 Pa;截面面积A=10-4 m2;密度为7.3×103 kg/m3。
图1 桁架结构示意图
Fig.1 Diagram of truss structure
结构的节点坐标数组为
用矩阵形式表示结构的约束条件,第1列为结构编号,第2列为在此编号上约束方向(1为y方向,2为x方向)。此结构的初始约束条件为
深度学习方法已经在多个领域被证明能够很好地处理大规模问题,具有良好的可扩展性。理论上,即使本研究目标在规模上再进行多个数量级的扩大,深度学习方法也能够支持。因此,综合考虑各方面因素,笔者选取传感器数目为4来验证所提框架的可行性。
笔者使用Matlab语言编程实现有效独立-驱动点参差法,并将此结构的物理参数输入程序进行计算,得到结构的OSP结果为
1.2 数据集的构建
采用以下方法自动生成大量固有频率不同的桁架结构(即不同的样本):改变结构中约束的位置和方向,通过生成同一结构的不同约束条件组合来构造出物理参数不同的结构。对这些结构分别应用选定的OSP算法计算传感器的优化位置。以每一种结构的约束条件为样本(x),与其对应的传感器布置方式为样本标签(y),一个样本的x与y为一组数据。本研究生成了数据量不同的多个数据集,用来调试神经网络参数以及研究DNN效果与数据量的关系。
在图像识别的深度学习项目中,输入层将图像的众多像素点值拉直为一维向量。本研究将X与Y矩阵拉直为一维向量,存储在excel表格中,便于神经网络模型输入输出层的设计。
2 深度神经网络的设计
2.1 构建DNN模型步骤
深度学习算法打破了传统神经网络对层数的限制,可根据设计者需要选择网络层数。其训练方法与传统的神经网络有很大区别,传统神经网络随机设定参数初始值,采用梯度下降(gradient descent,简称GD)算法或者其他优化算法训练网络,直至收敛。深度结构训练困难,传统对浅层有效的方法对于深度结构并无太大作用,随机初始化权值极易使目标函数收敛到局部极小值,且由于层数较多,残差向前传播会严重丢失,导致梯度扩散,因此在深度学习过程中采用贪婪无监督逐层训练方法,即在一个深度学习模型中,每层被分开对待并以一种贪婪方式进行训练,当前一层训练完后,新的一层将前一层的输出作为输入并编码以用于训练。每层参数训练完后,在整个网络中利用有监督学习进行参数微调。构建DNN模型步骤如下:
1)初始化所有参数(W 1,b 1,…,W L,b L);
2)L-1个线性激活前向传播,每个线性激活前向传播步骤包括线性运算和激活函数运算;
3)计算损失函数;
4)L-1个线性激活反向传播,每个线性激活反向传播步骤包括激活反向运算和线性反向函数运算;
5)更新参数;
Sage-Husa自适应卡尔曼滤波可以实时地估计和修正系统噪声和量测噪声的统计特性,这一过程的实现,是通过时变噪声估计估值器来实现的,同时利用了量测数据进行递推滤波。从而达到降低系统模型误差、抑制滤波发散提供滤波精度的目的。
7)计算预测值。
2.2 构建DNN模型考虑因素
2.2.1 层与层之间的连接方式
本研究中表示单个样本的数据体量较小,且所有样本表示矩阵的形状是固定的,故无需卷积层来提取特征、简化参数矩阵。在此选择比较基础但普遍使用的全连接方式,即一层的单元节点与前后层的每一个单元都相连。采取此连接方式有助于简化编程时的复杂度。
2.2.2 输入输出层节点数
输入输出层节点数也就是输入输出数据的格式。本研究中样本的约束条件为3×2矩阵,OSP结果为4×2矩阵,将其拉直为一维向量,分别含有6和8个元素,相对应的输入层有6个节点,输出层有8个节点。如图2所示,输出层每个节点的值即为拉伸后的结果向量相应位置的值。
2.2.3 激活函数
图2 输入输出层节点
Fig.2 Input and output layer node
因为线性模型的表达力不够,一般需使用激活函数加入非线性因素。通过函数把激活的神经元特征保留并映射出来,去除一些数据中的冗余信息,这是神经网络解决非线性问题的关键。因为神经网络的数学基础要求处处可微,所以选取的激活函数要能保证数据输入与输出也是可微的。激活函数可以自定义,也有很多可供选择。例如,常见的sigmoid和softmax函数主要用于分类问题,但两者的值域都处于[-1,1],选择其为激活函数意味着隐藏层中的单元输出值也在[-1,1]中,而实际上期望的最终结果中有一半节点的值处于值域[1,12]中。在实践中常用线性修正激活函数(rectified linear unit,简称ReLU),其值域为0到无限大,包含了本研究中输入输出数据的值域。图3为模型中的激活函数选取Re LU函数图像。
图3 ReLU函数图像
Fig.3 Graph of ReLU function
2.2.4 损失函数
损失函数测量的是预测值与真实值之间的差异。本研究中真实值Y的形式为矩阵,要测量两个相同形状的矩阵之间的差别可以使用欧氏距离或马氏距离。笔者选用欧氏距离,仿真模拟证明了该选择具有足够的准确性。欧式距离定义为在m维空间中两个点之间的真实距离,或者向量的自然长度。两个n维向量a(x 11,x 12,…,x 1n)与b(x 21,x 22,…,x 2n)间的欧氏距离为
根据DNN结构,使用Python语言(主要调用numpy库)和深度学习框架进行设计和编程,实现此深度神经网络。首先,使用Python语言从零编程实现DNN模型;其次,使用Tensor Flow开发同样的模型。对比结果表明,完全使用Python的编程工作量比使用现有成熟框架大很多,自行开发模型在预测结果上比深度学习框架实现模型要差。因此,建议将深度学习应用于OSP问题时应充分利用当前已有框架。
深度学习框架的作用在于只需按照前向传播过程创建深度模型,反向传播、梯度下降和更新参数的过程由框架自动实现而无需再手动编程。目前,国外流行的深度学习框架包括Tensor Flow,Caffe,Torch及Theano等。国内开发较早的有百度的paddlepaddle。由谷歌公司开发的Tensor Flow是目前行业、科研中使用最为广泛、学习资料最为丰富的深度学习框架,且在Tensor Flow等深度学习框架的基础上还有一些更高级的框架库,如keras。这些体系在基础框架上再进行封装,进一步简化了实现一个深度神经网络的复杂度。Tensor Flow已被广泛证明具有良好的性能,特别在可扩展性方面从仅有数个参数的简单模型,到参数数量达到109量级的超大模型,使用Tensor Flow进行开发都获得了成功。因此,笔者选取Tensor-Flow实现DNN架构。从理论上来说,所提出的框架完全具备处理复杂度超出本研究范例多个数量级OSP问题的能力。
3 Tensor Flow DNN的测试与训练
构建一个10层(不包括输入层)的神经网络模型,各层单元数目为[6,25,20,18,15,15,15,15,20,15,8]。输入训练集后多次调整学习率和迭代次数,对模型进行训练。取最终损失值最小、损失函数图像下降最稳定者为最优结果。
由于在设计深度神经网络模型时采取随机批次数目方法,故在调试模型时仅需考虑学习率和迭代次数的调整。在OSP研究领域,DNN模型参数的确定尚没有可以参考的方法规律,因此采取多次尝试的方法。一般从学习率等于1开始,训练完毕后再分别尝试1.5与0.5,比较损失值图像和预测结果,以此类推直到找到效果最优的参数配置。
3.1 优化器为随机梯度下降
在Tensor Flow框架中,提供了几个优化方法供选择,可以直接使用一行代码进行调用。以1 520组数据为输入,设置学习率为0.001,迭代次数为1 600,图4为采用随机梯度下降(stochastic gradient descent,简称SGD)优化方法的DNN训练结果。由于本课题中真实值的元素全为整数,故对神经网络输入验证集数据的预测结果取四舍五入为最终预测值,DNN部分预测结果对比如表1所示。
图4 随机梯度下降优化方法的DNN训练结果
Fig.4 DNN training process of stochastic gradient descent optimization method
表1 使用SGD的DNN部分预测结果对比
Tab.1 Comparison of DNN partial prediction results using SGD method
表1中,第1行的OSP n为预测结果中第n个传感器的节点位置;TEST s为第s个结构使用传统OSP方法的计算结果(视为真实值);PRED n为训练后的神经网络针对此结构的OSP结果(即预测值)。
神经网络对验证集数据的预测效果用欧氏距离表示,损失值为0.898 369。从表1可以看出,4个传感器布置位置的预测结果非常逼近真实值,且随着真实值的变动而改变,预测值与真实值的差距普遍在0~2之间。
3.2 优化器为自适应矩估计
自适应矩估计(adaptive moment estimation,简称Adam)算法可以基于训练数据迭代地更新神经网络权重,根据损失函数对每个参数梯度的一阶矩估计和二阶矩估计动态调整,为不同的参数设计独立的自适应性学习率。Adam基于梯度下降方法,但是每次迭代参数的学习步长都有确定的范围,不会因为很大的梯度导致很大的学习步长,参数值比较稳定。Adam优化方法比SGD和均方根传播(root mean square propagation,简称 RMSProp)等梯度下降方法更受欢迎。图5为Adam的DNN训练结果。使用Adam的DNN部分预测结果对比如表2所示。可以看出,此训练的预测结果比使用SGD得到的预测结果更接近真实值,预测值与真实值的差距普遍在0~1之间。
图5 Adam的DNN训练结果
Fig.5 DNN training process of Adam optimization method
神经网络对验证集数据的预测效果用欧氏距离表示,损失值为0.679 325。通过以上测试发现,深度神经网络对传感器优化布置的计算结果与传统方法(在本研究中视为真实值)的结果非常逼近,在较小数据量的条件下能够达到同样的优化程度,可以作为实际传感器布置的参考方案。
表2 使用Adam的DNN部分预测结果对比
Tab.2 Comparison of DNN partial prediction results using Adam
该框架的多个环节存在性能优化的空间,需要扩大研究目标规模和传感器数目,以更加接近实际工程问题。
4 结 论
1)在大量数据集的基础上,深度学习方法可以为结构传感器优化布置问题提供解决方案。
2)基于深度学习的OSP方法在其神经网络训练完毕后,对于输入的新结构(新数据)传感器布置位置的计算非常迅速(0.1 s),远快于传统编程实现方法(1 s~1 min)。这一速度优势在结构体量非常大的情况下更加明显,本质上训练完毕的神经网络给出结果时只需调用与层数相等次数的向量运算。
3)相较于传统OSP方法,深度神经网络具有更好的普适性。由于神经网络的结构与具体OSP问题无关,只需要保证数据预处理后的数据格式与神经网络的输入输出相符,故此方法具有更好的可移植性。
4)神经网络程序具有很好的可扩展性,当问题规模扩大时,扩大神经网络的规模只需修改、增添数个语句。