知识转移策略的跨域故障诊断

  • 背景
  • 转移学习概述
  • 转移学习方法
  • 研究动机和问题设置
  • 跨域方法在故障诊断中的应用
  • 应用
  • 开源故障数据集
  • 讨论和未来方向

背景

数据驱动诊断方法的常用验证方式为通过将一个数据集分为训练集和测试集来保证这两个先决条件。但是,在实际的诊断场景中,这种验证方式是不切实际的,由于以下两个问题,很难满足前提条件:
1. 通常,在建立诊断模型之前很难甚至不可能获得与测试数据集具有相同分布的训练数据集,因为这意味着我们需要在同一台机器甚至相同的工作条件下收集每个故障类别的数据。
2. 对于使用中的机器,很难获得稀有的带标签的故障数据,因为在故障情况下可能不允许其连续工作。

这两个障碍使得基于传统机器学习和深度学习的诊断方法无法应用于工程故障诊断。
首先,由于相同的工作原理和从中生成这些数据的机器的相似故障机制,应该在来自多个来源的这些数据中包含相似的故障特征。第二,数据驱动的故障诊断(称为智能故障诊断)旨在模仿使用机器学习技术的诊断人员,而诊断人员可以通过扩展从其他相同类型的机器中学到的知识(不仅是从他们感兴趣的机器中学到的知识)来诊断故障。 也就是说,**在建立诊断模型时,可以利用相关数据集中的知识。**但是,当存在分布差异时,常规的机器学习和深度学习技术都无法直接使用。为了充分利用先前的多源数据,跨域故障诊断是一项新的尝试,它有可能克服当前数据驱动型故障诊断中的障碍。

(1)首次根据研究动机,跨领域策略和应用对象,对跨域故障诊断的研究工作进行了系统介绍。(2)在这篇综述中,包括了所有传统的转移方法,深度转移方法和基于对抗的转移方法,同时还总结了一些没有转移的跨域诊断方法。(3)我们对开源数据集进行了全面总结,以方便读者开始研究跨域故障诊断。(4)讨论了跨域故障诊断的几个未来研究方向。

转移学习概述

转移学习旨在解决两个或多个领域之间的学习问题。定义1所定义的域D是对相应主题或系统的特征的数学描述,例如图像分类中的图像特征、轴承和齿轮故障诊断中的振动信号特征。特征空间X通过D个特征描述被试的特征,P(X)描述被试所考虑问题的具体分布状态。与域D相对应的任务T,如定义2所示,定义了学习目标,即Y和X之间的映射关系。

在统计学习理论框架下的传统机器学习算法遵循一个基本假设,即训练数据和测试数据是从同一分布中提取的。如果不成立该假设,则这些方法的泛化性能可能会急剧下降。不幸的是,数据集之间的分布差异是现实应用中的普遍现象。例如,**在故障诊断中,不同的工作条件,负载,传感器的位置以及机器尺寸等可能导致振动信号发散,并导致特征空间中的分布差异。**在视觉识别中,不同的环境,光线,背景,分辨率和视角是可能影响图像数据分布的潜在因素[18],[19]。通常,为了保证传统学习方法在新的但相似的任务中的性能,目标任务下需要大量标记样本以重新训练相应的模型。但是,为任何新任务标记大量目标样品是费力的,并且对于实际应用而言是不现实的。同时,传统的机器学习方法在受到来自不同于测试条件的不同条件的数据训练时往往会崩溃。因此,开发能够利用来自其他相关数据集的知识(具有足够标记的样本但分布不同)来构造针对当前任务的健壮模型的学习算法是一个重要且引人注目的问题。通常,对来自源域的样本进行完全标记,但是目标域中的样本可能会在特定问题设置中可能未标记或部分标记
转移学习旨在利用来自一个或多个相关数据集(称为源域)的知识来提高模型在当前数据集中(目标域)的性能。它的灵感来自于人类的能力,这些能力重用了先前任务中的知识,而无需从头开始学习新任务。在图中说明并比较了迁移学习和传统机器学习的学习过程

转移学习方法

在计算机视觉和自然语言理解等领域,转移学习已成为近年来广泛讨论的话题。在[17] – [18] [19] [20] [21] [22]中可以参考有关转移学习和领域适应的一些评论。通常,转移学习方法根据“转移内容”的标准分为几类[17]。此外,由于强大的表示学习和端到端的培训能力,基于深度学习和基于对抗的传输方法最近得到了逐步研究[19]。因此,简要介绍以下几种转移策略,以帮助读者理解转移学习。
1)实例重新加权方法
实例重加权方法可用于解决域偏移问题,在该域偏移问题中,将估计的权重合并到损失函数中,以使加权的训练分布近似于测试分布。实际上,迁移学习的目标是学习一个函数ft(⋅)来预测目标域中测试样本的类标签。一般来说,ft(⋅)的最优参数θ*


这意味着利用源域数据训练的模型可以通过估计每个训练样本的权值Pt(X)/Ps(X)推广到目标域。有许多现有的策略是为学习权重而设计的[25]-[26][27][28][29]。Dai等人提出的一种流行的方法,称为TrAdaBoost。[27]已应用于故障诊断领域。其试图在集成学习架构AdaBoost下迭代重写源域数据。在每一轮迭代过程中,都会根据目标域数据计算出的误差,对源域样本重新加权,以减少“坏”源样本的影响,同时鼓励“好”源样本为目标域做出更多贡献。基于样本重加权的域自适应方法主要针对源域和目标域之间的差异不太大的情况[19]。
2)特征转移方法
转移学习的另一个直观想法是学习一个新的特征表示空间,其中源域和目标域看起来“相似”并且可以进行比较。在这种传输方法下的潜在假设是,存在一个公共子空间或更高级别的表示形式,用于对域之间的公共特征进行编码。在领域不变特征支持的新空间中,使用来自源领域的带标签数据训练的分类器可以通用到目标领域。 使用不同的传输标准,可以将特定的传输策略归类为:(1)特征转换[30] – [31] [32],(2)基于子空间的[33] – [34] [35],(3)基于稀疏编码的[36],[37]和(4)基于低秩表示的[38],[39]。
转移成分分析(TCA),由Pan等人提出。[30]是一种典型的特征转移方法,已成功地应用于故障诊断问题。TCA的学习目标是寻找一个域不变的特征空间,在该空间中,两个域Ps(Xs)和Pt(Xt)之间的边缘分布距离最小。使用最大平均差(MMD)标准测量分布距离,如(3)[40]所示,TCA的目标函数由(4)定义


