深度神经网络的安全性验证(Safety Verification of Deep Neural Networks)

作者:Xiaowei Huang, Marta Kwiatkowska, Sen Wang and Min Wu

单位:牛津大学计算机科学系

摘要

  深度神经网络在图像分类方面取得了令人印象深刻的实验结果,但它在对抗扰动方面是不稳定的,也就是说,对输入图像的极小改变也会导致网络对其进行错误分类。随着自动驾驶汽车的应用,包括感知模块和端到端控制器,这都引起了对其安全性的担忧。基于可满足性模块理论,本文提出了一种新的前馈多层神经网络自动验证框架。我们关注图像处理中图像分类决策的安全性,例如抓痕或相机角度或照明条件的变化,这些变化不会扰乱人类的判断,我们根据原始图像小邻域内分类的不变性来定义单个决策的安全性。我们通过离散化实现了区域的彻底搜索,并逐层传播分析。我们的方法直接与网络代码一起工作,并且与现有的方法相反,可以保证在给定的操作区域和系列中找到敌对的示例(如果存在)。如果找到了敌对示例,该例子可以显示给测试人员用来微调网络。我们使用Z3实现这些技术,并在最先进的网络上对它们进行评估,包括规范化和深度学习网络。我们还与现有的搜寻敌对例子的技术进行比较,并估计网络的鲁棒性。

主要贡献

  在本文中,我们提出了一个通用框架,用于自动验证由前馈深度神经网络做出的分类决策的安全性。虽然我们使用图像分类器进行具体的工作,但是这些技术可以推广到其他环境。对于给定的图像 x x x (向量空间中的一个点),我们假设在该点周围有一个(可能是无限的)区域 η \eta η,这个区域中的所有点具有相同的分类。

  我们定义了一个性质:一个网络决策是安全的,如果对于输入 x x x 和区域 η \eta η 来说,在 x x x 上应用操作集 Δ \Delta Δ中的操作不会导致 η \eta η 中类的改变。

  本文的框架可以保证,如果存在错误分类,就会发现错误分类。由于我们将验证简化为对敌对示例的搜索,我们可以实现安全验证(如果所有层都没发现错误分类)或伪造(在这种情况下,敌对示例可以用于微调网络或显示给测试人员)。

  我们使用Z3在一个名为DLV(深度学习验证)的工具中实现这些技术,并在最先进的网络上对它们进行评估,包括规范的和深度学习的网络。

预备知识

  神经网络第 k ( k ∈ { 0 , . . . , n } ) k(k\in \{0,...,n\}) k(k{0,...,n}) 层中输入点 x x x 的激活是对应激活函数的输出值,表示为 α x , k \alpha_{x,k} αx,k,其中 α x , 0 = x \alpha_{x,0}=x αx,0=x,而 α x , n \alpha_{x,n} αx,n表示对于输入x分配的类, α x , n = α y , n \alpha_{x,n}=\alpha_{y,n} αx,n=αy,n表示两个输入x和y具有相同的类。我们把 L k L_k Lk层中的感知器集合写作 P k P_k Pk,且 n k ≡ ∣ P k ∣ n_k\equiv|P_k| nkPk L k L_k Lk层中感知器的数量。对于感知器 p ∈ P k p\in P_k pPk α x , k ( p ) \alpha_{x,k}(p) αx,k(p)为其对于输入 x x x的激活值。

分类决策的安全性分析

安全性和鲁棒性

  假设数据点 x x x 周围存在一个区域 η \eta η ,使得该区域中的所有点都不能被人类区分,那么这个区域中的点都具有相同的真实类别。通过使用用户指定范数的半径 d d d 来识别这种区域,用于直观地测量与点 x x x 的接近度。

  神经网络 f ^ \hat{f} f^ 在点 x x x 处是不鲁棒的,如果在区域 η = { z ∈ D L 0   ∣   ∣ ∣ z − x ∣ ∣ ≤ d } \eta=\{z\in D_{L_0}\ |\ ||z-x||\le d\} η={zDL0  zxd}中存在点y,使得 f ^ ( x ) ≠ f ^ ( y ) \hat{f}(x)\ne \hat{f}(y) f^(x)=f^(y)

  一般安全性:设 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)表示神经网络 N N N L k L_k Lk层中的一个区域,该区域满足 α x , k ∈ η k ( α x , k ) \alpha_{x,k}\in \eta_k(\alpha_{x,k}) αx,kηk(αx,k)。我们说 N N N对于输入 x x x和区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)是安全的,如果对于区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)中所有激活 α y , k \alpha_{y,k} αy,k,都有 α y , n = α x , n \alpha_{y,n}=\alpha_{x,n} αy,n=αx,n

