付建平,赵海燕,曹 健,陈庆奎
1(上海市现代光学系统重点实验室,光学仪器与系统教育部工程研究中心,上海理工大学光电信息与计算机工程学院,上海 200093)
2(上海交通大学 计算机科学与技术系,上海 200030)
近年来,越来越多的企业组织使用业务过程管理系统BPMS(Business Process Management System,BPMS)管理和控制他们的业务过程.然而,由于业务需求的变动、市场的波动、资源的调度和系统的升级等各种内外因素的变化,业务过程在执行过程中容易出现各种各样的异常,这些异常会给企业组织造成巨大的损失.
常见的异常有控制流异常、数据异常、时间异常和资源异常等,业务过程中的控制流视角描述了活动的执行顺序,包括顺序、选择和并行等,控制流异常是指活动的执行顺序发生异常,如活动的替换、插入、跳过、重做、提前、延迟执行等[1];数据流异常是指由事件的属性引起的异常,如未授权的用户非法执行了活动;时间异常是指单个活动的持续时间或整个活动序列的时间发生了异常,如活动的持续时间超过了截止时间;资源异常是指执行活动的资源发生了异常,如活动被分配了错误的资源等.业务过程中出现的异常不仅类型多样,各个视角之间也存在复杂的依赖关系,如控制流异常可能是由于某个活动的持续时间超过了截止时间,导致该活动的后继活动发生了延迟执行,此外,活动所依赖的属性也决定了活动的路由选择.业务过程中各个视角之间存在复杂的依赖关系导致业务过程中出现的异常可能非常复杂,因此处理业务过程中的异常对企业组织而言是一个巨大的挑战.自动检测和处理业务过程中的异常,不仅可以为企业降低甚至避免重大损失,还可以使业务过程安全稳定高效的运行、优化资源的调度方式、提高资源的利用率等.
由于控制流是业务过程的主干,检测控制流异常对保障业务过程的正确执行起着关键作用,本文重点关注业务过程中的控制流异常.对于业务过程中的控制流异常的检测,目前已有很多相关的检测方法,这些方法主要存在以下局限性:第1个局限是大部分方法都只适用于离线场景中,即只能在业务过程执行完后再根据历史事件日志检测异常,有可能异常已经发生并已造成损失,离线场景只能事后分析,而无法避免或减少损失;第2个局限是大部分方法只适用于轨迹较短的业务过程的场景中,对于很长的轨迹,无法捕捉到具有长期依赖的事件之间的关系,从而无法检测到具有长期依赖关系的异常事件;第3个局限是大部分方法都只侧重于对异常的识别,而忽略了对假阳性的识别,因而无法适用于处理假阳性代价较大的场景中.
本文受目前广泛应用于机器翻译中的自注意力机制的启发,提出了一种基于自注意力机制(Self-attention)与长短期记忆网络(Long Short TermMemory network,LSTM)相结合的神经网络模型预测业务过程中活动序列的下一个活动,其中自注意力用于建模活动序列中活动之间的依赖关系,而LSTM用于编码活动的位置信息,此外还提出一种计算预测的活动的异常分数的方法,通过将活动的异常分数和阈值比较以确定预测的活动中哪些活动可能是正确的活动,再将可能正确的活动与实际发生的活动进行比较以检测业务过程是否发生控制流异常.本文的预测模型能对轨迹(在本文中亦称活动序列)很长的过程的活动之间的依赖关系进行建模,在预测模型根据历史事件日志训练好后,本文方法既可用于在线场景中实时检测异常,也可在离线场景中对历史事件日志进行事后分析.为了验证方法检测异常的性能,实验中选用了5种典型的baseline算法进行比较.实验结果表明,所提出的基于LSTM与自注意力机制的业务过程异常检测(Business process anomaly detection method based on LSTM and self-attention mechanism,简称BPAD-LS)方法能显著减少假阳性,且有效检测控制流异常.
本文主要有以下几个创新点:
1)本文使用LSTM对轨迹中活动的位置进行编码,该位置编码方式既适用于轨迹较短的业务过程,也适用于轨迹较长的业务过程,并使用自注意力机制建模业务过程的轨迹中活动之间的依赖关系,相比于使用循环神经网络等序列建模方法,自注意力机制的序列建模能力更强,有利于提高活动的预测准确率,从而能有效提高异常活动的检测性能.
2)本文提出一种计算异常分数的方法,该方法能有效解决异常检测时的假阳性问题.实验表明,相比于实验中的baseline方法,本文提出的方法能显著降低异常检测的假阳性.
3)本文选择业务过程异常检测领域中典型的baseline方法进行实验对比,并使用真实的事件日志作为实验数据,以充分体现本文方法的异常检测性能.
本节将介绍目前关于检测业务过程中控制流异常的相关研究工作.
根据检测业务过程中的控制流异常时是否需要过程模型,可将检测方法分为模型感知的方法和模型无关的方法.在过程挖掘[2]领域中,模型感知的方法是指通过过程发现算法(如Alpha算法[3])从事件日志中挖掘过程模型,然后使用合规性检查[2]检测异常行为.模型无关的方法则是指检测异常时无需过程模型.
在早期,检测业务过程中的控制流异常大多使用模型感知的方法.van der Aalst等人[4]介绍了利用过程挖掘检测异常的概念,并使用Alpha[3]过程发现算法从正确的事件日志中挖掘过程模型,以检测过程实例中的控制流异常.Bezerra 等人[5]使用ProM工具[6]检测过程感知信息系统PAIS(Process-Aware Information Systems,PAIS)日志中的异常,其主要通过过程模型来检测异常的轨迹.Rieke 等人[7]通过分析移动支付领域中的业务过程来检测异常行为.Rahmawati 等人[8]使用启发式挖掘算法分析事件日志并计算活动之间的频率关系以确定主要的行为及低频行为,低频行为被视为异常.模型感知的方法的检测性能依赖于过程模型的质量,且无法准确地处理假阳性.
模型无关的检测方法可以分为基于概率统计、基于邻近度、基于重建和基于信息论等4种类型:
1)基于概率统计的方法:Bezerra 等人[9]基于异常不频繁出现的假设,提出朴素、阈值、迭代和采样4种检测异常轨迹的算法.在文献[10]中,Bezerra等人[10]再次使用阈值、迭代和采样方法检测异常轨迹,检测的基本原理是若一条轨迹不是过程模型的实例,则需要对适合该轨迹的模型进行结构更改,而异常轨迹对模型需要进行更大的结构修改.Armentano 等人[11]使用变阶马尔可夫模型(Variable Order Markov Models)检测与预期行为不一致的活动序列.该方法实现起来比较简单,只能发现比较明显的异常,同时会导致假阳性.
2)基于邻近度的方法:Sureka 等人[12]使用活动标签将业务过程的轨迹转换为字符串序列,使用归一化的最长公共子序列(Normalized Longest Common Subsequence,NLCS)的相似性度量来计算每对轨迹之间的距离,然后利用K近邻算法的思想,轨迹的异常分数被定义为该轨迹与它的第K个最近的轨迹之间的最长公共子序列度量的倒数.Folino 等人[13]也使用聚类算法检测控制流异常.
3)基于重建的方法:基于重建的方法通过训练一个可以重建正常行为的模型,再根据重建的行为与实际行为的偏差来检测异常行为.自编码器[14]是一种特定的神经网络,异常值是自编码器解码过程中具有较高重建误差的值.Nolle 等人[15,16]、Krajsic 等人[17]使用降噪自编码器[18]DAE(Denoising Autoencoders,DAE)重建轨迹或事件的误差并基于阈值以识别异常行为.Nolle 等人[19,20]提出了基于GRU(Gated Recurrent Unit,GRU)的循环神经网络BINet(Business Intelligence Network,BINet),并从控制流和数据流视角通过预测下一个事件及其属性并基于阈值以检测轨迹、事件和属性中的异常.BINet的检测效果与数据集所包含的属性有较大的关联,即BINet结构只适合特定的应用场景.
4)基于信息论的方法:基于信息论的方法将与大多数其他过程实例差异过大的实例视为异常.Ko 等人[1,21]提出了一种新的基于统计杠杆(statisticalleverage)[22]的方法来检测业务过程中的控制流异常,该方法考虑到了过程实例可能有不同的轨迹长度.相比于基于重建的方法,基于信息论的方法不需要大量数据来训练模型.
近年来,word2vec[23]编码方法在业务过程异常检测中逐渐受到关注.Tavares 等人[24]、Junior 等人[25]将活动和轨迹分别视为单词和句子,使用word2vec将轨迹编码为向量,并结合分类算法将不常见的轨迹编码视为潜在的异常.Tavares 等人[24]使用随机森林算法区分正常和异常轨迹,而Junior 等人[25]则使用单类(One-Class)分类算法OC-SVM[26]和LOF[27].
在上述方法中,文献[9,10,11,28]中对于控制流异常的检测,没有明确区分活动的异常类型,而只是检测活动序列的整体执行顺序是否正常.而在文献[15,20,24,25]中,并不是将整个轨迹作为检测对象外,而是针对具体的控制流异常(如活动序列中活动的跳过、插入、重做、提前和延迟等)进行检测,以促进对异常的分析和理解.本文也将对注入不同类型的异常活动的轨迹作为检测对象.
本节将介绍业务过程事件日志的一些基本概念.
业务过程管理系统在执行时会留下大量的事件日志.这些事件日志记录了业务过程的执行情况,从事件日志中可提取与过程有关的有价值的信息,如两个活动之间的等待时间、事件所依赖的资源等.事件日志由过程实例(Case,也称实例)组成,过程实例由事件(Event)组成,且每个事件仅属于一个过程实例,过程实例中的事件是有序的,一个过程实例中由事件根据时间顺序组成的有序序列称为轨迹(Trace),事件则通常由活动及其相关的属性构成.过程实例和事件通常都有自己的属性,过程实例中典型的属性有过程实例编号、过程实例的创建者等,事件中典型的属性包括活动执行的时间、活动所依赖的资源、执行活动的成本等.并非所有的事件都具有相同的属性集,但通常涉及到同一活动的事件都具有相同的属性集.
为了清晰描述事件日志的相关概念,接下来将使用形式化的符号描述相关重要概念,并使用文献[29]中的符号.
定义1.事件(Event):设A是活动(Activity)的集合,C是过程实例的集合,T是时间域,D1,…,Dn是与活动相关的属性,则一个事件e可由一个元组e=(a,c,t,d1,…,dn)表示,其中a∈A,c∈C,t∈T,di∈{Di}且i∈[1,n].
定义2.轨迹(Trace):设πA,πC,πT,πDi分别是将事件e映射为一个活动、过程实例标识符、时间戳和属性的函数,即πA(e)=a,πC(e)=c,πT(e)=t和πDi(e)=Di.一条轨迹σ即被定义为一个有限的非空的事件序列σ=〈e1,…,en〉,其中|σ|=n(n>0)表示轨迹中事件的数量.必须注意的是对于轨迹σ中任意的事件ei和事件ej,都必须有πC(eI)=πc(ej),即轨迹中任意两个事件的过程实例标识符都相同,且对于事件ei和ej事件(其中i 定义3.前缀(Prefix)和后缀(Suffix):设有一条轨迹σ=〈e1,e2,…,en〉,其中|σ|=n表示轨迹σ中的事件数量.整数k∈[1,n]表示事件前缀的长度,hdk表示前缀和tlk表示后缀可定义为:hdk(σ)=〈e1,e2,…,ek〉,tlk(σ)=〈e(k+1),…,en〉.由于本文只考虑预测前缀的下一个活动,因此本文也将后缀称为下一个活动,因此,后缀表示为tlk(σ)=e(k+1). 本节将首先介绍BPAD-LS方法的总体架构,然后再介绍预测轨迹中下一个活动的神经网络模型,以及计算活动的异常分数的方法. BPAD-LS异常检测方法分为3个阶段:数据预处理阶段、模型训练阶段和异常检测阶段.图1是BPAD-LS方法的总体框架示意图. 图1 BPAD-LS方法的总体框架示意图 第1阶段.数据预处理阶段.原始的业务过程事件日志通常是XES(eXtensible Event Stream,可扩展事件流)格式,可以借助pm4py库(http://pm4py.org/)将XES格式解析成csv格式,并使用Pandas库(https://pandas.pydata.org/)处理csv数据,然后将活动序列分割为前缀和后缀,以及编码为向量,并按一定比例将事件日志分为训练集和测试集,其中训练集中只包含正常的轨迹,而测试集中不仅包含正常的轨迹,还包含注入了异常活动的轨迹.在5.2小节中将对数据预处理作详细介绍. 第2阶段.模型训练阶段.将已处理好的训练集输入到预测模型中,其中活动序列的前缀设为X,将后缀设为Y,即ground-truth. 第3阶段.异常检测阶段.异常检测是基于在第2阶段训练好的预测模型.将测试集的活动序列前缀设为X,将后缀设为Y.预测模型将根据前缀X通过Softmax激活函数输出下一个活动的预测概率,假设事件日志中共有n个活动,则每条前缀的预测结果都有n个概率值,且其和为1.然后根据预测概率计算每个活动的异常分数,并基于阈值判定可能正确的下一个活动的集合R.若实际发生的活动Y存在于活动集合R中,则说明活动Y不是异常活动,否则是异常活动,并以此判定该轨迹是否异常. 对于业务过程的预测性监控问题,已有大量研究,如LSTM[30,31]、CNN[32,33]和GAN[34]等.然而,由于现有的业务过程的轨迹可能很长,且轨迹中的活动之间存在复杂的依赖关系,这些现有的业务过程的预测方法难以捕获活动序列中活动之间的长期依赖关系.LSTM虽然相比于GRU更优于序列数据的建模,能有效避免梯度消失问题,但其性能会随着轨迹中活动序列长度的增加而降低.轨迹中可能存在较多的非频繁的活动,而CNN模型并不能较好地处理非频繁的活动.这些方法通常使用One-hot编码方法编码轨迹,这种编码方法会忽略轨迹中事件之间的依赖关系.此外,业务过程中存在着大量的并行结构,这些方法难以对存在复杂依赖关系的序列数据进行建模. 在机器翻译等序列模型领域,相比于使用循环神经网络、循环神经网络与注意力机制相结合等方法,Vaswani 等人[35]则使用完全基于注意力机制的神经网络的方法,即自注意力机制.Vaswani 等人[35]提出的Transformer包含多头自注意力机制、位置前馈网络、层归一化和残差连接等.Vaswani 等人[35]已经证明,自注意力机制能高效地建模自然语言中的语义依赖关系,相比于循环神经网络等序列建模方法,自注意力机制的建模能力更强大.本文受此启发,提出使用自注意力机制和LSTM相结合的预测模型来预测轨迹中的下一个活动名称,其中自注意力机制用于建模轨迹中活动之间的依赖关系,而LSTM仅用于建模轨迹中活动序列的位置关系,预测模型结构如图2所示. 图2 预测模型的结构示意图 原始的Transformer[35]模型为了解决机器翻译中的问题,包含编码器和解码器两个部分.Tay 等人[36]总结了Transformer的3种使用模式:1)仅使用编码器,如用于分类;2)仅使用解码器,如用于语言建模;3)使用编码器-解码器,如机器翻译.而本文的目的是区分正常轨迹和异常轨迹,属于分类问题,因此使用第一种模式,即仅使用编码器.在这种模式下,通过使用编码器建模轨迹中活动之间的依赖关系,即可根据活动序列的前缀预测下一个活动. 在如图2的模型结构中,轨迹数据先经过低维的词向量编码后输入到LSTM中进行位置编码.然后将位置编码后的轨迹向量输入到Transformer中的Encoder块中,原始的Transformer[35]模型堆叠了6个相同的Encoder块,而在本文中则使用一个Encoder块.Encoder块包含多头自注意力层和全连接的前馈层,该两层后面都接着Dropout层以避免过拟合,且都先经过残差连接后再进行层归一化.然后将Encoder块的输出传递到池化操作和全连接层,其中池化操作是使用全局最大池化以聚合特征.最后通过Softmax激活函数输出预测概率.由于本文模型的目的是预测下一个活动名称,模型的输出是多个活动的预测概率,因此损失函数使用分类交叉熵损失函数(categorical cross-entropy loss).接下来将介绍预测模型中重要的模块. 4.2.1 使用LSTM编码轨迹中活动的位置信息 在原始的Transformer[35]中的self-attention层无法获取序列中单词之间的位置信息,因此需要在将序列数据输入self-attention层之前加上位置信息.Vaswani 等人[35]使用绝对位置编码方式编码单词的位置,即在词嵌入层的下一层连接单独的位置编码层,该层使用不同频率的正弦和余弦函数编码每个单词的每个维度的固定位置信息: PE(pos,2i)=sin(pos/100002i/dmodel) (1) PE(pos,2i+1)=cos(pos/100002i/dmodel) (2) 其中PE为二维矩阵,其大小与上一层的词嵌入层的维度相同,因此在后续词嵌入层和位置编码层可以相加.pos表示单词在句子中的实际位置,dmodel表示词向量的维度,i表示词向量的第i个维度.得到了位置信息后,将词向量与位置编码信息相加后再输入到Encoder块中. Neishi 等人[37]已经证明Transformer中的绝对位置编码方式对于翻译较长的句子的性能较低,而使用RNN替换绝对位置编码方式来编码长句子中单词的位置信息(即对经过词嵌入层后的数据再输入到RNN中进行位置编码,经此编码后的数据即可输入到Encoder块中)能有效提高机器翻译的性能.在业务过程中,考虑到轨迹的长度可能很长,如数据集Hospital Billing的最长轨迹达217、数据集BPIC2019的最长轨迹达990等其他可能具有更长轨迹的数据集,为了适应未来可能出现轨迹更长的业务过程,本文模型将充分利用LSTM能够通过相对位置信息处理序列数据的性质,使用LSTM作为位置编码器以编码轨迹中活动的位置关系.如图2所示,LSTM仅作为编码轨迹中活动的位置信息的位置编码器,而不用于建模轨迹中活动之间的依赖关系. (3) hi=LSTM(wvi,hi-1,ci-1) (4) (5) 由于在模型中LSTM仅用于编码轨迹中活动的位置信息,并未用于建模活动之间的依赖关系,因此模型并不会随着轨迹长度的增加而降低性能,反而有利于提高异常检测的性.为了验证使用LSTM作为位置编码器能够提高异常检测的性能,在实验5.6.1小节中分别将绝对位置编码方法(原始Transformer[35]模型中的绝对位置编码)和相对位置编码方法(LSTM)作为模型的位置编码器,对嵌入了这两种位置编码方式的预测模型在异常检测的F1-score检测指标上进行比较. 4.2.2 自注意力(Self-attention)机制 当轨迹数据经过Word Embedding层和LSTM层的编码后,进入self-attention层,然后经过Dropout层、残差连接和归一化层后,进入到前馈层(Feed Forward)中.在Transformer块中,每个位置的活动名称都有自己的路径,self-attention层用于捕获这些不同路径之间的依赖关系,即轨迹中活动之间的依赖关系. 注意力机制(Attention mechanism)已经成为各种序列建模任务的重要组成部分,注意力机制能够在不考虑序列中各数据元素的距离的情况下,对序列中各数据元素之间的依赖关系进行建模[38,39].自注意力(self-attention)是一种通过将一个序列中的不同位置的数据元素关联起来以计算序列的表示(Representation)的注意力机制,它已经成功地应用到机器阅读、情感分析和文本蕴含等各种序列表示的场景中[40-42].在自注意力机制中,输入向量集合表现为使用3种不同的转换方式分别转换为3个元素,即查询(query)、键(key)和值(value),因此,将一条轨迹作为输入,它被处理为这3个元素的集合.结合图2中模型结构,下面将简要介绍使用自注意力机制计算活动的注意力分数的流程. 假设轨迹σ有|σ|=n个活动,活动序列为x=[x1,x2,…,xn],设其下标为i(i=1,2,…,n).下面将通过计算活动序列中第I(2≤I≤N)个位置的活动xI的输出结果来说明自注意力机制的5步计算步骤. 第1步.首先,活动序列x经过嵌入层和位置编码后得到编码向量: ai=Wxi (6) 第2步.利用3个权重矩阵WQ,WK,WV分别与编码向量ai相乘: qi=WQai,ki=WKai,vi=WVai (7) (8) (9) (10) 对于轨迹中的活动序列,Transformer块中的self-attention层完全依赖注意力机制来建模序列之间的全局依赖关系,即模型会选择性地学习轨迹中的重要活动的表示.在计算活动之间的注意力分数时,若活动之间具有较强的依赖关系和相关性,则其注意力分数较高,反之较低.这种自注意力机制使预测模型能够关注轨迹中重要的活动,从而更好地预测前缀的下一个活动. 4.2.3 多头自注意力机制Multi-Head Self Attention 如图2模型中的多头注意力模块中,为了在不同位置引入具有不同表示子空间的模型,查询、键和值被线性投影了h次.对于每一次投影,缩放点积注意力都是并行执行的.相对于自注意力,多头注意力通过使用多组WQ,WK,WV以获得每个输入xi对应的多个输出headi,即多个注意力分数,然后对多个输出进行拼接,再通过线性变换得到最终输出: (11) headi=Attention(qi,ki,vi) (12) MultiHead(Q,K,V)=Concat(headi,…,headh)WO (13) 其中i=[1,2,…,h],WO为神经网络学习的权重矩阵.最终输出结果即为每个头的输出线性拼接并乘以权重矩阵WO. 预测模型只是根据轨迹的前缀活动序列通过Softmax激活函数输出下一个活动的预测概率向量,而无法确定哪些活动可能是下一个正确的活动.为了确定实际执行的活动是否异常,可以通过活动的预测概率向量确定哪些活动可能是下一个正确的活动. 由于业务过程的执行轨迹存在多种情况,例如有3条正确的轨迹σ1=〈a,b,c,d,e,f,g〉、σ2=〈a,b,c,e,f,g〉和σ3=〈a,b,c,f,g〉,从这3条轨迹中可知,前缀活动序列为〈a,b,c〉的下一个正确活动可为d、e或f,若将前缀活动序列〈a,b,c〉输入到预测模型,假设预测的下一个活动根据预测概率从高到低依次为〈d,e,f,g,a,b,c〉.若将预测概率最高的活动d作为前缀活动序列〈a,b,c〉的下一个正确活动,而实际执行的活动为e或f,则此次异常检测将发生假阳性,即未发生异常的轨迹被检测为异常的轨迹. 为了减少假阳性,本文提出一种计算异常分数的方法.假设事件日志L中共有N个活动,则预测模型M根据轨迹σ的前缀活动序列输出预测的下一个活动的预测概率向量为V,向量V共有N个概率值且其和为1.将这N个概率值从大到小排序,设排序后的序列为P,其下标为i(i=1,2,…,N),且设定概率值最高对应的活动的异常分数为0,每个活动的异常分数为: (14) 其中Pi为序列P中第i个概率值. 计算出预测的每个活动的异常分数后,再将异常分数与阈值比较,若此分数大于阈值,则该活动为异常活动,否则为正确活动.下面将通过一个示例说明异常活动的判定. 假设某个事件日志中包含N=10个不同的活动,根据轨迹的前缀,预测的下一个活动的预测概率向量为p= [0.55,0.30,0.07,0.03,0.02,0.01,0.01,0.004,0.003,0.003],对向量p中的10个概率值从大到小排序,并根据4.3小节中的公式(14)计算每个活动的异常分数score: 如图3所示,横轴坐标对应的是每个活动的异常分数score.假设阈值λ=0.5,只有前两个异常分数对应的活动是正常活动,设正常活动的编号为集合R,若实际执行的活动Y存在于集合R中,则表示该轨迹σ是正常(用0表示)的,否则异常(用1表示),设函数表示活动名称a及其异常分数score的映射函数,函数θ表示根据实际执行的活动Y和正常活动的集合R判定该实际执行的活动所属轨迹是否异常: 图3 预测模型通过Softmax输出的下一个活动的预测概率及对应的异常分数 π(a)=score (15) R={a|π(a)≤λ} (16) (17) 本节将介绍实验中使用的数据集,评估指标以及五种对比方法,并分析实验结果. 本文实验数据集分为两部分,如表1所示,前5个数据集是为了比较在模型中使用绝对位置编码和相对位置编码对异常检测的F1-score检测指标的影响,后10个数据集是对本文的BPAD-LS方法与对比方法的异常检测的性能比较(其中Sepsis Cases数据集在两个实验中均使用).为了充分体现BPAD-LS方法在真实的场景中检测控制流异常的性能,本文选用了真实的业务过程的历史事件日志作为实验数据.表1中统计了各个数据集的相关属性,这些数据集来源于4TU.ResearchData(1)https://data.4tu.nl.其中BPIC2012数据集是由3个相互交织的子流程合并而来的,因此本文将该事件日志分为BPIC2012_A、BPIC2012_O和BPIC2012_W 3个独立的事件日志. 表1 实验数据集 这些真实的事件日志可能含有少量的异常,但是这些潜在的异常并没有标记.为了满足实验要求,本文也像其他文献[19,20,44]一样人工注入异常.本文为每个数据集的20%的过程实例注入异常,且每个过程实例只注入一种控制流异常.为了充分体现方法检测控制流异常的性能,本文将注入6种业务过程中更容易发生的控制流异常类型,其定义如下: 1)跳过异常(Skip):轨迹中必要的事件被跳过,导致未被执行. 2)插入异常(Insert):轨迹中插入了不必要的事件并被执行. 3)替换异常(Replace):轨迹中正常的事件被随机替换了而未被执行. 4)重做异常(Rework):轨迹中的事件正常执行完后,再次被不必要地执行. 5)提前异常(Early):轨迹中的活动被提前执行. 6)延迟异常(Late):轨迹中的事件被延迟执行. 为了便于神经网络模型的训练和检测方法的检测,将这些异常注入到每条轨迹,并标记该轨迹为异常,其余未被注入异常的轨迹则标记为正常. 由于活动的执行具有时间序列性,因此在创建前缀活动序列时将不打乱活动的顺序.此外,考虑到有的轨迹可能较短,为了使预测模型在即使输入的前缀活动序列很短(如只有一个活动作为前缀)的情况下也能预测下一个活动,因此在数据预处理时不过滤长度很短的轨迹. 预测模型的作用是预测下一个活动,因此模型的训练集中不包含异常活动.假设轨迹σ包含|σ|=n=7个活动,活动序列为σ=〈e1,e2,…,e7,E〉,其中E表示轨迹的结束标志.该轨迹经过分割后产生n=7组前缀和后缀,第k组前缀和后缀如下: hdk(σ)=〈e1,e2,…,ek〉 (18) tlk(σ)=e(k+1) (19) 其中k∈[1,n],若k=n,则tlk(σ)=E. 对于测试集,需要将5.1小节中提到的6种控制流异常注入到部分测试集中,即测试集中既有正确轨迹,也有异常轨迹.本文将每个数据集的70%作为训练集,并将训练集的10%作为验证集,将每个数据集的30%作为测试集,测试集中异常轨迹占整个数据集的20%.为了模拟实际业务过程中异常发生的随机性,因此,在注入异常时,将在活动序列中注入异常后,再分割前缀和后缀.假设轨迹σ中第k个活动是异常的活动,则该轨迹的前缀和后缀如下: hdk(σ)=〈e1,e2,…,ek-1〉 (20) tlk(σ)=ek (21) 其中k∈[1,n]. 需要说明的是,为了满足实验要求,在向测试集中注入异常时,假设测试集中每条轨迹的第1个活动都是正常的,即从第2个活动开始随机注入异常. 将事件日志数据集分割成前缀和后缀后,再使用整数编码方式对事件日志进行编码. 异常检测问题本质上是一个二分类问题,即将包含异常和正常的数据分为异常和正常.在业务过程的异常检测中,假阳性是指轨迹中不含异常但被检测方法检测为异常,而假阴性是指轨迹中含有异常,却被检测方法检测为正常.对于这两种情况,不同的业务过程处理这两种情况的代价是不一样的,如有的业务过程漏检异常的代价很高,因此需要减少假阴性,提高召回率(Recall);有的业务过程误检异常的代价很高,因此需要减少假阳性,提高准确率(Precision).然而很多时候需要平衡这两种情况,因此可以将召回率和准确率的调和平均值F1-score作为异常检测方法的检测性能.考虑到业务过程异常检测中对于假阳性和假阴性的特殊要求,本文选用F1-score、Precision和Recall这3个指标作为检测方法的评估指标. 由于本文使用准确率(Precision)、召回率(Recall)和两者的调和平均值(F1-score)作为异常检测方法的性能指标,并假定在业务过程的异常检测中对假阳性和假阴性的处理代价相近,因而使用F1-score作为整体比较的检测指标,即阈值的确定是以获取最佳F1-score指标作为目标.根据4.3小节中提出的计算异常分数的方法以及4.4小节中判定异常活动的方法可知活动的异常分数score<=1,因此阈值的范围为[0,1],实验时将在此阈值范围内,设置阈值增量step(本实验将该值设置为step=0.01)并使用穷举法获取最佳阈值. 为了体现本文提出的BPAD-LS方法的检测性能,本文将选用文献中已有的5种baseline模型作为对比方法进行检测性能的比较.对于概率统计的方法,选用文献[9]中的朴素方法Naive和采样方法Sampling,并使用该论文中这两种方法的相同的参数.对于基于距离的方法,选用单类支持向量机(One-Class Support Vector Machine,OC-SVM)方法,该方法也在文献[20]中作为对比方法.对于基于重建的方法,选用文献[45]中的降噪自编码器DAE(Denoising Autoencoders,DAE)模型和文献[20]中的BINetv1模型.文献[20]中的BINetv1模型除了使用了事件的活动名称训练模型外,还使用了事件的属性,而本文提出的BPAD-LS方法仅使用了事件的活动名称,因此为了公平比较,在实验中BINetv1模型也将只使用事件的活动名称进行训练和预测.Nolle 等人[20]提出的业务过程异常检测方法与本文提出的BPAD-LS方法的思路是类似的,都是基于神经网络模型预测轨迹的下一个事件并在此基础上检测异常,因此将Nolle 等人[20]提出的BINetv1模型作为对比方法更具有对比意义. 在4.2小节中说明了相对位置(LSTM)与绝对位置相比,有利于提高异常检测的性能,在此小节中将通过实验验证.在4.3小节中已经说明将实际执行的活动与预测的活动进行直接比较(将该方法称为Direct-Comparison)以判定轨迹是否发生异常会增加假阳性,为了证明本文提出的判定异常活动的方法能有效减少假阳性,将对这两种方法进行评估和比较.此外,实验将重点评估本文提出的BPAD-LS方法与对比算法在各个数据集上的检测异常,并分析实验结果. 5.6.1 轨迹的绝对位置编码和相对位置编码对异常检测性能的影响的比较 在4.2小节中介绍了本文的预测下一个活动的模型,其中包括轨迹中活动的位置编码器.在文献[35]中的Transformer模型中使用绝对位置编码方式编码句子中单词的位置,而在本文的活动预测模型中,为了应对可能出现很长轨迹的业务过程,使用LSTM作为相对位置编码器,以编码轨迹中活动的位置信息.为了验证使用LSTM作为相对位置编码器更利于轨迹中活动的位置编码,在实验中分别将绝对位置编码方法(absolute)和相对位置编码方法(relative)作为模型的位置编码器,这两个模型通过影响下一个活动的预测从而影响异常的检测性能,实验选择了5个轨迹较长的数据集,5个数据集的信息如表1所示.图4是嵌入了这两种位置编码方法的预测模型在检测指标F1-score上的比较,从图4中可知相对位置编码方法在所有数据集上的F1-score检测指标都比绝对位置编码方法的更高,因此,使用相对位置编码方法更有利于轨迹中活动的位置信息的编码,从而提高长轨迹的业务过程的检测性能. 图4 相对位置编码与绝对位置编码在长轨迹上的F1-score检测指标的比较 5.6.2 BPAD-LS与Direct-Comparison的比较 本实验的目的是证明本文的方法能显著减少假阳性.图5是两种方法判定异常活动的召回率指标的比较结果.从比较结果可知,本文提出的方法在所有数据集上的召回率都低于直接比较的方法.图6是两种判定异常活动的方法在所测试的10个数据集上的准确率指标比较结果,从图6中可知,本文提出的判定异常活动的方法明显比直接比较的方法的准确率高,由此说明本文提出的方法能明显减少假阳性.在图6中,本文提出的方法在5个数据集上判定异常活动的准确率高达99%以上,在3个数据集上的准确率在90%以上,在其余的两个数据集上也在80%以上.因此,在检测业务过程中的控制流异常时,若处理假阳性的成本较高,则本方法较合适. 图5 BPAD-LS与Direct-Comparison的Recall指标比较 图6 BPAD-LS与Direct-Comparison的Precision指标比较 图7是两种方法的F1-score指标的比较结果,从该图7中可知,本文提出的方法明显比直接比较方法的F1-score指标更好.因此,若检测业务过程中的异常时对准确率和召回率都比较看重,则本文提出的方法更合适. 图7 BPAD-LS与Direct-Comparison的F1-score指标比较 出现图5-图7中的比较结果是合理的.直接比较方法是将预测概率最高的下一个活动作为正确活动,只要实际执行的活动与该正确活动不一致,即认为出现了异常,此方法的原则是尽量不放过任何一个异常,所以相比之下其召回率较高.但由于业务过程中存在选择、并行等路由方式,业务过程的执行路径可能比较复杂,因此可能存在多个正确的下一个活动,通常这若干个正确的下一个活动的预测概率相比于其他不正确的预测概率较大,因而直接比较的方法可能会将实际执行的正确的活动也被检测为异常,导致其准确率降低.而本文提出的方法将根据阈值选择概率值较大的若干个正确的下一个活动,选择的这若干个正确的下一个活动可能包含一些实际不正确的活动,导致实际执行的活动可能存在异常而被检测为正确,因此相比于直接比较的方法其召回率会降低,但尽最大限度包含了实际正确的下一个活动,因而本方法的准确率较高,从而最大限度减少假阳性. 5.6.3 BPAD-LS方法与对比方法的比较 本小节将评估和比较本文提出的BPAD-LS方法与baseline算法在各个数据集上的检测异常的性能. 表2是BPAD-LS方法与各个对比算法的准确率(precision)检测指标的结果汇总.从表2中可知,BPAD-LS方法在大多数数据集上的准确率比对比算法更好,其中在数据集BPIC2020_DomesticDeclarations 等4个数据集上的准确率达到99%,在数据集BPIC2020_RequestForPayment 等4个数据集上的准确率达90%以上,其余两个数据集上的准确率也在80%以上,说明本文提出的判定异常活动的方法相较于对比算法能有效减少假阳性,即非常适用于识别正常活动. 表2 Precision检测指标汇总 表3是BPAD-LS方法与各个对比算法的召回率(recall)检测指标的结果汇总.从表3中可知,朴素方法(Naive)的召回率在大多数数据集上效果最佳,其次是采样方法(Sampling).朴素算法的召回率之所以高,是因为朴素算法的特点是尽量不放过任何一个异常轨迹.尽管朴素算法的召回率高,但也会增加假阳性,即把非异常的轨迹识别为异常的轨迹.BINetv1算法在少数数据集上的召回率较高,DAE算法和Sampling算法在所有数据集上的召回率指标较高,说明这些方法适用的场景是注重异常轨迹的识别,且对假阳性的处理成本较低. 表3 Recall检测指标汇总 表4是BPAD-LS方法与各个对比算法的F1-score检测指标的结果汇总.从表4中可知,尽管BPAD-LS方法的召回率检测指标相比于baseline算法较低,但是BPAD-LS方法的F1-score检测指标在大多数数据集上的检测结果都比对比算法要好.BPAD-LS方法在BPIC2012_W数据集上的召回率指标较低,导致F1-score检测指标较低,推测的原因是BPIC2012_W数据集上的活动总数较少,轨迹的平均长度超过活动数,导致轨迹中有较多重复的活动,因而增加了预测下一个活动的难度,进而增加检测难度.BPAD-LS方法在Sepsis Cases数据集上的F1-score检测指标相比于其他数据集较低,推测的原因是该数据集较小,其过程实例数量较少,导致模型的训练数据不够,降低了预测下一个活动的准确率,进而导致检测指标较低. 表4 F1-score检测指标汇总 总体而言,5种对比算法的准确率较低,但召回率较高.在文献[20]中将5种对比算法用于检测人工合成的事件日志和真实的事件日志中的控制流异常,实验结果表明这5种对比算法整体上在人工合成的事件日志上的异常检测结果较好,而在真实事件日志上的检测性能较低,且在这两种事件日志上的准确率指标较低,而召回率指标较高.结合文献[20]中的实验结果和本文的实验结果,都表明5种对比算法在检测异常时,其准确率较低,而召回率较高,因而这5种对比算法适用于处理假阳性的成本比处理假阴性的成本更高的场景.而BPAD-LS方法的召回率指标相比于5种对比算法稍低,但是准确率较高,因而适用于处理假阴性的成本比处理假阳性的成本较高或处理两者的成本相近的场景. 综合多个实验结果及评价指标,本文提出的BPAD-LS方法对于检测长轨迹的业务过程中的控制流异常具有优势,且提出的计算异常分数的方法能显著减少假阳性.与五种对比算法相比,BPAD-LS方法的F1-score检测指标在绝大多数数据集上都更高,且在多个数据集上的F1-score检测指标都在90%以上,因此BPAD-LS方法能有效地检测业务过程中的控制流异常. 业务过程管理系统在企业组织中起着越来越重要的作用,但业务过程在执行过程中由于内外环境的变化以及业务过程中各种因素存在复杂的依赖关系而可能发生各种异常,如控制流异常,这些异常给企业组织带来巨大的损失.为了检测控制流异常,本文提出使用基于自注意力机制和LSTM相结合的神经网络模型通过预测前缀活动序列的下一个活动并将其与实际发生的活动进行比对,以检测控制流异常.LSTM通常用于处理序列数据和序列建模,如序列的预测问题,但本文的预测模型中使用目前广泛应用于机器翻译的自注意力机制建模活动之间的依赖关系,而模型中的LSTM层仅用于编码活动序列中活动的位置信息,而不用于建模活动之间的依赖关系.在业务过程的异常检测中,有时对假阳性的处理需要付出较大的代价,在本文的BPAD-LS方法中也重点考虑了此问题.为了减少假阳性,本文提出了一种通过计算预测的活动的异常分数并基于阈值的方法,以确定可能的下一个活动的集合,而不是简单地将预测概率值最高的活动作为正确活动与实际执行的活动进行比较.实验结果表明,所提出的方法能有效检测业务过程中的控制流异常,且能有效减少假阳性.通过在多个数据集上的检测结果表明,本文的方法适用于对准确率和召回率都重要的场景. 本文实验中判定异常活动的阈值是在给定区间内和设置增量(本实验中区间设置为[0,1],增量为0.01),并通过穷举法来选取最佳阈值,这在一定程度上增加了计算的时间,未来将考虑寻找最佳阈值的规律来缩小穷举的区间,以减少寻找最佳阈值的时间.此外,增量的设置也影响寻找最佳阈值的时间和检测的准确性,若增量设置过大,虽然可以减少计算时间,但有可能会错过最佳阈值,从而降低检测的准确性,若增量设置过小,虽然可能会增加检测的准确性,但会增加计算的时间.如何在短时间内找到最佳阈值,也是下一步工作中值得研究的问题. 业务过程中的控制流、数据流、时间和资源等视角存在复杂的依赖关系,业务过程在执行过程中产生异常的原因可能由多个视角共同引起,或者一个视角出现的异常是由另一个视角引起的,因此与从单个视角出发检测业务过程中的异常相比,从多个视角出发检测异常将更有意义.本文只关注控制流异常,未来的研究将考虑引入时间、资源等属性,以更全面和精确地检测业务过程中的异常.4 预测模型与检测方法
4.1 BPAD-LS方法总体框架
4.2 预测模型
4.3 计算异常分数
4.4 异常活动的判定
5 实验结果与分析
5.1 实验数据
5.2 数据预处理
5.3 评估指标
5.4 阈值的确定
5.5 baseline算法
5.6 实验结果及分析
6 总结与展望