3)分类器适应方法
代替构造分类器之前学习领域不变特征空间,分类器自适应方法旨在直接设计用于转移学习任务的自适应分类器。这也是一种有效的策略,可以解决训练数据集与测试数据集之间分布不匹配的根本问题。根据参考文献,典型的分类器自适应方法可以分为:(1)基于核分类器的,(2)基于流形正则化的和(3)贝叶斯基于分类器
Yang等人提出的自适应支持向量机(A-SVM)。[41]对于视觉概念分类,是理解这种转移策略的一种直观和典型的方法。A-SVM的目的是将源域分类器fs(x)对标记源数据进行训练,使之适应于目标任务的新分类器ft(x)。这个过程是通过在fs(x)的基础上添加一个形式为Δf(x)=wTϕ(x) 的偏差项来实现的


4)基于深度学习的方法
近年来,深度学习在实现语音识别,视觉目​​标识别,药物发现甚至机械故障诊断的最先进性能方面取得了巨大的成功。作为端对端系统,深度神经网络通过多个处理层来学习具有多个抽象级别的原始数据的表示形式。基于深度神经网络的转移学习方法旨在通过将领域自适应嵌入到深度学习的管道中来学习更多可转移的表示。
基于深度学习的传输方法可以分为两类:(1)参数传输(2)表示自适应。
参数传递是在各种应用程序中跨域方案下训练深度模型的常用策略。参数传递的直观思想是使用少量目标数据来微调预训练的深度神经网络(用于源域的模型)。通常,在具有大量标记数据的源域上训练预训练的深度神经网络
表示适应的想法是将表示适应的目标嵌入到深度学习的过程中。通常,为了学习对故障和域不变性都具有判别力的表示形式,在深度神经网络的目标函数中添加了一个权衡项,该权衡项惩罚了域之间的表示分布差异。 使用域不变表示,可以提高深度模型在目标域上的泛化性能。
Long 等人 提出了深度适应网络(DAN)架构。DAN基于CNN,其总体架构如图4所示。在(8)定义的DAN目标函数中,在CNN风险中加入一个基于多核MMD(MK-MMD)的自适应正则化项,在最后三个完全连通层(l1→l3)的隐式表示下,逼近源域和目标域的分布。最后,DAN增强了CNN任务特定层特征的可移植性。

其中第一项是CNN的分类成本,第二项是MK-MMD适应项。na表示源域和目标域的标记样本数。λ> 0是MK-MMD项的惩罚参数。

5)基于对抗的方法
近年来,生成性对抗网络(generativedepartialnetworks,GAN)通过对抗性学习过程训练鲁棒的深层神经网络,在生成特征级表示方面取得了巨大的成功。GAN由两个模型组成:一个是提取数据分布的生成模型G,另一个是通过预测二进制标记来区分样本是来自G还是训练数据集的判别模型D。训练D以最大化将正确标签分配给训练示例和G生成的样本的概率。同时训练G使log(1-D(G(z))最小化。

其中Pz(z)表示输入噪声的先验分布,Pdata表示数据分布。

受对抗学习过程的启发,基于对抗的迁移学习方法已被广泛研究为一种日益流行的想法。根据不同的策略,基于对抗的方法可以分为两类。 第一个是基于生成的策略[55] – [56] [57],其核心思想是在源数据的帮助下生成带有地面注释的合成目标数据,然后通过以下方式启用跨域任务:使用合成的目标数据。第二种是基于对抗适应的策略[58],[59],目的是通过使用域区分符来适应源域和目标域的表示形式分布。 在对抗学习过程中,当域区分符无法区分源域和目标域时,通过深度神经网络学习到的表示形式的相似性将得到保证。

研究动机和问题设置


1)研究动机
a:动机1:解决不同操作条件之间的跨域故障诊断

训练数据集和测试数据集之间的分布差异是影响数据驱动故障诊断方法的泛化性能的根本原因。 机械系统运行条件的变化是可能导致数据集之间分布差异的主要因素。 因此,采用转移学习的方法是第一个动机,即使用从同一台机器的其他运行状况收集的历史数据为当前运行状况构建有效的故障识别模型。

在旋转机械的诊断任务中,例如转子系统,轴承和齿轮箱,振动信号被最广泛地用于推断机械的健康状况,因为可以使用低成本的振动传感器轻松测量丰富的故障信息。旋转速度的变化将影响被测信号的振动频率和幅度,并进一步影响特征空间中数据的概率分布。 此外,工作负荷根据实际工业应用中的实际要求而变化。解决这种情况下故障诊断方法的性能下降非常重要。例如,在[60] – [61] [62] [63] [64] [65] [66] [67]中[68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78]提出了几种转移策略,以提高目标操作条件下诊断模型的性能通过重用来自不同转速和负载的数据。

在工业生产中,工作环境的噪声是不可避免的且不可预测的,这也可能会改变特征空间中数据的分布状态。 针对这个问题,[73]和[74]提出了两种基于深度学习的方法,它们具有良好的抗噪和域自适应能力。

在[79]中,Wang 等人。提出了一个深层传输网络来解决不同环境温度下电力设备的诊断问题。另外,在许多研究工作中[80] – [81] [82] [83] [84] [85] [86] [87] [88] [89],仅在不同工况之间进行诊断任务模拟传输方案以验证其方法的有效性。但是,这些研究工作的最终目的是解决一般的跨域故障诊断问题,而不仅限于工作条件的差异。

b:动机2:解决不同故障程度之间的跨域故障诊断
除了在不同工况下的动力外,还有一些研究工作考虑了不同故障程度之间的诊断任务[85],[90] – [91] [92] [93]。张等。 [90]使用不同故障直径的数据和不同负荷下不同故障直径的数据验证了他们提出的轴承诊断方法。参考文献[85],[92],[93]还研究了他们的方法对不同故障程度之间的诊断任务的性能。此外,早期故障的诊断是一个非常重要和困难的问题。通常,非常有限的初始故障数据可用于训练鲁棒的诊断模型,尤其是基于深度学习的模型Chen 等。在[91]中提出了一种基于深度自动编码器的参数传递学习方法。所提出的方法可以使用具有明显故障特征的故障样本来促进早期故障诊断