操作

  本文设计的框架中一个关键概念就是操作,操作直观地模拟图像扰动,例如坏的角度、划痕或天气条件。这里把操作表示为超矩形,该矩形由 L k L_k Lk层的两个激活 α x , k \alpha_{x,k} αx,k α y , k \alpha_{y,k} αy,k构成, r e c ( α x , k , α y , k ) = × p ∈ P k [ m i n ( α x , k ( p ) , α y , k ( p ) ) ,   m a x ( α x , k ( p ) , α y , k ( p ) ) ] rec(\alpha_{x,k},\alpha_{y,k})=\times_{p\in P_k}[min(\alpha_{x,k}(p),\alpha_{y,k}(p)),\ max(\alpha_{x,k}(p),\alpha_{y,k}(p))] rec(αx,k,αy,k)=×pPk[min(αx,k(p),αy,k(p)), max(αx,k(p),αy,k(p))],将其用 δ k \delta_k δk指代。

  图2展示了二维空间中有效操作的示例:每个箭头代表一个操作,每个虚线框代表相应操作的超矩形,激活 α x , k \alpha_{x,k} αx,k是来自虚线框的空间的内部点。
在这里插入图片描述
  同时引入最小操作的概念,如果应用最小操作,只需在端点,即 α x , k \alpha_{x,k} αx,k δ k ( α x , k ) \delta_k(\alpha_{x,k}) δk(αx,k)处检查错误分类就足够了。

  称一个在激活 α x , k \alpha_{x,k} αx,k上的操作 δ k \delta_k δk是最小的,如果不存在操作 δ k 1 \delta_k^1 δk1 δ k 2 \delta_k^2 δk2以及一个激活 α y , k \alpha_{y,k} αy,k,满足 δ k 1 ( α x , k ) ≤ δ k ( α x , k ) \delta^1_k(\alpha_{x,k})\le \delta_k(\alpha_{x,k}) δk1(αx,k)δk(αx,k) α y , k = δ k 1 ( α x , k ) \alpha_{y,k}=\delta^1_k(\alpha_{x,k}) αy,k=δk1(αx,k) δ k ( α x , k ) = δ k 2 ( α y , k ) \delta_k(\alpha_{x,k})=\delta^2_k(\alpha_{y,k}) δk(αx,k)=δk2(αy,k),且 α y , n ≠ α x , n \alpha_{y,n}\ne \alpha_{x,n} αy,n=αx,n α y , n ≠ δ k , n ( α x , k ) \alpha_{y,n}\ne \delta_{k,n}(\alpha_{x,k}) αy,n=δk,n(αx,k)

有界变化

  给定一个激活 α x , k \alpha_{x,k} αx,k及其相关区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k),定义一个"阶梯"为一组激活 l d ld ld,包括 α x , k \alpha_{x,k} αx,k和来自 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)的有限多个(也可能是0个)激活,阶梯中的激活可以被排成一个递增的顺序 α x , k = α x 0 , k < α x 1 , k < . . . < α x j , k \alpha_{x,k}=\alpha_{x_0,k}<\alpha_{x_1,k}<...<\alpha_{x_j,k} αx,k=αx0,k<αx1,k<...<αxj,k,每个 α x t , k ∈ l d \alpha_{x_t,k}\in ld αxt,kld都出现一次并且有一个后继 α x t + 1 , k \alpha_{x_{t+1},k} αxt+1,k,使得对于某些操作 δ k ∈ V ( α x t , k ) \delta_k\in V(\alpha_{x_t,k}) δkV(αxt,k)而言,有 α x t + 1 , k = δ k ( α x t , k ) \alpha_{x_{t+1},k}=\delta_k(\alpha_{x_t,k}) αxt+1,k=δk(αxt,k)。对于最大的激活 α x j , k \alpha_{x_j,k} αxj,k,它的后继应该在区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)之外,即 α x j + 1 , k ∉ η k ( α x , k ) \alpha_{x_{j+1},k}\notin \eta_k(\alpha_{x,k}) αxj+1,k/ηk(αx,k),图3中给出了阶梯的图解说明。
