Page 145 - 《软件学报》2026年第2期
P. 145

624                                                        软件学报  2026  年第  37  卷第  2  期


                  1.1   根因分析
                    根因分析指的是通过结合系统异常前后的数据, 揭示系统异常行为的过程                         [1] . 迄今为止, 根因分析主要的流派
                 可以归纳为两类, 即先验知识完备的领域根因分析                [23−27] 和基于因果发现的根因定位     [1,3,4,10,11] . 其中先验完备的领域
                 根因分析主要针对在先验的因果结构已知的情况下, 如何定位引起异常故障的根因变量. 这一系列的研究内容大
                 都面向具体的任务领域, 例如云服务系统             [26] 或者智能办公楼系统    [24] . 然而, 并不是所有的领域, 或者一个领域内的
                 所有子任务都可以获取到先验的因果图知识, 而上述领域根因方法在这样的应用场景中往往都会立即失效. 因此,
                 基于因果发现的根因定位通过两阶段的学习, 旨在先验因果知识不完备的时候学习相应的因果结构, 进而基于学
                 习到的因果结构进行根因变量的识别和定位. 例如, 一种基于递归划分的                       PC  拓展算法被提出    [3] , 其结合异常发生
                 的前后数据, 通过进行节点增广和经典            PC  算法  [13] 的推广, 实现了高效的根因变量识别. 又如, 研究者在文献            [10]
                 中提出通过识别先验的结构因果模型             (structural causal model, SCM) 和结构不变的外源噪声干预操作, 来实现根因
                 变量的识别. 最近, 面向实时增量数据流的根因分析               [11] 和面向跨模态数据的根因分析       [1] 相继被提出, 其通过深度学
                 习的策略进行因果图的搜索, 并结合具体的下游任务场景上下文信息来实现具体的根因变量识别. 综上所述, 截至
                 目前的根因分析的基础思路是一致的, 即先进行因果图的获取                     (先验知识或者因果发现), 再实现对应根因变量的
                 识别定位. 然而, 本文注意到, 这一思路在实际应用会存在非常大的问题. 首先, 因果发现这一任务本身和根因分析
                 的目标是不一致的, 前者的目标是在给定节点的情况下识别边的方向                       (或者强度   [28] ), 而后者旨在识别因果图节点
                 集合的一个子集      (因果图本身不是必需的). 这一技术路线的设计既不符合最小化的原则, 同样也会引入因果发现
                 任务本身带来的误差传播. 其次, 因果发现这一前置任务本身仍处于探索的阶段, 无论从先验的可信赖假设到识别
                 图的完备性    (马尔可夫等价类      [13] ) 再到验证评估难以实施这一问题       [13] , 其任何的误差都会传播到第      2  阶段, 即基于
                 因果图的根因定位       (随机游走   [4] 或者马尔可夫链   [11] ) 本身严重依赖于上游因果图学习的精度. 综合上述两点缺陷,
                 本文旨在提出首个不依赖于因果发现的根因分析方法.
                  1.2   干预识别
                    干预识别指的是因果推断中的一类子任务, 其旨在结合干预前后的数据, 跨环境实现被干预节点集合的识
                 别  [14,17,18,20,29,30] . 其中, 贪婪搜索算法  (greedy equivalence search, GES) [13] 被改进到干预-观测数据结合的多环境下  [29] ,
                 而基于约束的因果发现框架在文献             [14] 中被推广到干预-观测联合数据的场景中, 并给出了干预变量识别的完备
                 性理论. 然而, 基于约束的方法在面向高维数据以及样本量增加的场景下, 其性能表现会受制于条件独立性测试这
                 一技术瓶颈    [13] . 近两年, 部分工作尝试通过构造特定的统计量来识别变量是否被干预                    [14,18,20] . 具体来说, 在线性
                 SCM  模型的假设下, 一种基于精度矩阵          (变量协方差矩阵的逆) 变化的策略被提出             [17] . 进而, 这一方法被推广到潜
                 在混杂存在的情况下       [30] . 为了克服线性数据这一假设的限制, iSCAN        方法在文献     [20] 中被提出, 其通过构建得分
                 函数一阶导方差这一统计量, 用于识别变量是否跨环境被干预. 然而, iSCAN                     方法的主要缺陷在于通过经典的斯
                 坦等式   (Stein identify) [21] 和基于核方法的斯坦估计  [22] 对于数据得分函数的估计. 这一方法缺乏对于复杂非线性数
                 据的估计能力, 且由于具备样本量平方复杂度, 难以泛化到真实的大型数据集上. 本文面向得分函数一阶导方差这
                 一统计量, 基于扩散模型的得分函数估计, 实现面向大规模数据的根因分析.

                  2   背景知识

                  2.1   结构因果模型

                    本节引入符号并正式定义问题设定. 我们使用               [d] 来表示整数集合     1,...,d. 此外, 本文用  G =< [d],E > 来表示
                 有向无环图    (directed acyclic graph, DAG), 其中  [d] 表示节点集合,   E ⊂ [d]×[d] 表示有向边的集合, 且  (i, j) ∈ E  表示
                              j
                 从节点   i 到节点   的一条边. 此外, 本文令     X = (X 1 ,...,X d ) 表示一个  d  维度的随机向量. 基于上述符号, 一个作用于
                 X = (X 1 ,...,X d ) 上的结构因果模型  (SCM)  M = (X, f,P U ) 通常可以被定义为由以下形式的   d  个结构方程组成的集
                 合     (对  ∀j ∈ [d]):
                                                            (
                                                                 )
                                                      X j = f j Pa j ,U j ,
   140   141   142   143   144   145   146   147   148   149   150