c:动机3:通过利用来自不同但相关的机器或仿真模型的知识来提高诊断性能
在上述研究工作中,尽管用于训练模型的源域数据集和要识别的目标域数据集来自不同的工作条件,工作环境或故障程度,但是从中收集监视信号的机器或系统是一样的。 但是,由于在过去使用要诊断的机器期间发生所有故障模式的可能性很低,并且通常可以收集有限数量的故障样本来训练诊断模型,因此在实际应用中实施该诊断方案可能会很费力。。

通常,从其他相同类型的机器,实验室中的模拟实验或数学模拟模型收集或生成历史故障数据是更可行,更容易的方法。从可行性的角度来看,这些数据还包含此类机器或系统的固有故障信息,并且使用这些数据来训练诊断模型更符合数据驱动型故障诊断的工程要求。

在这种动机下,几项研究工作组织了跨域诊断任务,即从不同的机器上获取训练数据集和测试数据集,以验证相应的转移诊断方法[94] – [95] [96]。在[94]中,Guo 等。提出了一种智能方法,即深度卷积传递学习网络(DCTLN),用于机械故障诊断。基于三个不同的数据集(凯斯西储大学(CWRU)轴承数据集,智能维护系统(IMS)轴承数据集和铁路机车(RL)轴承数据集)的六个跨域任务被用来验证该方法的有效性。在[95]中,Zhang 等人。提出了一种基于字典的监督转移子空间学习方法,该方法利用来自不同井的监测数据诊断抽油杆抽油系统。郑等。在[96]中提出了一种考虑多个源域的故障诊断方法,该方法利用一个轴承的数据建立了诊断模型,并诊断了不同模型的另一个轴承。

此外,有一些研究工作使用实验室(或人工故障)的故障模拟数据来帮助诊断真实机器(或自然故障)的故障模式[92],[97] – [98] [99] [100 ] ]。这些研究工作的直观动机是,在实验室中模拟故障模式比在实际工程中收集故障数据更容易。在[97]和[98]中,Yang 等人。提出了两种在CNN框架下的深度传递方法,以利用实验室轴承仿真数据中的诊断知识来诊断实际的机车轴承。可以在以下地方找到类似的诊断案例[100]用于转子系统故障诊断。Kim和Youn [92]还专注于轴承故障诊断,根据从人为故障数据到寿命测试中收集的实际损坏数据的任务,基于深度参数传递评估了他们的诊断方法。

另外,在实际应用中,由物理机生成的历史故障数据的可用性可能非常有限。可以描述物理机器或系统的固有行为和规则的仿真模型可以在不同的健康状况甚至不同的运行状况下生成大量数据。**利用来自虚拟仿真数据的知识(还可以提供对故障特征的洞察力),也是在故障诊断应用程序中使用转移学习的一种动机。**徐等。 [101]提出了一种结合深度迁移学习的数字孪生辅助故障诊断方法。源域的故障数据由过程设计器和过程模拟建立的数字车间生成,而目标域是相应的物理车间。Sobie 等。 [102]提出了一种模拟驱动的轴承种族故障分类智能诊断方法。在他们的方法中,采用了西门子LMS Imagine Lab Amesim仿真软件实现的一维3-DOF(自由度)轴承动态模型来创建故障仿真数据。在预处理步骤之后,使用生成的模拟数据训练分类模型,CNN和最近邻动态时间扭曲,然后将其用于诊断种子故障实验数据(CWRU数据,SpectraQuest数据和机械故障预防技术协会)数据)和工业风力涡轮机轴承数据。

d:动机4:使用可视图像简化故障诊断任务
通常,尽管深度神经网络可以通过多层转换来提取高质量的特征,但是训练用于故障诊断的深度学习模型需要大量的标记样本和大量的计算资源。然而,有限的故障数据不能支持鲁棒的多层神经网络的训练。受计算机视觉深度学习成功的推动,一些研究工作转移了使用ImageNet数据集(计算机视觉中广泛使用的图像数据集,可在http://www.image-net.org上进行预训练)对深度网络的一些参数进行传输,以加快培训并提高用于机械故障诊断的网络的准确性[103] – [104] [105] [106]。

在[103]中,曹等人。提出了一种基于深度卷积神经网络的变速箱故障诊断学习方法。使用来自ImageNet数据集的大量图像数据(120万个),将经过预训练的深度网络的前21层传输到新的网络中,以进行故障诊断。新的网络由相同的前21层经过预训练的网络和三个新添加的层组成,并使用了针对变速箱故障诊断任务的有限数据进行了微调。同样,邵等人。[104]开发了深度学习框架来实现高精度的机器故障诊断。预先训练的网络VGG-16也使用ImageNet数据集进行了训练。但是,在微调阶段,预训练网络的最后两个卷积块和新添加的全连接层都是可以训练的。另外,[105]和[106]也提出了两种相似的用于机械故障诊断的深度传递方法。预训练网络也使用ImageNet数据集进行了训练,但是深度网络的结构与[103]和[104]中的结构不同。

e:动机5:利用信息来源不完整的知识
可能存在这样的诊断情况,即可以获得大量不完整信息的训练数据。 一些研究工作讨论了如何通过转移学习方法利用这些不完整的源域样本来促进目标诊断任务[90] – [91] [92] [93],[107],[108]。

在[90]中,首先使用包含三种不同健康状况样本的源域数据对深层CNN进行训练,然后使用少量包含五类样本的目标数据对新的CNN进行微调。从预训练的CNN传输部分参数后。

Zhong 等。提出了一种特征映射方法,通过重用在常规数据集上训练的CNN的内部层来提取故障数据集的特征表示[108]。这项工作表明了CNN在大型带注释的燃气轮机正态数据集上学习到的特征表示如何可以有效地转移到具有有限故障数据的故障诊断任务中。

此外,参考文献[107]提出了一种故障诊断框架,该框架使用结构上不完整的样本来促进目标域的模型训练。他们宣称大量不完整的样本也包含有用的信息,将它们转移到目标诊断任务中将很有帮助。

2)不同的问题设置
对于上述研究工作,诊断问题的设置主要可以分为四类。尽管动机可能不同,但是这些研究工作的基本思想是利用相关任务中的诊断知识来帮助学习当前的诊断任务。通常,在诊断模型的训练阶段,总是始终只有一个带有大量完全标记样本的源域,但是目标域中可用样本的情况却有所不同。具体来说,主要有以下四种情况:


b又称无监督域自适应

c只有目标域的正常样本可用,d通常解决域之间差异相对较小的诊断任务,例如不同操作条件

跨域方法在故障诊断中的应用

分为四类:(1)传统传输方法,(2)深度传输方法,(3)基于对抗的方法和(4)其他方法。

1)传统转移方式
分为:1)基于实例权重的方法,2)基于特征的方法,以及3)分类器适应方法。

在[81]中,Shen 等人。提出了一种基于奇异值分解(SVD)+ TrAdaboost的轴承故障诊断方法。在他们的方法中,用SVD提取了振动信号自相关矩阵的特征值矢量作为诊断特征,Dai 等人 提出了基于实例的传递算法TrAdaboost 。[27]被应用来从不同的操作条件重新加权源域数据。这种方法也被用于感应电动机的故障诊断[83]。
基于特征的转移学习方法在跨域故障诊断中得到了广泛的应用和发展。一些研究工作试图通过特征变换来学习一个新的空间,从而减少源域和目标域之间的分布差异。TCA,由Pan等人提出。[30]已被谢等人用于齿轮跨域故障诊断。[60],[61],滚动轴承,Chen等人。[72]和郭等人的delta 3D打印机。[123]。同样,Kang等人。[67]利用半监督TCA(SSTCA)诊断运行条件变化下的轴承故障。将多项式核Kpoly和径向基函数(RBF)核Krbf相结合,构造了SSTCA的多核函数Ki,j=αKpoly+(1-α)Krbf,其中0≤α≤1为多核系数。

在[77]中,Tong等人。提出了一种基于可转移特征的轴承故障诊断方法,称为区域自适应(DATF)。DATF的目标是通过WTXD学习一个特征空间,在该空间中,域之间的边缘分布和条件分布同时最小化。XD=[Xs,Xt]∈RD×(ns+nt)是训练数据集的数据矩阵,其中Xs被标记,Xt被取消标记。DAFD的成本函数是

此外,一些研究工作提出了基于子空间的转移学习方法来解决跨域故障诊断问题。在文献[75]中,Zhang等人提出了一种基于子空间对准的无监督域自适应方法,用于不同运行条件下的轴承故障诊断。首先,利用主成分分析(PCA)生成源域Zs∈RD×d的子空间和目标域Zt∈RD×d的子空间。Zs和Zt的基向量是PCA变换的d个最大特征值对应的d个特征向量,利用PCA变换将源域和目标域(d维)的数据投影到d维子空间。提出了一种子空间对准方法,该方法通过变换矩阵W对准两个子空间,即解决后续优化问题。

此外,沉等。 [80]提出了一种改进的最小二乘支持向量机(LSSVM)方法,该方法将惩罚项和源域数据的约束条件添加到LSSVM的原始目标函数中。该方法属于分类器自适应算法,实现了滚动轴承的跨域故障诊断。

2)深度转移方法
在过去的几年中,已经深入研究了基于深度学习的用于跨域故障诊断的传递学习方法,可以将其分类为:(1)表示自适应,(2)参数传递和(3)其他深层转移策略。
在表中,还列出了这些研究工作中采用的特定网络体系结构,包括CNN,AE及其变体和稀疏过滤(SF)。

a:基于表示适应的方法
从表示学习的角度来看,深度网络可以通过多层非线性转换来学习高级抽象表示。 通常,较低层中的表示比较笼统,较高层中的表示则更针对学习目标。由于跨域故障诊断中域之间原始信号的差异,使用源域数据训练的网络在应用于目标域数据时往往会崩溃。这意味着同一深度网络学习到的源域和目标域的表示形式也不同。

基于表示自适应的方法旨在学习在顶层或多个中间层的领域不可知表示,然后使用来自源域的大量样本的训练网络可以很好地执行目标任务。通常,这种方法通过在学习过程中增加一个权衡项来调整表示的统计分布,从而惩罚域之间的分布差异。 分布距离统计,如MMD[65]、[79]、[84]、[85]、[88]、[89]、[94]、[97]、[98]、[101]、[112]、相关比对(CORAL)距离[113]和Kullback-Leibler(KL)散度[63],通常用于比较故障诊断中域之间的分布偏移。我们将这些方法分为:(a)顶层自适应和(b)多层自适应。
i)顶层适应
直观地,深度神经网络由特征提取器和分类器(或标签预测器)组成。特征提取器的顶层表示是所有层中最抽象的表示,它直接连接到分类器,例如Softmax层或SVM,对应于特定的分类或回归任务。为了适应域之间的转换,提出了一些研究工作以在特征提取器的顶层中对齐源域和目标域的分布。通过这种方式,学习了两个域之间的域不变表示
在CNN架构下,Han等人。[85]提出了一种具有联合分布自适应的深度传输网络。该方法的体系结构如图7所示。第一步,在源域的充分标记数据上预先训练CNN模型,并最小化以下优化目标




式中:ϕ:X→H是从原始空间到RKHS的非线性映射。在域自适应训练过程中,对未标记目标样本的伪标签进行迭代更新,以获得最优的预测精度。第三步,应用领域适应训练后的CNN对目标领域的未观察样本进行识别。对滚动轴承和齿轮箱进行了大量的跨域诊断,验证了该方法的适用性和实用性。

可以在[79]中找到类似的研究工作,以进行电力设备故障诊断。此外,杨等。在[97]中还提出了一种称为卷积自适应网络(CAN)的转移学习方法,CAN与[85]中提出的方法之间的主要区别在于CAN只是减少了两个域的顶层表示之间的边际分布差异,并且分布距离由MK-MMD估算

同样在CNN架构下,Guo 等人。 [94]提出了一种智能的机械故障诊断方法,称为深度卷积传递学习网络(DCTLN),它也遵循顶层自适应策略。在他们的问题设置中,训练阶段提供了未标记的目标域样本。DCTLN包括条件识别模块和域自适应模块,如图8所示。通过具有16层的一维CNN来实现状况识别,其中最后一层被视为健康状况分类器。领域自适应是通过领域分类器和分布距离度量来实现的。自适应模块已连接到特征提取器,以帮助CNN学习领域不变表示。在DCTLN中, 第一个优化目标是使源域数据上的健康状况分类错误最小化, 以获取能够区分不同健康状况的学习功能。对于具有C类的源域数据集,条件识别的目标函数定义为标准Softmax回归损失