在这里插入图片描述
  设 L ( η k ( α x , k ) ) L(\eta_k(\alpha_{x,k})) L(ηk(αx,k))为区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)内的阶梯集合,那么该区域中对于 L ( η k ( α x , k ) ) L(\eta_k(\alpha_{x,k})) L(ηk(αx,k))的总变化为
在这里插入图片描述
  其中, d i f f n ( α x , n , α y , n ) diff_n(\alpha_{x,n},\alpha_{y,n}) diffn(αx,n,αy,n) α x , n = α y , n \alpha_{x,n}=\alpha_{y,n} αx,n=αy,n时值为0,其余情况值为1,我们称区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)是一个有界变化如果 V ( N ; η k ( α x , k ) ) < ∞ V(N;\eta_k(\alpha_{x,k}))<\infty V(N;ηk(αx,k))<,其中有一种特殊情况, V ( N ; η k ( α x , k ) ) = 0 V(N;\eta_k(\alpha_{x,k}))=0 V(N;ηk(αx,k))=0时,称该区域为0-变化。

  称一个 L ( η k ( α x , k ) ) L(\eta_k(\alpha_{x,k})) L(ηk(αx,k))完备的,如果对于任意包含 j + 1 j+1 j+1个激活的阶梯 l d ∈ L ( η k ( α x , k ) ) ld\in L(\eta_k(\alpha_{x,k})) ldL(ηk(αx,k)),其中的元素 l d ( t ) ld(t) ld(t) 0 ≤ t ≤ j 0\le t\le j 0tj,以及任意的操作 δ k ∈ V ( l d ( t ) ) \delta_k\in V(ld(t)) δkV(ld(t)),都存在一个阶梯 l d ′ ∈ L ( η k ( α x , k ) ) ld'\in L(\eta_k(\alpha_{x,k})) ldL(ηk(αx,k)),使得 l d ′ [ 0.. t ] = l d [ 0.. t ] ld'[0..t]=ld[0..t] ld[0..t]=ld[0..t] l d ′ ( t + 1 ) = δ k ( l d ( t ) ) ld'(t+1)=\delta_k(ld(t)) ld(t+1)=δk(ld(t))。直观地说,一个完备的阶梯是一个完备的树,在这个树上,每个节点代表一个激活,节点的每个分支对应一个有效的操作。

  此外,如果集合 L ( η k ( α x , k ) ) L(\eta_k(\alpha_{x,k})) L(ηk(αx,k))中所有激活的多面体可以覆盖区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k),则集合 L ( η k ( α x , k ) ) L(\eta_k(\alpha_{x,k})) L(ηk(αx,k))覆盖的,即
在这里插入图片描述
  综上所述,我们对一组操作的安全性有如下定义。直观来说,我们迭代地和不确定地应用操作来探索区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k),安全性意味着通过连续应用这样的操作没有观察到分类的改变。

  给定一个神经网络N,一个输入x,和一组操作集合 Δ k \Delta_k Δk,我们称N对于输入x,区域 η k \eta_k ηk以及操作集 Δ k \Delta_k Δk是安全的,如果区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)对于集合 L ( η k ( α x , k ) ) L(\eta_k(\alpha_{x,k})) L(ηk(αx,k))中的阶梯是0-变化,其中该集合是完备的和覆盖的。该安全性可写作 N , η k , Δ k ∣ = x N,\eta_k,\Delta_k|=x N,ηk,Δk=x

定理1:给定一个神经网络N,一个输入x,一个区域 η k \eta_k ηk,对于任意的操作集合 Δ k \Delta_k Δk,都有 N , η k ∣ = x   →   N , η k , Δ k ∣ = x N,\eta_k|=x\ \rightarrow\ N,\eta_k,\Delta_k|=x N,ηk=x  N,ηk,Δk=x

在相反的方向上,我们给出一个操作的极小性假设。

定理2:给定一个神经网络N,一个输入x,一个区域 η k \eta_k ηk,一组操作集合 Δ k \Delta_k Δk,如果 Δ k \Delta_k Δk中的操作是极小的,则有 N , η k , Δ k ∣ = x   →   N , η k ∣ = x N,\eta_k,\Delta_k|=x\ \rightarrow\ N,\eta_k|=x N,ηk,Δk=x  N,ηk=x

