初始的ReLU设置由DNN各层之间的关系得到。
设定的基本变量初始为a1,a2,a3,a4,a5a1,a2,a3,a4,a5,根据DNN有下面的五个方程:
(1)a1=vb21−v11+v12−v13(1)a1=v21b−v11+v12−v13
(2)a2=vb22+v11+v12−v13(2)a2=v22b+v11+v12−v13
(3)a3=vb31−vf21+vf22(3)a3=v31b−v21f+v22f
(4)a4=vb32−3vf21−vf22(4)a4=v32b−3v21f−v22f
(5)a5=v41+vf31−vf32(5)a5=v41+v31f−v32f
基本变量集合为a1,a2,a3,a4,a5a1,a2,a3,a4,a5,ReLU连接集合R={<vb21,vf21>,<vb22,vf22>,<vb31,vf31>,<vb32,vf32>}{<v21b,v21f>,<v22b,v22f>,<v31b,v31f>,<v32b,v32f>}
所有变量的初始值均赋值为0。基本变量的上界和下界设为0.输入输出变量的上下界需要根据具体的条件设置,在此处因为没有上下文所以我们自己初始化了一个上下界。
配置步骤:
- 变量v41v41是非基本变量而且越界了。所以我们要Update,把它设置成1。
根据方程(5),v41=1v41=1意味着a5=1a5=1 - a5=1a5=1 → a5a5越界,需要执行PivotForRelu操作,把vf32v32f变成基本变量,把a5a5重新设置为0,而此时vf32=1v32f=1
- 因为此时α(vf32)=1≠0=max(0,α(vb32))α(v32f)=1≠0=max(0,α(v32b))。所以要执行UpdatebUpdateb的操作,使得α(vb32)=1α(v32b)=1
- 根据方程(4),vb32=1v32b=1意味着a4=1a4=1
- a4=1a4=1 → a4a4越界,需要执行PivotForRelu操作,把vf22v22f变成基本变量,把a4a4重新设置为0,而此时vf22=1v22f=1
- 因为此时α(vf22)=1≠0=max(0,α(vb22))α(v22f)=1≠0=max(0,α(v22b))。所以要执行UpdatebUpdateb的操作,使得α(vb22)=1α(v22b)=1
- 根据方程(3),vf22=1v22f=1意味着a3=1a3=1
- a3=1a3=1 → a3a3越界,需要执行PivotForRelu操作,把vf21v21f变成基本变量,把a3a3重新设置为0,而此时vf21=1v21f=1
- 根据方程(2),vb22=1v22b=1意味着a2=1a2=1
- a2=1a2=1 → a2a2越界,需要执行PivotForRelu操作,把v13v13变成基本变量,把a2a2重新设置为0,而此时v13=1v13=1
- 因为此时α(vf21)=1≠0=max(0,α(vb21))α(v21f)=1≠0=max(0,α(v21b))。所以要执行UpdatebUpdateb的操作,使得α(vb21)=1α(v21b)=1
- 此时恰好满足所有条件,停机!