DCTLN的第二个优化目标是最大化与特征抽取器相连的域分类器在源数据和目标数据上的域分类误差。





在[112]中,Li 等。提出了一种在CNN架构下用于滚动轴承故障诊断的深度距离学习方法。他们方法的目标函数是

在AE架构下,Wen 等人。 [88]提出了一种顶层深度适应方法,该方法使用三层稀疏自动编码器(SAE)提取功率谱的特征,并应用MMD项来适应特征数据之间的分布差异。源域和目标域。所提出的方法的体系结构如图9所示。首先,通过标记的源数据和未标记的目标数据对三层稀疏自动编码器网络进行了预训练。然后,通过优化以下目标函数对整个网络进行微调


徐等。 [101]还提出了一种类似的方法,即基于深度转移学习的两相数字双胎辅助故障诊断方法,该方法也是基于SAE体系结构的。

ii)多层适应
在特征提取器的顶层实现分布对齐是深度域自适应的最终目标。但是,顶层表示是通过对应于多个中间表示的不同级别的多个抽象过程来学习的。源域和目标域之间的多个中间层中表示的分布差异可能会影响顶层的最终适应结果。一些研究工作已经在顶层和多个中间层中同时实现了域自适应[63],[65],[84],[89],[98],[113]。
在CNN架构下,Yang等人。提出了一种基于特征的传递神经网络(FTNN),利用实验室轴承数据中的知识对实际机车轴承进行诊断[98]。该FTNN模型的结构如图10所示,它采用域共享CNN从源域和目标域的原始振动数据中提取可转移特征。在域自适应过程中,自适应学习特征在两个卷积层conv1、conv2和两个完全连通层fc1、fc2中的分布。FTNN目标函数中的多层域适应项LD定义如下


在[84]中,Li等人。提出了一种类似CNN结构下的多层域自适应方法。将衡量两个区域在多层中分布差异的MK-MMD项与CNN的分类损失相结合,用于学习区域不变特征。

在AE架构下,Lu等人。[89]提出了一种用于故障诊断领域自适应的深层神经网络(DAFD)。DAFD遵循与[84]、[98]不同的域自适应策略,即源域和目标域之间的特征分布是逐层对齐的。在每一层中,在自动编码器Lae的损失函数中增加了一个用于减小源域和目标域分布差异的MMD项LD和一个用于增强代表性特征的加权正则化项Lweight。DAFD模型的最终目标函数


比较[89]和[84],[98],发现DAFD [89]的域自适应过程是在无监督的表示学习阶段逐层实现的,但是[84]和[98]中的过程是在有监督的学习阶段中通过一个步骤实施的
类似于[89],钱等人。提出了一种基于SF结构的旋转机械故障诊断的深度传递学习方法,该方法也是一种无监督的特征学习方法[63]。在特征提取过程中,用高阶Kullback-Leibler(HKL)度量的分布距离惩罚项LD(φs,φt)与SF损失相结合。然后,特征提取器的目标函数是

b:基于参数传递的方法
从特征转换的角度来看,深度神经网络通过从训练数据集中学习到的多层参数将输入信号转换为新的空间。因此,网络的输入和输出之间的隐式关系模型由各层之间的参数确定。对于跨域方案,参数传递方法假定相关任务的各个模型应共享一部分参数θcom


θcom 代表共同的参数,带 ’ 分别表示源域和目标域的特定参数

基于这种想法,一些研究工作提出在训练网络执行目标任务时从源任务网络继承部分参数[69],[70],[87],[90] – [91] [92 ] ] [93],[103] – [104] [105] [106] [107] [108] [109]。在深度神经网络架构下,这些参数传递方法的基本过程包括三个主要步骤:
1.使用源域数据来训练预训练的网络A。通常,来自源域的数据被完全标记,并且数据量足够大以训练健壮的标识模型。
2.构造一个新的网络B用于目标任务,并从预训练的网络A传输参数的一部分用于初始化网络B。
3.使用来自目标域的少量数据微调新网络B。

在大多数情况下,新构造的网络B具有与网络A相同的特征抽取器结构,并且特征抽取器的参数是使用网络A在相应层中的参数初始化的。但是网络B的分类器层通常是以一种新的结构来构造的,其参数是随机初始化的
这些用于跨域故障诊断的参数传递方法的微调策略可以归纳为四类,如图所示:
1.使用目标域[69],[70],[87],[90],[93],[103],[106]和[109]的数据微调所有层(包括特征提取器和分类器);
2.微调特征提取器和分类器层的一部分[104],[109];
3.只需微调分类器层[105],[108],[109];
4.选择性参数微调[92]。

在[109]中,Han等人。提出了一种基于预训练CNN的参数传递框架。在他们的研究工作中,讨论并比较了三种不同的参数传递策略,从深层结构的不同层次探讨了特征传递的适用性和意义。他们认为数据集大小和相似性这两个因素将指导参数转移策略的选择。当目标域的数据集较大时,对整个网络进行微调是一个不错的选择。当目标数据集较小且与源数据集相似时,最好确定特征抽取器的参数并对分类层进行微调。在最后一种情况下,目标数据集既小又不同于源数据集,重新训练前卷积块和分类层可能是有效的
Kim and Youn [92]提出了一种选择性参数冻结方法,该方法可以将仅不必要的参数重新训练到目标数据,同时保留源网络中的重要参数。所提出的方法为调整层内的冻结和微调提供了一种选择

c:其他深层转移策略
除了以上两种策略外,还提出了其他几种基于深度神经网络的传输策略来解决跨域故障诊断任务。
在[73]和[124]中,使用了一种**简单的域自适应方法,称为自适应批处理规范化(AdaBN)[125],它在网络上的所有批处理规范化层中将统计信息从源域调制到目标域,用于处理跨域故障诊断。**在AdaBN中,每一层按域的标准化保证了每一层接收的数据符合相似的分布,而不管源域或目标域是什么。给定一个使用源域数据预先训练的深度神经网络模型,AdaBN算法如下25],


在[82]中,Li等人。提出了一种基于深生成神经网络的跨域故障诊断方法。首先,通过训练Cs-1生成器生成目标域不同类别的伪故障样本,记录每一类别的正常样本和故障样本之间的关系。其次,训练了一个用于跨域分类的顶层深度自适应神经网络。在[126]中,CNN与边缘化的叠加去噪自动编码器结合,学习故障敏感特征,消除不同条件下的数据分布差异。在[68]中,肖等人。结合TrAdaBoost和CNN提出了一种故障诊断框架。