验证框架

  在这一节中,我们提出了一个新的框架,用于自动验证分类决策的安全性,该框架的基本思想是在给定区域内搜索对抗性错误分类。由于我们将验证简化为对敌对示例的搜索,我们可以实现安全验证(所有层都没有发现错误分类)或伪造(在这种情况下,敌对示例可以用于微调网络或显示给测试人员)。

逐层分析

  为了便于考虑传播逐层分析,除了激活函数 ϕ k : D L k − 1 → D L k \phi_k:D_{L_{k-1}}\rightarrow D_{L_k} ϕk:DLk1DLk之外,还需要一个相反方向的映射 ψ k : D L k → D L k − 1 \psi_k:D_{L_k}\rightarrow D_{L_{k-1}} ψk:DLkDLk1,以表示 L k L_k Lk层的操作激活如何影响 L k − 1 L_{k-1} Lk1层的激活,我们可以简单地将 ψ k \psi_k ψk看作是 ϕ k \phi_k ϕk的反函数。为了将点x处区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)的安全性传播到更深层,我们假设存在将激活映射到区域的函数 η k \eta_k ηk,并对函数 ϕ k \phi_k ϕk ψ k \psi_k ψk作以下限制:

定义6:将激活映射到区域的函数 { η 0 , η 1 , . . . , η n } \{\eta_0,\eta_1,...,\eta_n\} {η0,η1,...,ηn} { ψ 1 , . . . ψ n } \{\psi_1,...\psi_n\} {ψ1,...ψn}是这样的:

1. η k ( α x , k ) ⊆ D L k \eta_k(\alpha_{x,k})\subseteq D_{L_k} ηk(αx,k)DLk,其中 k = 0 , . . . , n , k=0,...,n, k=0,...,n,

2. α x , k ∈ η k ( α x , k ) \alpha_{x,k}\in \eta_k(\alpha_{x,k}) αx,kηk(αx,k),其中 k = 0 , . . . , n , k=0,...,n, k=0,...,n,并且

3. η k − 1 ( α i , k − 1 ) ⊆ ψ k ( η k ( α x , k ) ) \eta_{k-1}(\alpha_{i,k-1})\subseteq \psi_k(\eta_k(\alpha_{x,k})) ηk1(αi,k1)ψk(ηk(αx,k)),其中 k = 1 , . . . , n k=1,...,n k=1,...,n

  直观地说,前两个条件说明每个函数 η k \eta_k ηk给出围绕激活 α x , k \alpha_{x,k} αx,k的一个区域,最后一个条件说明,用函数 ψ k \psi_k ψk对于区域 η k \eta_k ηk计算的从层 L k L_k Lk到层 L k − 1 L_{k-1} Lk1的映射应该覆盖区域 η k − 1 \eta_{k-1} ηk1。目的是基于 η k \eta_k ηk和神经网络计算函数 η k + 1 , . . . , η n \eta_{k+1},...,\eta_n ηk+1,...,ηn
在这里插入图片描述
  由于神经网络的大规模和复杂性,确定一组操作集合 Δ k \Delta_k Δk是不是极小的是很困难的,因此定义一组操作间的细化关系。我们称 N , η k , Δ k ∣ = x N,\eta_k,\Delta_k|=x N,ηk,Δk=x N , η k − 1 , Δ k − 1 ∣ = x N,\eta_{k-1},\Delta_{k-1}|=x N,ηk1,Δk1=x的一个细化,如果集合 Δ k − 1 \Delta_{k-1} Δk1的所有操作 δ k − 1 \delta_{k-1} δk1都被集合 Δ k \Delta_k Δk中一系列操作 δ k \delta_k δk细化。这样即使我们不能从理论上确定 Δ k \Delta_k Δk的极小性,但可以保证操作是逐层细化的,我们可以从一个特定的层向内逐渐分析,直到找到一个对抗样本。

  细化的目的是找到一条可以证明 N , η 0 ∣ = x N,\eta_0|=x N,η0=x的链,我们现在定义了层与层之间操作的可细化性的概念。直观地说,如果 L k L_k Lk层中存在实现 L k − 1 L_{k-1} Lk1层中的操作的操作序列,那么 L k − 1 L_{k-1} Lk1层中的操作在 L k L_k Lk层中是可细化的。

