Page 26 - 《软件学报》2025年第8期
P. 26

刘宗鑫 等: 神经网络的增量验证                                                                3449


                                                                      x 6  交换, 并调整其赋值为   0.3. 类似地, 我们可
                    现在  y 的赋值仍然违反其数值边界, 因此我们选择与非基础变量
                 以得到基础变量集      B 2 = {x 3 , x 4 , x 5 , x 6 , x 8 }、表  T 2  和相应的赋值 (如表  3).

                                
                                 x 3 = 0.2x 1 −0.7x 2 − x 9
                                
                                
                                
                                
                                
                                
                                 x 4 = 0.8x 1 −0.8x 2 − x 10
                                
                                
                                
                                
                                 x 5 = 0.2x 1 −0.7x 2 + x 7 − x 9 + x 12               .
                                
                                
                                
                                
                                
                                 x 6 = −0.13x 1 +0.47x 2 +1.67y−0.67x 7 +0.4x 7 −0.67x 9 +1.67x 11 −0.67x 12
                                
                                
                                
                                
                                
                                 x 8 = −0.93x 1 +1.27x 2 +1.67y−0.67x 7 +0.67x 9 + x 10 +1.67x 11 −0.67x 12 − x 13

                                                 表 3 修改   x 6 后的边界与赋值

                  边界与赋值       x 1  x 2  x 3  x 4  x 5   x 6    y    x 7   x 8  x 9  x 10  x 11  x 12  x 13
                      l      −1   −1   −1   −1.6   0     0    0.3   0     0    0.1   0    0     0    0
                      u       1    1   0.8  1.6   0.8   1.6   1.28  1    1.6   0.1   0    0     0    0
                      α      −1   −1   0.4   0    0.4  0.233  0.3   0   0.233  0.1   0    0     0    0

                                               T 2  中所有线性等式都被满足, 但       ReLU     x 6 = ReLU(x 4 ) 被违反. 如果在
                    这组赋值不违反任何数值边界, 且                                          关系
                                                   ,
                 这一步我们用     y 替换  , 我们将再次获得      B 1 T 1  和上一步相同的冲突赋值. 假设现在达到局部搜索的阈值, 我们必
                                 x 6
                 须选择一个不确定的        ReLU  神经元进行分割. 这里一个启发式的选择是分割              x 4 , 因为在  x 4  的局部搜索中已有一次
                 冲突, 但   x 3  没发生过冲突. 在断言   x 4 ⩽ 0 的非激活分支中, 我们首先将     x 4  的上界重置为  0, 并在这一断言下再次运
                 行  DeepPoly, 以获得新的数值边界和赋值 (如表        4).

                                              表 4 分割   ReLU  节点后的边界与赋值

                  边界与赋值       x 1  x 2  x 3   x 4   x 5  x 6   y    x 7  x 8  x 9   x 10  x 11  x 12  x 13
                      l       −1   −1   −1   −1.6   0    0    0.3   0    0    0.1   0     0    0     0
                      u       1    1    0.8   0    0.8   0    0.32  1    1.6  0.1   0     0    0     0
                      α       −1   −1   0.4   0    0.4   0    0.16  0    0    0.1   0     0    0     0

                            y 再次违反其数值边界, 我们将其与一个非基础变量交换. 经过多步局部搜索后, 我们无法找到满足
                    现在变量
                 所有约束的赋值, 因此必须再次进行分割, 断言              x 3 ⩽ 0 或  x 3 ⩾ 0. 在这两个分支中, 问题都简化为一个线性规划问
                                                                                         x 4 ⩾ 0 进行  DeepPoly
                 题, 并且这两个分支都是不可行的. 我们仍然有未求解的分支                 x 4 ⩾ 0. 我们以类似的方式对断言
                 算界, 检查赋值是否有效, 并在违反约束的基础变量中进行交换. 经过多步局部搜索后, 我们再次需要对                              x 3  进行分
                                                                                   T
                 割. 在  x 3 ⩽ 0 的分支中, 我们找到一个满足所有约束的赋值, 其中的反例是              (0.675,0.05) , 其输出是  y = 0.3. 这意味
                 着该组输入违反了性质        P : y < 0.3. 由于已找到一个真实的反例, Reluplex 立即输出      SAT, 最后  x 3 ⩾ 0 对应的分支不
                 会  被  探  索  .   上  述  求  解  过  程  对  应  的  搜  索  树     T = (V,E,r,L)   如  图  3  所  示  ,   其  中  V = {r,v 1 ,v 2 ,v 3 ,v 4 ,v 5 ,v 6 } ,   且  r      是  根  ;

                                                   ;
                 E = {(r,v 1 ),(r,v 2 ),(v 1 ,v 3 ),(v 1 ,v 4 ),(v 2 ,v 5 ),(v 2 ,v 6 )} V ∪ E  上的标记函数  L 在图  3  中标出. 在这一求解过程中, 叶节点  v 3
                 和  v 4  是  UNSAT  叶节点,  v 5  是  SAT  叶节点,  v 6  是一个标记为空序列  ε 的叶节点. 在节点  , 我们已找到一个真正的
                                                                                    v 5
                 反例, 因此最后的叶节点       v 6  在求解过程中不会被求解, 其标签应为         ε.

                                                             r  C 0 C 1 C 2
                                                     x 4 ≤0         x 4 ≥0
                                            C 3 C 4 C 5  v 1           v 2  C 8 C 9 C 10
                                            x 3 ≤0      x 3 ≥0   x 3 ≤0      x 3 ≥0
                                           v 3           v 4    v 5           v 6
                                                                               ε
                                         C 6  UNSAT   C 7  UNSAT C 11 C 12  SAT
                                                 图 3 性质  ( f,X,P) 的求解过程

                 2.2   增量  SMT  求解问题
                    如前文所述, Reluplex 求解实际上是通过添加断言来将不确定                ReLU  神经元行为限定为绝对激活或非激活来
                 进行深度优先搜索, 因此, 我们可以将          Reluplex 求解过程形式化为一个带标记的二叉树, 并称其为搜索树.
   21   22   23   24   25   26   27   28   29   30   31