3)基于对抗的方法
最终,深度域适应的目标是学习源域和目标域之间的域不变表示。为了实现此目的,通常采用一种统计量来度量源域和目标域的表示形式之间的分布差异。然后,在表示学习过程中,通过将其权衡项添加到深度神经网络的原始目标函数中,可以惩罚域之间的分布距离。也就是说,源域和目标域的相似性由特定的距离测量统计量确定,并且具有低距离统计量值的表示被认为是域不变的。受到GAN的启发[54],基于对抗的领域适配通过相对于领域鉴别器的对抗目标来确定领域之间的相似性。
领域对抗性神经网络(DANN)是一种具有代表性的基于对抗性的领域自适应方法(其结构如图12所示),已经在计算机视觉应用中成功实现[58]。Wang等人。在[86]中将DANN引入跨域故障诊断。为了使用深度神经网络学习区分和域不变表示,DANN使用了一种完全不同的方法,通过一个经过区别训练的分类器,基于分布的可分性来测量分布之间的差异。**DANN包括三个部分:带参数θf的特征提取器Gf、带参数θc的标签预测器Gc和带参数θd的区域鉴别器Gd。**在学习过程中,为了保证表示的区分性,DANN首先通过优化特征抽取器和标签预测器的参数来最小化标签预测损失Lc(θf,θc)。同时,为了获得域不变特征,DANN优化了特征提取器的参数,使域预测损失Ld(θf,θd)达到最大,这意味着源域和目标域的特征分布是相似的。同时,对区域鉴别器的参数θd进行优化,以减小区域预测的损失。从形式上讲,DANN可以被认为是下面的min max问题


在[120]中,同样的策略也被用来解决风力发电机和齿轮箱的诊断问题。但是,在训练阶段,没有使用目标域数据,而是将训练数据集随机分为两部分,以进行对抗训练。由于训练数据集包含来自多个来源的数据,因此在对抗过程中可以学习这些领域的领域不变特征或通用诊断知识。

在上述[86],[120]的研究工作中,源域和目标域在对抗学习过程中使用了共享特征提取器,如图12所示。基于两种不同的特征提取器,Zhang 等人。 [76]提出了一种对抗性自适应一维CNN(A2CNN)方法,该方法与[59]中提出的对抗性区分域自适应(ADDA)非常相似。在A2CNN中,分别针对源域和目标域学习了两个CNN,称为源特征提取器GsF 和目标特征提取器 GŤF 如图13所示。目标特征提取器GŤF 具有相同的结构 GsF ,以及目标特征提取器的部分图层在域对抗训练之前由经过预训练的源初始化。由于允许学习更多特定于域的功能,这种方式可能更灵活。A2CNN已成功应用于在工况变化下轴承的跨域故障诊断。

为了减轻DANN损失的梯度消失,从而使源域和目标域的分布之间的Jensen-Shannon差异最小化,在[66]和[127]中提出了基于Wasseratein距离的对抗网络,用于受故障启发的故障诊断问题Wasserstein生成对抗网络(WGAN)[128]。
在[66]中,Cheng等人。提出了一种基于Wasserstein距离的深度转移学习方法。在他们的方法中,Wasserstein-1距离,被用来测量域鉴别器的丢失。
在[127]中,Zhang 等人还提出了一个名为Wasserstein距离引导多专业网络(WDMAN)的深层模型,该模型也使用Wasserstein距离来测量域歧视期间域之间的分布差异。在对抗训练过程中,WDMAN基于多个域批判者网络调整了多层域之间的分布,以提高先前的单层适应策略的传输能力。

实际上,缺乏目标域的故障数据是影响故障诊断模型泛化性能的主要原因。使用GAN生成无限量的合成目标数据是解决这个问题的一个很有吸引力的替代方案。在[115]中,Lu等人。提出了一种结合深卷积生成对抗网络(DA-DCGAN)的直流串联电弧故障诊断方法,其结构如图14所示。DA-DCGAN首先从源域数据中学习到一种从正常到电弧的智能转换。然后利用目标域的正常数据,通过学习变换生成虚拟电弧数据,并采用域自适应方法,实现了目标域鲁棒可靠的故障诊断方案。

4)其他跨域故障诊断策略
除了使用知识转移策略解决跨域故障诊断问题的方法外,还有一些研究工作没有采用转移学习算法,而是考虑了跨域诊断任务。这些方法也是减轻传统数据驱动诊断方法的数据难题的可行方式。它们大多数是基于深度学习的诊断方法,它们从原始的监视信号(例如,振动信号[74],[99]或振动图像[116] – [117] [118],[121 ])中学习用于故障识别的抽象表示。]。基于缩小域之间差距的策略,我们将这些方法分为两个子类别:(1)基于特定的深层网络结构或训练策略;(2)基于预处理。这些方法的摘要可以在表4中找到。

第一类是通过设计适当的网络结构或诊断模型的训练策略来减轻域差异[74],[99],[116] – [117] [118],[121]。 例如,张等人。 [74]提出了一种带训练干扰的卷积神经网络(TICNN)方法,该方法可以在嘈杂的环境和工作负载变化的情况下实现卓越的准确性,而无需任何域自适应算法。TICNN基于以下三个技巧增强了抗噪和域自适应能力:(1)在第一层使用了dropout来增加原始输入的噪声;(2)使用非常小的批处理训练来提高模型的泛化能力; (3)通过集成学习来提高算法的稳定性。其他方法,例如具有Atrous卷积的Deep Inception Net [99],基于胶囊网络的卷积神经网络[116],Snapshot Ensemble卷积神经网络[118]和噪声Deep Convolution神经模型[121]等也被采用或提出来促进模型在跨域诊断情况下的泛化能力。

第二类是通过一些预处理方法来缓解域之间的差异,然后将传统的深度学习算法应用于构建诊断模型[100],[102],[119],[122]。

在[100]中,Hyunseok 等人。提出了一种基于叠加全向再生信号的振动图像生成方法,然后在将其输入到DBN中进行故障识别之前,先对图像进行定向梯度直方图处理。在预处理步骤的基础上,通过使用来自小型试验台的数据训练诊断模型,所提出的方法实现了对实际500 MW汽轮机转子系统的准确诊断。值得注意的是,这种方法需要一对接近传感器。

