其实现在对于神经网络的攻击方法已经提出了很多,但有关防御,验证的问题却还有很多值得研究的地方,除了Reluplex以外,这一篇论文中,也是提出希望基于可满足性模理论来对神经网络的鲁棒性做一些验证。这篇论文感觉已经更偏向于软件工程的范畴,所以读起来略有点恶心。
类比之前的攻击,对于神经网络的攻击大部分实际上是求解一个优化问题,优化目标是使得神经网络分类错误,并且距离原始样本点的较近(这个距离往往用范数来度量)。而验证往往是给定一个原始样本点的邻域(这个邻域往往也是范数来刻画的),来验证这个邻域内是否存在对抗样本。
下面先给出这篇论文的一些定义以及符号:
- 定义:一般的,我们将一个(前馈和深度)神经网络N记作一个元组
(L,T,ϕ)
(
L
,
T
,
ϕ
)
,其中
L={Lk|k∈{0,...,n}}
L
=
{
L
k
|
k
∈
{
0
,
.
.
.
,
n
}
}
是一组层,
L0
L
0
是输入层,而
Ln
L
n
是输出层,
T⊂L×L
T
⊂
L
×
L
是层之间的一组顺序连接, 除了输入层和输出层以外,每层都有一个输入连接和一个输出连接,
ϕ={ϕk|k∈{1,...,n}}
ϕ
=
{
ϕ
k
|
k
∈
{
1
,
.
.
.
,
n
}
}
是一组激活函数
ϕk:DLk−1→DLk
ϕ
k
:
D
L
k
−
1
→
D
L
k
,每个非输入层一个。
因此,网络通过其输入层输入 x x (也是 ),然后通过一连串的激活传播至以下每一层直至输出层。 我们将层 k k 中的点 的激活值表示为 αx,k=ϕk(ϕk−1(...ϕ1(x)))∈DLk α x , k = ϕ k ( ϕ k − 1 ( . . . ϕ 1 ( x ) ) ) ∈ D L k ,其中 αx,0=x α x , 0 = x 。 对于 k k 中的某一个感知器 ,我们记 αx,k(p) α x , k ( p ) 表示其在输入 x x 上激活的值。 对于每个激活 和层 k′<k k ′ < k ,我们定义 Prek′(αx,k)={αy,k′∈DL′k|αy,k=αx,k} P r e k ′ ( α x , k ) = { α y , k ′ ∈ D L k ′ | α y , k = α x , k } 为第 k′ k ′ 层中激活值的集合,其在层 Lk L k 中的相应激活为 αx,k α x , k 。 分类决策是基于输出层中的激活值作出分类决定,例如将 x x 分配给类别 。 为简单起见,我们用 αx,n α x , n 表示分配给输入 x x 的类,因此 表示两个输入 x x 和 具有相同的类。 - 假设:对于层
Lk
L
k
中点
x
x
的每个激活值 ,区域
ηk(αx,k)
η
k
(
α
x
,
k
)
包含人类观察者认为非常接近
αx,k
α
x
,
k
的激活值,它们应该被分类为与
x
x
相同。
直观地说,点 处的网络 N N 的安全性意味着分类决策在区域 内的扰动 x x 处是鲁棒的。 请注意,虽然扰动应用于 层,但分类决策是基于输出层 Ln L n 中的激活。
其中, ηk(αx,k) η k ( α x , k ) 的定义为 ηk(αx,k)={z∈Dlk|||z−αx,k||≤d} η k ( α x , k ) = { z ∈ D l k | | | z − α x , k | | ≤ d } - 定义[General Safety]:设 ηk(αx,k) η k ( α x , k ) 是神经网络 N N 的层 中的一个区域,并且 αx,k∈ηk(αx,k) α x , k ∈ η k ( α x , k ) 。 如果对于 ηk(αx,k) η k ( α x , k ) 中的所有激活值 αy,k α y , k 都有 αy,n=αx,n α y , n = α x , n ,那么我们称 N N 对于输入 和区域 ηk(αx,k) η k ( α x , k ) 是安全的,记作 N,ηk⊨x N , η k ⊨ x 。
- 操作:操作实际上就是一个施加扰动的过程,将操作
δk(αx,k)
δ
k
(
α
x
,
k
)
应用于激活
αx,k
α
x
,
k
将导致另一个激活,从而改变某些或所有维度的值。因此,我们将操作表示为超矩形,根据层
Lk
L
k
的两个激活值
αx,k
α
x
,
k
和
αy,k
α
y
,
k
定义为
rec(αx,k,αy,k)=×p∈Pk[min(αx,k(ρ),αy,k(ρ)),max(αx,k(ρ),αy,k(ρ))]
r
e
c
(
α
x
,
k
,
α
y
,
k
)
=
×
p
∈
P
k
[
min
(
α
x
,
k
(
ρ
)
,
α
y
,
k
(
ρ
)
)
,
max
(
α
x
,
k
(
ρ
)
,
α
y
,
k
(
ρ
)
)
]
。
对于激活值 αx,k α x , k 和操作集合 Δ Δ ,我们用 rec(Δ,αx,k) r e c ( Δ , α x , k ) 表示包含所有超矩形的多面体,所述超矩形是通过在 αx,k α x , k 上施加一些操作而产生的,即 rec(Δ,αx,k)=δ∈Δrec(αx,k,δ(αx,k)) r e c ( Δ , α x , k ) = δ ∈ Δ r e c ( α x , k , δ ( α x , k ) ) 。 并且设 Δk Δ k 是层 Lk L k 的所有可能操作的集合。 - 有效操作:给定激活值
αx,k
α
x
,
k
,如果
αx,k
α
x
,
k
是
rec(V(αx,k),αx,k)
r
e
c
(
V
(
α
x
,
k
)
,
α
x
,
k
)
的内点,则一组操作
V(αx,k)⊆Δk
V
(
α
x
,
k
)
⊆
Δ
k
是有效的,即
αx,k
α
x
,
k
在矩阵
rec(V(αx,k),αx,k)
r
e
c
(
V
(
α
x
,
k
)
,
α
x
,
k
)
内部并且不属于
rec(V(αx,k),αx,k)
r
e
c
(
V
(
α
x
,
k
)
,
α
x
,
k
)
的边界。
图2给出了二维空间中有效操作的示例:每个箭头表示一个操作,每个虚线框表示相应操作的(超)矩形,激活值 αx,k α x , k 是虚线空间的内部点框。
对于操作 δ1k(αy,k) δ k 1 ( α y , k ) 和 δ2k(αx,k) δ k 2 ( α x , k ) ,如果前者超矩形中任意激活值也在后者超矩形中,则称前者比后者更精细(finer),记作 δ1k(αy,k)≤δ2k(αx,k) δ k 1 ( α y , k ) ≤ δ k 2 ( α x , k ) ,这也蕴含了 αy,k α y , k 是 δ2k(αx,k) δ k 2 ( α x , k ) 的超矩形中的激活值。
此外,我们记 ϕk′(...ϕk+1(δk(αx,k))) ϕ k ′ ( . . . ϕ k + 1 ( δ k ( α x , k ) ) ) 为 δk,k′(αx,k) δ k , k ′ ( α x , k ) ,表示在激活 αx,k α x , k 上应用操作 δk δ k 之后在层 k′≥k k ′ ≥ k 中的相应激活值,其中 δk,k(αx,k)=δk(αx,k) δ k , k ( α x , k ) = δ k ( α x , k ) 。
- 最小操作:如果不存在操作
δ1k
δ
k
1
和
δ2k
δ
k
2
以及激活值
αy,k
α
y
,
k
使得
δ1k(αx,k)≤δk(αx,k),αy,k=δ1k(αx,k),δk(αx,k)=δ2k(αy,k)
δ
k
1
(
α
x
,
k
)
≤
δ
k
(
α
x
,
k
)
,
α
y
,
k
=
δ
k
1
(
α
x
,
k
)
,
δ
k
(
α
x
,
k
)
=
δ
k
2
(
α
y
,
k
)
并且有
αy,n≠αx,n,αy,n≠δk,n(αx,k)
α
y
,
n
≠
α
x
,
n
,
α
y
,
n
≠
δ
k
,
n
(
α
x
,
k
)
,则称激活值
αx,k
α
x
,
k
上的操作
δk
δ
k
是最小的。
直观地说,最小操作没有更精细的操作,导致不同的分类。 然而,在应用最小操作之前和之后都可能具有不同的分类,即有可能 δk,n(αx,k)≠αx,n δ k , n ( α x , k ) ≠ α x , n 。 不难看出,操作的最小性意味着可以通过检查端点 \alpha_x,k} \alpha_x,k} 和 δk(αx,k) δ k ( α x , k ) 的类来检测其相应超矩形中的类变化。