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

3448                                                       软件学报  2025  年第  36  卷第  8  期


                                         x 1 ≥−1  x 3 ≥0.2x 1 −0.7x 2 −0.1  x 5 ≥0

                                          x 1 ≤1  x 3 ≤0.2x 1 −0.7x 2 −0.1 x 5 ≤0.445x 3 +0.445
                                         l 1 =−1    l 3 =−1     l 5 =0
                                          u 1 =1   u 3 =0.8    u 5 =0.8  y≥0.4x 5 +0.6x 6
                                                                       y≤0.4x 5 +0.6x 6
                                               0.2      ReLU(x 3 )        l 7 =0
                                          x 1        x 3        x 5  0.4
                                               0.8                       u 7 =1.28
                                            −0.7  Bias −0.1         0.6  y
                                               −0.8     ReLU(x 4 )
                                          x 2        x 4        x 6
                                         x 2 ≥−1  x 4 ≥0.8x 1 −0.8x 2  x 6 >0
                                         x 2 ≤1  x 4 ≤0.8x 1 −0.8x 2  x 6 ≤0.5x 4 +0.8
                                         l 2 =−1   l 4 =−1.6   l 6 =0
                                          u 2 =1   u 4 =1.6   u 6 =1.6
                                                            f  的  DeepPoly 抽象
                                               图 2 神经网络

                    图  2  中, ReLU  关系集为   R = {(x 3 , x 5 ),(x 4 , x 6 )}. 初始解表根据  f  中的仿射函数  (即  x 3 = 0.2x 1 −0.7x 2 −0.1 x 4 =
                                                                                                    ,
                            y = 0.4x 5 +0.6x 6 ), 以及来自  ReLU  关系的不等式        x 6 ⩾ x 4 ) 构建. 首先为两个不等式引入
                 0.8x 1 −0.8x 2  和                               (即   x 5 ⩾ x 3  和
                 两个松弛变量     x 7  和  , 即   x 5 − x 3 − x 7 = 0 和  x 6 − x 4 − x 8 = 0. 从  DeepPoly 抽象中可以得到   x 7  和  x 8  的数值边界分别是
                                x 8
                 [0, 1] 和  [0, 1.6]. 然后为其他  5  个线性等式分别添加一个松弛变量来替代常量,         x 9 = −x 3 +0.2x 1 −0.7x 2 x 10 = 0.8x 1 −
                                                                                              ,
                        ,
                                         ,
                 0.8x 2 − x 4 x 11 = 0.4x 5 +0.6x 6 −y x 12 = x 5 − x 3 − x 7 , 和  x 13 = x 6 − x 4 − x 8 , 其中   x 9 = 0.1  和  x 10 , x 11 , x 12 , x 13 = 0. 对于以上
                 每个方程, 我们启发式地选择一个变量作为基础变量, 并获得初始基础变量集                       B 0 = {x 3 , x 4 ,y, x 7 , x 8 }. 初始表  T 0  如下:

                                          
                                           x 3 = 0.2x 1 −0.7x 2 − x 9
                                          
                                          
                                          
                                          
                                          
                                           x 4 = 0.8x 1 −0.8x 2 − x 10
                                          
                                          
                                          
                                          
                                          
                                           y = 0.4x 5 +0.6x 6 − x 11         .
                                          
                                          
                                          
                                          
                                          
                                           x 7 = x 5 − x 3 − x 12 = −0.2x 1 +0.7x 2 + x 5 + x 9 − x 12
                                          
                                          
                                          
                                          
                                          
                                            x 8 = x 6 − x 4 − x 13 = −0.8x 1 +0.8x 2 + x 6 + x 10 − x 13
                    初始数值边界和赋值如表          1, 加粗的赋值表示其不满足数值边界或            ReLU  关系.

                                                  表 1 初始数值边界和赋值

                  边界与赋值       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    0    −0.4   0    0.1   0    0     0    0

                    注意,  y 和  x 7  的赋值不满足其数值边界, 并且它们都是当前的基础变量. 我们选择其中一个                    (如  x 7 ), 进行交换
                 (pivot). 此时   x 7  的当前赋值小于其下界约束, 而对    x 5  的赋值进行修改可能修复这一冲突, 因为          x 5  并且未达到其上
                 界. 交换   x 7  和   x 5  后可以得到   x 5 = 0.2x 1 −0.7x 2 + x 7 − x 9 + x 12 . 随后将其他方程中出现的   x 5  替换为当前的表达式   0.2x 1 −
                 0.7x 2 + x 7 − x 9 + x 12 . 此时基础变量集变为   B 1 = {x 3 , x 4 , x 5 ,y, x 8 }, 解表变为  T 1 :

                                        
                                         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  .
                                        
                                        
                                        
                                        
                                        
                                        y = 0.08x 1 −0.28x 2 +0.6x 6 +0.4x 7 −0.4x 9 − x 11 +0.4x 12
                                        
                                        
                                        
                                        
                                        
                                         x 8 = −0.8x 1 +0.8x 2 + x 6 + x 10 − x 13
                                                                                      y
                    此时  x 7  是非基础变量, 我们将其赋值更改为         0  以满足其数值边界, 同时基础变量        x 5  和   的赋值根据  T 1  进行相
                 应地变化. 上述操作完成后当前赋值如表             2.


                                                 表 2 修改   x 7 后的边界与赋值

                  边界与赋值       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    0.16  0    0    0.1   0     0    0     0
   20   21   22   23   24   25   26   27   28   29   30