在[102]中,Cameron 等人。建议使用高分辨率轴承动力学仿真生成的数据来训练CNN网络,并诊断实际轴承。在他们的方法中,使用以下三个步骤对振动信号进行预处理:(1)计算加速度计信号包络;(2)在每个特征缺陷信号周期内进行角度同步平均;(3)信号归一化。包络信号包含有关轴承故障的诊断信息,角度同步平均是为了消除训练和测试数据集之间的转速和轴承模型的差异,信号归一化是为了消除振动幅度的可能影响。

Wei 等。 [122]也提出了一种转速归一化方法来解决由转速波动引起的跨域学习问题。Han 等。 [119]提出了一种诊断框架,该框架将时空模式网络(STPN)方法与CNN相结合,可以诊断看不见的工作状态和故障严重程度。STPN建立在通过符号动态滤波生成的状态之间的跃迁概率公式的基础上,可以提取对操作条件和故障严重性具有鲁棒性的空间(测量之间)和时间特征(对于每个测量)。

5)跨域诊断方法的输入

实际上,不同的输入意味着不同方法可接受的不同数据类型,也意味着这些方法所需的特征抽象级别。


通常,基于传统转移学习的跨域诊断方法的输入是手工制作的功能,例如振动信号的统计参数[60],[61],[67],[71],[80],[ 96],[123],SVD特征值[81],[83]等。

相反,基于深度转移学习,对抗策略和其他深度神经网络的跨域诊断方法的输入是原始监控信号或抽象水平较低的功能。根据不同的数据类型,我们将这些方法的输入分为两类:时间序列数据和图像数据。其中,一维时间序列是最常见的输入类型,例如原始或预处理的振动信号[68],[73],[74],[84],[90],[92],[94],[97 ] ] – [98] [99],[102],[109],[110],[120],[122],[127],[129]和频谱[63] – [64] [65] [66],[76],[78],[82],[86 ] ],[88],[89],[93],[112],[114],[124],[126]。其他方法使用2D图像作为输入,并且图像主要由信号段堆栈[70],[87],[100]和[105]生成,[115],[121]和时频表示(包括短时傅立叶变换[116],小波变换[104],[106],S变换[69],[117]和[118])。这些方法大多数基于深度神经网络,将故障特征学习,模式识别和知识传递的过程混合在一起。这是实现更高水平的智能故障诊断的新探索。

应用

本节总结了跨域故障诊断方法的应用。表6中提供了有关跨域故障诊断的应用对象的摘要。这些研究工作的相应统计数据如图15所示。轴承和变速箱是当前跨域诊断文献中两个最广泛的研究和验证对象。原因可能是来自不同机器和不同操作条件的一些开源故障数据可用,并且它们的跨域实验的实现相对容易

开源故障数据集

CWRU [131],MFPT [132],帕德博恩大学数据集[133],DIRG数据集[134],IMS数据集[135],PHM12数据挑战数据集[136]和1个变速箱数据集,PHM09数据挑战数据集[137]进行了总结。

讨论和未来方向

在第三节中,对跨域故障诊断的研究工作进行了介绍和总结。这些研究工作大多数采用转移学习方法来解决跨域学习问题。最终,对于工业应用,数据驱动的故障诊断方法应在跨域方案下获得可比的泛化性能,在这种情况下,训练数据和测试数据来自不同的操作条件甚至不同的同类型机器。因此,开发准确的跨域故障诊断方法对于实现数据驱动型故障诊断的工业应用非常重要。将来,可以考虑并进一步研究以下潜在的研究方向:

A.使用转移学习方法解决故障检测和RUL预后任务
故障检测,诊断和剩余使用寿命(RUL)预后是支持基于状态的监视(CBM)系统的三个主要模块。域偏移,即训练数据和测试数据遵循不同的分布,是故障检测,诊断和RUL预后任务中的常见问题。对于故障检测,使用来自其他运行条件或其他相同类型机器的历史数据估算的检测阈值无法很好地适应当前的运行条件或要检测的机器,结果发生了错误警报。对于RUL的预后,一般来说,机器的退化过程与工作条件和工作环境密切相关,例如滚动轴承的寿命与其旋转速度,径向载荷和润滑质量有关。然而,在相同的工作条件下获取特定机器的大量生命周期数据非常困难,通常可以从其他相同类型的机器或不同的工作条件下获取生命周期数据来构建RUL预后模型。但是,使用这些生命周期数据训练的模型在直接应用于当前机器进行RUL预后时,可能会表现不佳,因为可能存在数据差异。转移学习可能是处理跨数据集检测和预后任务的可行方法,这些任务本质上也是域转移问题。通常,其他同类型机器或不同运行条件下的生命周期数据可用于构建RUL预后模型。但是,使用这些生命周期数据训练的模型在直接应用于当前机器进行RUL预后时,可能会表现不佳,因为可能存在数据差异。转移学习可能是处理跨数据集检测和预后任务的可行方法,这些任务本质上也是域转移问题。通常,其他同类型机器或不同运行条件下的生命周期数据可用于构建RUL预后模型。但是,使用这些生命周期数据训练的模型在直接应用于当前机器进行RUL预后时,可能会表现不佳,因为可能存在数据差异。转移学习可能是处理跨数据集检测和预后任务的可行方法,这些任务本质上也是域转移问题。

但是,从有关机械健康监控的研究工作的概述来看,它们中的大多数只是着重于使用提议的转移学习或领域自适应方法解决故障识别问题。尽管在[111]中已经对转移学习的有效性进行了异常检测和[138]中进行了RUL预后的讨论,但是,更多地关注更多机器的故障检测和RUL预后任务仍然有意义。

B.专注于不同但相同类型的机器之间的跨域诊断
从数据获取的角度来看,转移学习减轻了基于传统机器学习算法的数据驱动型故障诊断方法的数据困境。使用转移学习,可以从不同于测试数据的分布中收集用于训练的数据,这使得有可能在实际诊断情况下构建数据驱动的诊断模型。