定义7:一个操作 δ k − 1 ( α y , k − 1 ) \delta_{k-1}(\alpha_{y,k-1}) δk1(αy,k1)在层 L k L_k Lk是可细化的,如果存在激活 α x 0 , k , . . . , α x j , k ∈ D L k \alpha_{x_0,k},...,\alpha_{x_j,k}\in D_{L_k} αx0,k,...,αxj,kDLk,有效操作 δ k 1 ∈ V ( α x 0 , k ) , . . . , δ k j ∈ V ( α x j − 1 , k ) \delta_k^1\in V(\alpha_{x_0,k}),...,\delta_k^j\in V(\alpha_{x_{j-1},k}) δk1V(αx0,k),...,δkjV(αxj1,k),使得 α y , k = α x 0 , k , δ k − 1 , k ( α y , k − 1 ) = α x j , k \alpha_{y,k}=\alpha_{x_0,k},\delta_{k-1,k}(\alpha_{y,k-1})=\alpha_{x_j,k} αy,k=αx0,k,δk1,k(αy,k1)=αxj,k,且 α x t , k = δ k t ( α x t − 1 , k ) \alpha_{x_t,k}=\delta_k^t(\alpha_{x_{t-1},k}) αxt,k=δkt(αxt1,k),其中 1 ≤ t ≤ j 1\le t\le j 1tj。给定一个神经网络N和一个输入x,如果对于所有的 α y , k − 1 ∈ η k − 1 ( α z , k − 1 ) \alpha_{y,k-1}\in \eta_{k-1}(\alpha_{z,k-1}) αy,k1ηk1(αz,k1),其所有有效操作 δ k − 1 ( α y , k − 1 ) \delta_{k-1}(\alpha_{y,k-1}) δk1(αy,k1)都可以在 L k L_k Lk层进行细化,则称操作集 Δ k \Delta_k Δk是对于 η k − 1 , Δ k − 1 \eta_{k-1},\Delta_{k-1} ηk1,Δk1 η k \eta_k ηk的细化。
在这里插入图片描述
定理3:给定一个神经网络N,一个输入x。对于所有 k ≥ 1 k\ge1 k1的层,如果操作集 Δ k \Delta_k Δk η k − 1 , Δ k − 1 \eta_{k-1},\Delta_{k-1} ηk1,Δk1以及 η k \eta_k ηk的细化,那我们就有 N , η k , Δ k ∣ = x   →   N , η k − 1 , Δ k − 1 ∣ = x N,\eta_k,\Delta_k|=x\ \rightarrow\ N,\eta_{k-1},\Delta_{k-1}|=x N,ηk,Δk=x  N,ηk1,Δk1=x

验证方法

  验证方法可以总结为基于搜索的递归验证程序,如下算法1所示。该方法由给定点周围的区域 η k \eta_k ηk和一系列操作集 Δ k \Delta_k Δk参数化。操作由用户根据自己的分类问题指定,也可以自动选择。本文用SMT求解器实现算法1。
在这里插入图片描述

特征分解和发现

  虽然定理1和定理2提供了一种有限的方法来验证神经网络分类决策的安全性,但是区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)的高维性使得任何计算方法都较难实践。因此,我们使用特征的概念将区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)划分为一组特征,并利用它们的独立性和低维性。

  一个特征为高维空间 D L k D_{L_k} DLk中的每个点定义了它最明显的显著特征,例如下图街道标志的红色框架。形式上,对于每个层 L k L_k Lk,特征函数 f k : D L k → P ( D L k ) f_k:D_{L_k}\rightarrow P(D_{L_k}) fk:DLkP(DLk)为空间 D L k D_{L_k} DLk中的每个激活 α x , k \alpha_{x,k} αx,k分配一个小区域,其中 P ( D L k ) P(D_{L_k}) P(DLk) D L k D_{L_k} DLk的子空间集。
在这里插入图片描述
  每个特征 f k ( α y , k ) f_k(\alpha_{y,k}) fk(αy,k)由预先指定的数字 d i m s k , f dims_{k,f} dimsk,f来标识,设 d i m s k ( f k ( α y , k ) ) dims_k(f_k(\alpha_{y,k})) dimsk(fk(αy,k))为根据某种启发式选择的维数集。那我们就有了
