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

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


                 分函数差异, 进而只需要训练一次的扩散模型即可推导出剪枝后的得分函数及海森矩阵:

                                                   
                                                              J x s θ (x) r LJ
                                                    b δ L = −s θ (x) L ·
                                                   
                                                   
                                                   
                                                             J x s θ (x) L,L
                                                   
                                                   
                                                   
                                                   
                                                   
                                                                n
                                                   
                                                   
                                                                 θ
                                                     b n  n   J x s (x) r LJ
                                                    δ = −s (x) L ·                                   (4)
                                                          θ
                                                     L
                                                                n
                                                              J x s (x) L,L
                                                                θ
                                                   
                                                   
                                                   
                                                   
                                                                c
                                                   
                                                              J x s (x) r LJ
                                                     c   c      θ
                                                    b δ = −s (x) L ·
                                                   
                                                     L   θ      c
                                                                 θ
                                                              J x s (x) L,L
                 其中, r L 表示雅可比矩阵的第       L  行, 而  s θ (x) L  和   J x s θ (x) L,L  都是标量. 基于上述思路, 本文进而提出优化后的根因分
                       J
                 析算法   (见算法  2). 这里算法  2  第  6  行通过已经存在的库来进行神经网络雅可比矩阵的计算                 (本文采用   functorch
                 实现雅可比矩阵的高效计算          [39] ).
                 算法  2. 优化版本的根因分析      (optimized diffusion-guided root-cause analysis, ODRCA).
                                                                               ,
                                     n    n,i m n  c  c,i m c                     n    c
                 输入: 异常发生前后数据       X = {X }   和   X = {X } , 初始化的分数扩散模型    M θ M  和   M , 阈值  t.
                                           i=1         i=1                        θ    θ
                              ,
                 1. 初始化  T = [d] S = ∅.
                 2. 在数据   X [d]\T  上训练  M θ , 实现对混合数据分布海森矩阵的估计:
                                                     (     )
                                                     H log p(x)  ≈ J x s θ (x) j,j .
                                                            j,j
                                           n
                                                c
                 3. 在  X  n   和  X c   上分别训练   M  和  M , 实现对两个环境数据海森矩阵分别的估计:
                                           θ    θ
                      [d]\T  [d]\T
                                                    (      )
                                                     n
                                                  H log p(x)     n
                                                                  θ
                                                            j,j  ≈ J x s (x) j,j
                                                 
                                                                       .
                                                    (      )
                                                    c            c
                                                   H log p(x)  ≈ J x s (x) j,j
                                                            j,j   θ
                 4. 当  T , ∅:
                 5. 根据引理  3、引理   4  中的公式计算剪枝后新的得分函数;
                                                             ,
                                                                  n
                                                                            c
                 6. 基于自动微分工具计算剪枝后的雅可比矩阵              J [d]\T  s θ (x) J [d]\T  s (x) 和  J x [d]\T  s (x);
                                                                            θ
                                                               x
                                                                  θ
                                                      x
                 7. 根据引理  2  中公式  (3) 的第  1  条原则, 得到共同的叶子节点估计:

                                                     L = argminScore( j),
                                                         j∈[d]\T
                                            c
                                  n
                 其中,  Score( j) = J [d]\T  s (x) j,j + J [d]\T  s (x) j,j .
                              x   θ      x  θ
                 8.  T = T \{L}.
                 9. 根据引理  2  中公式  (3) 的第  2  条原则, 如果  J  [d]\T  s θ (x) j,j < t, 那么:
                                                     x
                                                        S = S ∪{L}.
                 输出:  S .
                  3.5   复杂度分析
                    训练复杂度: 首先, 本文所提        ODRCA  方法将扩散模型的训练和根因定位中剪枝所需的迭代隔离开来, 因此训
                 练的复杂度和迭代次数无关, 即只需要预训练扩散模型一次. 鉴于训练的轮次数是固定的; 扩散模型本身的优化函
                 数没有涉及任何复杂的约束条件           (例如增广拉格朗日约束        [40] ); 且扩散模型层间最大神经元个数是常数, 因此, 本文
                 训练的复杂度仅和样本量         n 成正比, 即  O(n).
                    根因定位复杂度: 一旦扩散模型被预训练好, 剩下的操作就是迭代                    d 轮次, 进行共同叶子节点的筛选和被干预
                                                                                            3|T | 次; 最后, 考
                 节点的判断. 首先, 最外侧的循环需要          d  次迭代; 其次, 内侧计算剪枝后更新的得分函数需要计算
                                                                                      O(d) 次计算, 整体的计
                 虑到自动微分工具计算更新得分函数的雅可比矩阵需要                    3(d −|T |) 次, 以及排序所需要的
                            (  ∑               )
                                 d                 (    3  )                                         ( )
                 算复杂度为    O n+     d×(3i+3(d −i)) = O n+3d . 可以看到, 该复杂度和样本量呈线性关系, 将原本的              O n 2
                                 i=0
                 的平方复杂度直接降到了线性复杂度, 因而具备了扩散到大型数据集进行根因分析的相关潜力.
   146   147   148   149   150   151   152   153   154   155   156