当前,有关跨域故障诊断的大部分研究工作都讨论并验证了它们的传输方法在源域和目标域来自不同操作条件的跨域任务上的性能。然而,通过故障模拟从其他相同类型的机器的工作过程中或从实验室中获取各种故障的数据比从不同的工作条件中获得更可行的方式。因此,将所提出的转移学习方法应用于相同类型但不同机器之间的故障诊断任务具有更大的意义。在这种情况下,除了操作条件外,还有更多因素可能影响域之间的分布差异,并且使用迁移学习方法消除域差异更加困难。

C.将转移学习方法与先验诊断知识相结合
迁移学习的本质是减轻由于故障诊断问题中机器型号,运行条件​​或其他因素的差异而导致的训练数据与测试数据之间的差异。转移学习是一种可行的方式,但并非唯一。在[100],[102],[119]和[122]中,一些诊断方案通过信号预处理[100],[102],[122]或提取与领域无关的方法验证了解决跨域诊断问题的可能性手动功能[119]。例如,在[102]中将振动信号通过包络,角度同步平均和归一化先后进行处理,然后再输入到[102]中的CNN中,并且先验了有关轴承故障特征(包络)的知识,并消除了训练信号和测试信号之间的差异在这些步骤中考虑了角度同步平均和归一化。

因此,将转移学习方法与先验诊断知识相结合可以在跨域诊断任务上实现出色的泛化性能。另外,当源域和目标域之间的差异很大时,这可能是解决跨域诊断任务的有效方法。同时,我们认为,考虑到先验诊断知识的信号预处理对于基于深度学习的诊断方法是非常必要的,因为通过深度神经网络学习一致的抽象概念(例如滚动轴承的故障特征频率)非常困难。原始监视信号(例如具有不同的转速,负载和采样频率)的网络。

D.在多源场景下实施跨域故障诊断
当前,上述基于迁移学习的大多数诊断方法在学习过程中仅考虑一个单一来源。但是,工程中可能有来自多个不同操作条件或其他相同类型机器的更多可用数据。来自多个来源的数据融合具有两个优点,其一是对故障特征的描述将更加全面,其二是通过增加训练数据可以减少模型训练期间过度拟合的风险。因此,从多个相关的源域中学习一般诊断知识并转移知识以促进目标任务也是一个关键问题。

知识转移策略的跨域故障诊断相关推荐

  1. Django - - 进阶 - - 同源策略和跨域解决方案

    目录 同源策略 一个源的定义 同源策略是什么 举个例子 jQuery中getJSON方法 JSONP应用 1, 同源策略 1.1 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两 ...

  2. websocket中发生数据丢失_tcp协议;websocket协议;同源策略和跨域

    tcp协议 为什么连接的时候是三次握手,关闭的时候却是四次握手? 答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文.其中ACK报文是用来应答的,SYN报 ...

  3. 服务器安全:浏览器同源策略与跨域请求、XSS攻击原理及防御策略、如何防御CSRF攻击

    主要包括 浏览器同源策略与跨域请求 XSS攻击原理及防御策略 如何使用SpringSecurity防御CSRF攻击 CC/DDOS攻击与流量攻击 什么是SSL TLS HTTPS? 一.浏览器的同源策 ...

  4. ajax背景、ajax对象、ajax状态、ajax与http、ajax请求数据接口、同步与异步、ajax请求XML数据、封装ajax函数、artTemplate简介、同源策略和跨域请求、JSONP

    AJAX简介: ajax背景: 1.AJAX(Asynchronous JavaScript And Xml)异步的 JavaScript 和 XML:ajax是浏览器提供的一套API,最早出现在谷歌 ...

  5. 浏览器的同源策略与跨域问题的解决方案

    浏览器的同源策略与跨域问题的解决方案 参考文章: (1)浏览器的同源策略与跨域问题的解决方案 (2)https://www.cnblogs.com/yanggb/p/10735763.html 备忘一 ...

  6. 浏览器同源策略及跨域的解决方法

    浏览器同源策略及跨域的解决方法 参考文章: (1)浏览器同源策略及跨域的解决方法 (2)https://www.cnblogs.com/laixiangran/p/9064769.html 备忘一下.

  7. 同源策略和跨域解决方案

    同源策略 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示 ...

  8. [ecshop 经验 ]transport.js run error 68ecshop 小京东 火狐提示 同源策略和跨域访问 68ecshop

    transport.js run error 68ecshop 小京东 transport.js run error 68ecshop 小京东 火狐提示 同源策略和跨域访问  cros access ...

  9. 同源策略和跨域请求解决方案

    一.一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: ...

最新文章

  1. 中国肠道大会 | 3天日程,220+报告,肠道新知一次听够!
  2. vc socket api建立TCP连接(包括域名解析)并收发数据的代码模板
  3. linux怎么取消raid磁盘阵列,Linux下彻底关闭某个RAID磁盘阵列
  4. 微内核操作系统能做服务器系统吗,科普:微内核操作系统现状
  5. 使用gulp构建前端(三)
  6. python编程入门教程下载-Python编程从入门到实践的PDF教程免费下载
  7. 【java笔记】StringBuilder类
  8. TCPDF微软雅黑字体
  9. 二极管整流和同步整流区别
  10. 安装SQL2000,出现以前的某个程序安装已在安装计算机上创建挂起的文件操作(完美解决)
  11. Settings sync 配置与使用
  12. sigmoid代码实现
  13. android studio + ndk + cmake + jna +sqlite c层报错SQLITE_CANTOPEN(14),SQLITE_MISUSE(21)问题
  14. Adobe XD 下载和安装教程
  15. Python宣传自己很快的orjson真的比ujson快吗(orjson与ujson速度比较)
  16. java操作hfds----刘雯丽
  17. 阿里云编码规范答案_令人沮丧的答案是“我如何开始学习编码?”
  18. 职业生涯规划(计算机网络),职业生涯规划(计算机网络)
  19. 网页设计经典案例(Web)
  20. 扩充计算机内存是扩充什么,怎么增加电脑内存 三种方法让你电脑内存扩大

热门文章

  1. STM32 cube vcp虚拟USB
  2. 网页设计经典案例(Web)
  3. 如何查看java对象所占内存大小
  4. vue3相比vue2效率提升在哪些方面?
  5. Mysql之子查询20221016
  6. 0xC0000005: 写入位置 0x00000000 时发生访问冲突的解决办法
  7. ffmpeg截取一段视频中一段视频
  8. GIS三维渲染引擎 到底有什么区别
  9. java 服务器文件下载
  10. @value读取不到数据库配置文件里的值的解决办法