system: [SYSTEM]

user: 3. 项目方法 图2是本文提出的方法概述。图中可以看出在训练阶段，这个系统模型只考虑正常样本。本文使用数据转换器来对样本进行处理并提取有用的特征，这些特征经过转换可以更好的被模型学习。系统中生成器采用编码器–解码器–编码器三子网，判别器则是基于DCGAN网络结构。在检测阶段，异常样本可以通过比正常样本更高的异常分数来识别。 3.1. 方法介绍 给定一个时间序列数据集 D = [ X 1 ， X 2 ， X 3 ， ⋯ ， X n ] ∈ R t × n ， X i = [ x 1 i ， x 2 i ， x 3 i ， ⋯ ， x t i ] T ∈ R t ( for   i = 1 ， ⋯ ， n ) 表示传感器在一段时间t内记录的样本。在数据集中划分出训练集和测试集，其中训练集用矩阵的形式可表示为： D t r a i n = [ X 1 ， X 2 ， X 3 ， ⋯ ， X b ] = [ x 11 x 12 ⋯ x 1 b ⋮ ⋮ ⋱ ⋮ x t 1 x t 2 ⋯ x t b ] 。用训练集 D t r a i n ∈ R t × b (b是训练样本的数量)的一个子集训练本文所提出的模型。对应的测试样本是 D t e s t = [ D t e s t v ， D t e s t u ] ∈ R t × ( v + u ) ，v和u分别是正常样本和异常样本的数量。 图2. 本文方法框架 在训练的步骤中，用 D t r a i n 训练一个GAN-Based模型M。训练过程的目标是最小化 D t r a i n 中每个子数据集的输出。在训练过后，用于测试的数据集 D t e s t 将会放入模型M。训练后的生成器将对故障样本和正常样本进行相应的编码和解码。由于训练后的网络只学习了正常数据的可能表示模式，如果用异常数据样本 D t e s t u 作为输入，那么模型M的输出与正常输入 D t e s t v 的输出相比，会有很大的偏差。这个偏差值最终帮助确定异常样本的存在。 3.2. 训练的过程 本文提出的方法中其训练阶段的主要目的是正常条件下生成尽可能小的样本分数的模型。本文方法的网络结构由数据转换器、生成器和判别器三部分组成。基本网络架构用DCGAN表示。在生成器的设计中，开发了一种由“Encoder-Decoder-Encoder”组成的三子网。在将数据输入生成器之前，需要设计一个数据转换器将一维的时间序列数据转为二维的图像数据，可以帮助DCGAN更好的提取和学习样本特征。基于普适性原则，不对原始数据进行其他处理，因此任何时间序列都可以封装到这些特征中。在训练过程中，首先在正常条件下提取时间序列的特征，然后利用本文设计的异常检测器获得这些特征的数据分布和可能的代表模式。在测试阶段，将异常样本输入训练好的异常检测器，异常数据的特征分布会得到比正常样本更高的分数，以此为差异来识别和诊断。 3.2.1. 生成器和判别器 在生成器中，第一个编码器用于学习样本原始特征F的表征，第二个编码器用于生成再生特征F ^ 。同时，解码器 G d 用于试图重建F ^ 。整个过程如下： a) G e 由卷积层，Batch-Norm层和Leaky ReLU激活层组成。 G e 将特征F降维到潜在表示Z (通常h < q)，其中h是潜在向量Z的维数，q是训练集中每个子集的特征数量。 Z = G e ( F ) ， Z ∈ R h × b ， (1) b) G d 采用卷积转置层(反卷积)、ReLU激活层和Batch-Norm层构建。 G d 用Z来重新创建F ^ ，F ^ 的维度和F是一样的。 F ^ = G d ( Z ) ， (2) c) 编码器 G e ^ 的结构和 G e 是一样的但是参数不同，输出 Z ^ 的维度和Z是相同的。 Z ^ = G e ^ ( F ^ ) ， (3) 该生成器保证了原始特征集F的特征不变的同时可以得到潜在向量Z的模式。判别器(Discriminator)采用DCGAN中引入的标准判别器网络，用于判断输入数据是真实的还是生成的。根据判别器的反馈再对生成器进行调整和训练。在定义了整个网络架构之后，本文将称述如何定义训练的损失函数。 3.2.2. 目标函数 在训练阶段，因为只训练正常数据集 D t r a i n ，所以模型M只会获得正常数据集下的模式。但是在测试阶段，M需要通过输出更高的异常分数来确定异常样本。那就意味着 G d 和 G e 将会解码潜在表示Z和重新编码F ^ ，这与在训练阶段获得的模式类似。之后F ^ 和Z ^ 将不可避免地与原来的F和Z产生差异，这样有助于我们识别异常故障。 由于生成器的结构是采用“Encoder-Decoder-Encoder”组成的三个子网络，因此生成器的最终损失函数将由欺骗损失(Fraud Loss)、表面损失(Apparent Loss)和潜在损失(Latent Loss)三部分组成，接下来将会分别对三个损失函数进行说明。 欺骗损失：在这里引入fraud loss的目的是为了诱导判别器将生成器生成的样本误判为真实的工业样本。将生成的样本输入判别器，通过判别器输出计算的fraud loss，公式如下： L f ( F ) = ∑ i = 1 N σ ( C ( F ^ ) ， α ) (4) 公式中 σ 是二进制交叉熵损失函数， C ( F ^ ) 是样本i被预测为实数的概率。为了骗过判别器和促进生成器来生成尽可能真实的假样本，我们定义 α = 1 。 表面损失：生成器仅学习正常条件下的电位模式并尽可能真实地重构生成的样本是不够的，因此我们通过测量真实样本与生成样本之间的L 1 差异来定义表观损失L a ，公式如下： L a ( F ) = ∑ i = 1 N ‖ F − F ^ ‖ ， (5) 潜在损失：除了欺骗损失和表面损失外，我们还定义了潜在损失，以最小化真实样本的潜在表示与生成样本的编码瓶颈特征之间的距离。这种损失可以帮助学习真实样本和生成样本中的潜在表征。另外，隐性损失与表观损失在测试阶段产生最终的异常分数。 L l ( F ) = ∑ i = 1 N ‖ G e ( F ) − G ( F ) ‖ 2 。 (6) 上述三个子损失函数构成了生成器的主体损失函数，公式可以表示为： L g ( F ) = ω f ∗ L f ( F ) + ω a ∗ L a ( F ) + ω l ∗ L l ( F ) ， (7) 在公式中 ω f ， ω a ， ω l 被用来调整 L f ， L a 和 L l 在生成器损失函数中的权重。 在判别器中，Salimans等人 [ 19 ] 提出采用特征匹配损失 L 进行对抗学习来减少GAN训练的不稳定性。用公式可以表示为： L d ( F ) = ∑ i = 1 N ‖ L ( F ) − L ( G d ( G e ( F ) ) ) ‖ 。 (8) 我们使用Adam优化器 [ 20 ] 来反向传播并更新方程(8)和(9)。 3.3. 测试步骤 在测试阶段，我们的模型使用潜在损失和表面损失对检测到的测试数据样本进行评分。判定样本分数的公式可以定义为： T ( F ) = λ ∗ L a ( F ) + ( 1 − λ ) ∗ L l ( F ) 。 (9) 在这一部分中，我们使用 ω a ， ω l 的比率作为合适的加权值超参数 λ ，意思是此处使用最好的训练结果，即最小的生成器损失和判别器损失。因为本文提出的方法只在正常数据样本上训练异常检测器，所以实验中的异常检测器将只学习和识别正常样本的潜在模式和数据分布。在这个判定公式中，正常样本得到的T(F)将接近于0，而对于异常样本，公式得到的值将相对大很多。在测试中，通过公式T(F)的值的波动可以很容易地找到异常。