在这里插入图片描述
  此外,我们需要一组特征来划分区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)

定义8:如果 d i m s k , f ( f i ) ∩ d i m s k , f ( f j ) = ∅ dims_{k,f}(f_i)\cap dims_{k,f}(f_j)=\empty dimsk,f(fi)dimsk,f(fj)=,一组区域 f 1 , . . . f m {f_1,...f_m} f1,...fm η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)的划分,写作 π ( η k ( α x , k ) ) \pi(\eta_k(\alpha_{x,k})) π(ηk(αx,k))。给定一个划分 π ( η k ( α x , k ) ) \pi(\eta_k(\alpha_{x,k})) π(ηk(αx,k)),定义一个函数 a c t s ( x , k ) = { α y , k ∈ x   ∣   x ∈ π ( η k ( α x , k ) ) } acts(x,k)=\{\alpha_{y,k}\in x\ |\ x\in\pi(\eta_k(\alpha_{x,k}))\} acts(x,k)={αy,kx  xπ(ηk(αx,k))},每个特征包含一个点,然后我们把区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)的0-变化检查问题转换为:

(1)检查 a c t s ( x , k ) acts(x,k) acts(x,k)中的点是否与 α x , k \alpha_{x,k} αx,k具有相同的类别;

(2)检查 π ( η k ( α x , k ) ) \pi(\eta_k(\alpha_{x,k})) π(ηk(αx,k))中所有特征的0-变化。

区域和操作的选择

根据区域 η k − 1 \eta_{k-1} ηk1确定区域 η k \eta_k ηk

根据区域 η k ( α x , k ) , η k − 1 ( α x , k − 1 ) \eta_k(\alpha_{x,k}),\eta_{k-1}(\alpha_{x,k-1}) ηk(αx,k),ηk1(αx,k1)和操作集 Δ k − 1 \Delta_{k-1} Δk1确定操作集 Δ k \Delta_k Δk

映射回输入层

  当操作隐藏层时,我们可能需要将层k中的激活映射回输入层,以获得导致错误分类的输入图像。为了检查区域 η k ( α x , k ) \eta_k(\alpha_{x,k}) ηk(αx,k)的0-变化,需要计算该区域中多个点 α y , k \alpha_{y,k} αy,k d i f f n ( α x , n , α y , n ) diff_n(\alpha_{x,n},\alpha_{y,n}) diffn(αx,n,αy,n)。因为 α x , n \alpha_{x,n} αx,n已知,只需要计算 α y , n \alpha_{y,n} αy,n。我们可以通过找到一个点 α y , 0 ∈ P r e 0 ( α y , k ) \alpha_{y,0}\in Pre_0(\alpha_{y,k}) αy,0Pre0(αy,k),然后使用神经网络预测值 α y , n \alpha_{y,n} αy,n。虽然 P r e 0 ( α y , k ) Pre_0(\alpha_{y,k}) Pre0(αy,k)可能包含多个点,但所有点都具有相同的类,因此 P r e 0 ( α y , k ) Pre_0(\alpha_{y,k}) Pre0(αy,k)中的任何点都可以满足我们的目的。

  为了从 α y , k \alpha_{y,k} αy,k计算出 α y , 0 \alpha_{y,0} αy,0,我们使用函数 ψ k , ψ k − 1 , . . . , ψ 1 \psi_k,\psi_{k-1},...,\psi_1 ψk,ψk1,...,ψ1并计算点 α y , k − 1 , α y , k − 2 , . . . , α y , 0 \alpha_{y,k-1},\alpha_{y,k-2},...,\alpha_{y,0} αy,k1,αy,k2,...,αy,0使得 α y , j − 1 = ψ j ( α y , j ) ∧ α y , j − 1 ∈ η j − 1 ( α x , j − 1 ) \alpha_{y,j-1}=\psi_j(\alpha_{y,j})\wedge\alpha_{y,j-1}\in\eta_{j-1}(\alpha_{x,j-1}) αy,j1=ψj(αy,j)αy,j1ηj1(αx,j1),整个计算过程也依赖于SMT求解器。

实验结果

  所提出的框架已经实现为一个用Python编写的名为DLV(Deep Learning Verification)的软件工具,使用的SMT求解器是Z3,它有Python的API,神经网络是从一个广泛使用的神经网络库Keras构建的。在一些为了图像分类而训练的神经网络上验证了DLV。

