Reluplex Example

初始的ReLU设置由DNN各层之间的关系得到。
设定的基本变量初始为 a1,a2,a3,a4,a5 a 1 , a 2 , a 3 , a 4 , a 5 ,根据DNN有下面的五个方程:
1a1=vb21v11+v12v13 ( 1 ) a 1 = v 21 b − v 11 + v 12 − v 13
2a2=vb22+v11+v12v13 ( 2 ) a 2 = v 22 b + v 11 + v 12 − v 13
3a3=vb31vf21+vf22 ( 3 ) a 3 = v 31 b − v 21 f + v 22 f
4a4=vb323vf21vf22 ( 4 ) a 4 = v 32 b − 3 v 21 f − v 22 f
5a5=v41+vf31vf32 ( 5 ) a 5 = v 41 + v 31 f − v 32 f

基本变量集合为 a1,a2,a3,a4,a5 a 1 , a 2 , a 3 , a 4 , a 5 ,ReLU连接集合R= {<vb21,vf21>,<vb22,vf22>,<vb31,vf31>,<vb32,vf32>} { < v 21 b , v 21 f > , < v 22 b , v 22 f > , < v 31 b , v 31 f > , < v 32 b , v 32 f > }
所有变量的初始值均赋值为0。基本变量的上界和下界设为0.输入输出变量的上下界需要根据具体的条件设置,在此处因为没有上下文所以我们自己初始化了一个上下界。
配置步骤:

  1. 变量 v41 v 41 是非基本变量而且越界了。所以我们要Update,把它设置成1。
    根据方程(5), v41=1 v 41 = 1 意味着 a5=1 a 5 = 1
  2. a5=1 a 5 = 1 a5 a 5 越界,需要执行PivotForRelu操作,把 vf32 v 32 f 变成基本变量,把 a5 a 5 重新设置为0,而此时 vf32=1 v 32 f = 1
  3. 因为此时 α(vf32)=10=max(0,α(vb32)) α ( v 32 f ) = 1 ≠ 0 = m a x ( 0 , α ( v 32 b ) ) 。所以要执行 Updateb U p d a t e b 的操作,使得 α(vb32)=1 α ( v 32 b ) = 1
  4. 根据方程(4), vb32=1 v 32 b = 1 意味着 a4=1 a 4 = 1
  5. a4=1 a 4 = 1 a4 a 4 越界,需要执行PivotForRelu操作,把 vf22 v 22 f 变成基本变量,把 a4 a 4 重新设置为0,而此时 vf22=1 v 22 f = 1
  6. 因为此时 α(vf22)=10=max(0,α(vb22)) α ( v 22 f ) = 1 ≠ 0 = m a x ( 0 , α ( v 22 b ) ) 。所以要执行 Updateb U p d a t e b 的操作,使得 α(vb22)=1 α ( v 22 b ) = 1
  7. 根据方程(3), vf22=1 v 22 f = 1 意味着 a3=1 a 3 = 1
  8. a3=1 a 3 = 1 a3 a 3 越界,需要执行PivotForRelu操作,把 vf21 v 21 f 变成基本变量,把 a3 a 3 重新设置为0,而此时 vf21=1 v 21 f = 1
  9. 根据方程(2), vb22=1 v 22 b = 1 意味着 a2=1 a 2 = 1
  10. a2=1 a 2 = 1 a2 a 2 越界,需要执行PivotForRelu操作,把 v13 v 13 变成基本变量,把 a2 a 2 重新设置为0,而此时 v13=1 v 13 = 1
  11. 因为此时 α(vf21)=10=max(0,α(vb21)) α ( v 21 f ) = 1 ≠ 0 = m a x ( 0 , α ( v 21 b ) ) 。所以要执行 Updateb U p d a t e b 的操作,使得 α(vb21)=1 α ( v 21 b ) = 1
  12. 此时恰好满足所有条件,停机!

你可能感兴趣的:(Algorithm)