二维点分类网络:该网络被训练用于对图6和图7中以红色显示的二维曲线上方和下方的点进行分类。对于给定的输入x = (3.59,1.11),我们从输入层开始,通过在两个方向上采取单位步长来定义围绕该点的区域:
η 0 ( α x , 0 ) = [ 3.59 − 1.0 , 3.59 + 1.0 ] × [ 1.11 − 1.0 , 1.11 + 1.0 ] = [ 2.59 , 4.59 ] × [ 0.11 , 2.11 ] \eta_0(\alpha_{x,0})=[3.59-1.0,3.59+1.0]\times[1.11-1.0,1.11+1.0]=[2.59,4.59]\times[0.11,2.11] η0(αx,0)=[3.591.0,3.59+1.0]×[1.111.0,1.11+1.0]=[2.59,4.59]×[0.11,2.11]
操作集 Δ 0 \Delta_0 Δ0如图6所示,除了中心点外的8个点,都是应用操作集中的一个操作产生的激活。考虑层k=1,工具从 L 1 L_1 L1层中选择具有索引17和19的两个维度 p 1 , 17 , p 1 , 19 ∈ P 1 p_{1,17},p_{1,19}\in P_1 p1,17,p1,19P1,并计算:
η 1 ( α x , 1 ) = [ α x , 1 ( p 1 , 17 ) − 3.6 , α x , 1 ( p 1 , 17 ) + 3.6 ] × [ α x , 1 ( p 1 , 19 ) − 3.52 , α x , 1 ( p 1 , 19 ) + 3.52 ] \eta_1(\alpha_{x,1})=[\alpha_{x,1}(p_{1,17})-3.6,\alpha_{x,1}(p_{1,17})+3.6]\times[\alpha_{x,1}(p_{1,19})-3.52,\alpha_{x,1}(p_{1,19})+3.52] η1(αx,1)=[αx,1(p1,17)3.6,αx,1(p1,17)+3.6]×[αx,1(p1,19)3.52,αx,1(p1,19)+3.52]
操作集 Δ 1 \Delta_1 Δ1,通过函数 ψ 1 \psi_1 ψ1映射回输入层之后,如图7所示。 Δ 1 \Delta_1 Δ1 η 0 , Δ 0 , η 1 \eta_0,\Delta_0,\eta_1 η0,Δ0η1的细化结果。
在这里插入图片描述
在这里插入图片描述
MNIST手写图像数据集的图像分类网络:L1层有21632个维度,操作集 Δ 1 \Delta_1 Δ1可以通过将每个维度的值增加或减少1,来改变150个维度的子集的激活值的操作。实验结果表明,对于大多数例子,通过比较已经改变的像素数量,我们可以在层L1中发现100维变化内的类变化,并且其中一些可以具有小于30维的变化。
在这里插入图片描述
在这里插入图片描述
图像网数据集的图像分类网络:训练后的网络有138,357,544个实值参数,包括卷积层、ReLU层、零填充层、丢失层等等。实验参数和前面两个实验一样,只是我们用的是20000维。左边的图像被报告为第二层不安全,有6346个维度变化(L2层的3,211,264个维度的0.2%)。右边的这个图像对于L2层的20000维变化是安全的。
在这里插入图片描述

比较

我们将我们的方法与现有的两种寻找对抗样本的方法进行了比较,即快速梯度符号法(FGSM)和雅可比显著图(JSMA)算法。
在这里插入图片描述
表1给出了三种方法在MNIST数据集上的稳健性评价的比较,表中共有三个统计数据,即对抗样本的平均L1距离、平均L2距离和发现对抗样本的成功率。
在这里插入图片描述

总结

  本文提出了一种用于检查深层神经网络安全性的自动验证框架,该框架基于对数据点周围区域的系统探索,以发现给定类型的潜在风险,并将分析推广到更深层。我们在几个最先进的神经网络分类器上对其进行了验证,在某些情况下,当使用较少的维度时,在几秒钟内发现了敌对的例子,但是验证过程本身在特征数量上是指数级的,并且对于较大的图像具有令人望而却步的复杂性。通过并行化,我们的方法的性能和可扩展性可以得到显著提高。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值